Lectures Software Engineering - Chapter 28: Software re-engineering

ppt 36 trang hoanguyen 3750
Bạn đang xem 20 trang mẫu của tài liệu "Lectures Software Engineering - Chapter 28: Software re-engineering", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptlectures_software_engineering_chapter_28_software_re_enginee.ppt

Nội dung text: Lectures Software Engineering - Chapter 28: Software re-engineering

  1. Software re-engineering l Reorganising and modifying existing software systems to make them more maintainable ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 1
  2. Objectives l To explain why software re-engineering is a cost- effective option for system evolution l To describe the activities involved in the software re-engineering process l To distinguish between software and data re- engineering and to explain the problems of data re -engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 2
  3. Topics covered l Source code translation l Reverse engineering l Program structure improvement l Program modularisation l Data re-engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 3
  4. System re-engineering l Re-structuring or re-writing part or all of a legacy system without changing its functionality l Applicable where some but not all sub-systems of a larger system require frequent maintenance l Re-engineering involves adding effort to make them easier to maintain. The system may be re- structured and re-documented ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 4
  5. When to re-engineer l When system changes are mostly confined to part of the system then re-engineer that part l When hardware or software support becomes obsolete l When tools to support re-structuring are available ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 5
  6. Re-engineering advantages l Reduced risk • There is a high risk in new software development. There may be development problems, staffing problems and specification problems l Reduced cost • The cost of re-engineering is often significantly less than the costs of developing new software ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 6
  7. Business process re-engineering l Concerned with re-designing business processes to make them more responsive and more efficient l Often reliant on the introduction of new computer systems to support the revised processes l May force software re-engineering as the legacy systems are designed to support existing processes ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 7
  8. Forward engineering and re-engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 8
  9. The re-engineering process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 9
  10. Re-engineering cost factors l The quality of the software to be re-engineered l The tool support available for re-engineering l The extent of the data conversion which is required l The availability of expert staff for re-engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 10
  11. Re-engineering approaches ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 11
  12. Source code translation l Involves converting the code from one language (or language version) to another e.g. FORTRAN to C l May be necessary because of: • Hardware platform update • Staff skill shortages • Organisational policy changes l Only realistic if an automatic translator is available ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 12
  13. The program translation process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 13
  14. Reverse engineering l Analysing software with a view to understanding its design and specification l May be part of a re-engineering process but may also be used to re-specify a system for re- implementation l Builds a program data base and generates information from this l Program understanding tools (browsers, cross- reference generators, etc.) may be used in this process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 14
  15. The reverse engineering process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 15
  16. Reverse engineering l Reverse engineering often precedes re- engineering but is sometimes worthwhile in its own right • The design and specification of a system may be reverse engineered so that they can be an input to the requirements specification process for the system’s replacement • The design and specification may be reverse engineered to support program maintenance ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 16
  17. Program structure improvement l Maintenance tends to corrupt the structure of a program. It becomes harder and harder to understand l The program may be automatically restructured to remove unconditional branches l Conditions may be simplified to make them more readable ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 17
  18. Spaghetti logic ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 18
  19. Structured control logic ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 19
  20. Condition simplification Complex condition if not (A > B and (C F) ) ) Simplified condition if (A = D or E > F) ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 20
  21. Automatic program restructuring ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 21
  22. Restructuring problems l Problems with re-structuring are: • Loss of comments • Loss of documentation • Heavy computational demands l Restructuring doesn’t help with poor modularisation where related components are dispersed throughout the code l The understandability of data-driven programs may not be improved by re-structuring ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 22
  23. Program modularisation l The process of re-organising a program so that related program parts are collected together in a single module l Usually a manual process that is carried out by program inspection and re-organisation ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 23
  24. Module types l Data abstractions • Abstract data types where datastructures and associated operations are grouped l Hardware modules • All functions required to interface with a hardware unit l Functional modules • Modules containing functions that carry out closely related tasks l Process support modules • Modules where the functions support a business process or process fragment ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 24
  25. Recovering data abstractions l Many legacy systems use shared tables and global data to save memory space l Causes problems because changes have a wide impact in the system l Shared global data may be converted to objects or ADTs • Analyse common data areas to identify logical abstractions • Create an ADT or object for these abstractions • Use a browser to find all data references and replace with reference to the data abstraction ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 25
  26. Data abstraction recovery l Analyse common data areas to identify logical abstractions l Create an abstract data type or object class for each of these abstractions l Provide functions to access and update each field of the data abstraction l Use a program browser to find calls to these data abstractions and replace these with the new defined functions ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 26
  27. Data re-engineering l Involves analysing and reorganising the data structures (and sometimes the data values) in a program l May be part of the process of migrating from a file-based system to a DBMS-based system or changing from one DBMS to another l Objective is to create a managed data environment ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 27
  28. Approaches to data re-engineering ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 28
  29. Data problems l End-users want data on their desktop machines rather than in a file system. They need to be able to download this data from a DBMS l Systems may have to process much more data than was originally intended by their designers l Redundant data may be stored in different formats in different places in the system ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 29
  30. Data migration
  31. Data problems l Data naming problems • Names may be hard to understand. The same data may have different names in different programs l Field length problems • The same item may be assigned different lengths in different programs l Record organisation problems • Records representing the same entity may be organised differently in different programs l Hard-coded literals l No data dictionary ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 31
  32. Data value inconsistencies ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 32
  33. Data conversion l Data re-engineering may involve changing the data structure organisation without changing the data values l Data value conversion is very expensive. Special- purpose programs have to be written to carry out the conversion ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 33
  34. The data re-engineering process ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 34
  35. Key points l The objective of re-engineering is to improve the system structure to make it easier to understand and maintain l The re-engineering process involves source code translation, reverse engineering, program structure improvement, program modularisation and data re-engineering l Source code translation is the automatic conversion of of program in one language to another ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 35
  36. Key points l Reverse engineering is the process of deriving the system design and specification from its source code l Program structure improvement replaces unstructured control constructs with while loops and simple conditionals l Program modularisation involves reorganisation to group related items l Data re-engineering may be necessary because of inconsistent data management ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28 Slide 36