Скачать презентацию The Re-engineering and Reuse of Software Patrick A Скачать презентацию The Re-engineering and Reuse of Software Patrick A

05c457e6a1b027101c037f13b1b9eab2.ppt

  • Количество слайдов: 22

The Re-engineering and Reuse of Software Patrick A. V. Hall and Lingzi Jin Vol The Re-engineering and Reuse of Software Patrick A. V. Hall and Lingzi Jin Vol 1, p. 335 -351 Presented by: Andrew Wheeler

Overview n Definitions n Introduction n Historical Background n Implementations n Challenges n Conclusions Overview n Definitions n Introduction n Historical Background n Implementations n Challenges n Conclusions

Definitions n Re-engineering – The combination of reverse engineering and forward engineering – The Definitions n Re-engineering – The combination of reverse engineering and forward engineering – The concept of “redoing” a software system n Reuse – Using a given piece of software to solve more than one problem n Reverse engineering – – The tools and methods used to understand software Figuring out a software system for potential redeployment

Introduction n Software re-engineering and reuse are concerned with maximizing software usage for any Introduction n Software re-engineering and reuse are concerned with maximizing software usage for any given development effort – Both are used to maximize profit and minimize turnaround time n Software re-engineering and reuse also help minimize staff – The more code you can reuse the less code you have to write and rewrite

Introduction (cont) n Reuse not only applies to using a piece of software: – Introduction (cont) n Reuse not only applies to using a piece of software: – Reuse designs and ideas thrown out during design phase – May have use in other applications n Reverse engineering and reuse can help recover lost investment – Time has already been placed into designing it the first time around.

Historical Background - Reuse n Reuse dates back to sharing of algorithms through publications Historical Background - Reuse n Reuse dates back to sharing of algorithms through publications – Reuse of high level language and packages – Textbook publications n Use of macros and similar assembly instructions – Subroutine entry and exit – For loops, if blocks, arithmetic

Historical Background – Reuse (cont) n Reuse associated with flexibility – Parameterization – Build Historical Background – Reuse (cont) n Reuse associated with flexibility – Parameterization – Build scripts

Historical Background - Re-engineering n Flow-charting awhile tools have been around for – Now Historical Background - Re-engineering n Flow-charting awhile tools have been around for – Now evolved into UML and sequence diagrams n Cross reference listings of variables – Helps understand large pieces of software n Originally designed to help maintain COBOL legacy systems around 1980 s

Implementations – Reuse n Integration into lifecycle – Building phase to construct the reusable Implementations – Reuse n Integration into lifecycle – Building phase to construct the reusable components into a library – Incorporating those reusable components into the building of a software system § Time required to account for integration issues

Implementations – Reuse Component based n Central to reuse n Design for “plug and Implementations – Reuse Component based n Central to reuse n Design for “plug and play” n Which components comes from domain analysis – File Input/Output component not needed for a system that won’t write to disk

Implementations – Reuse Component based n Give clear descriptions and classifications n Avoid over Implementations – Reuse Component based n Give clear descriptions and classifications n Avoid over generalization – Map instead of tree n Object oriented programming lends itself to reuse – Objects are often in reusable component form – Inheritance provides contexts for reuse § Sorted Map inherits from Map n Size or granularity

Implementations – Reuse n Reuse in design – Component or components could fulfill a Implementations – Reuse n Reuse in design – Component or components could fulfill a requirement based on specifications – If multiple components are used then requirements must be broken down further § Logging utility = Time utility + Format utility + File utility + Process input utility – Identification, evaluation, modification, and integration n White-box reuse n Frameworks – Reuse with simple modifications of code

Implementations – Reuse n MIL – Module Interconnection Languages – Prieto-Diaz, et. al (1986) Implementations – Reuse n MIL – Module Interconnection Languages – Prieto-Diaz, et. al (1986) – Going beyond procedure calls in code – Helps in system building another higher language n Design with reuse involves transforming the outputs of one components to the inputs of another

Implementations – Re-engineering n Reverse engineering involves abstracting the current system and revealing the Implementations – Re-engineering n Reverse engineering involves abstracting the current system and revealing the nature of the system – Describe the system to a non technical person n Documentation of class methods and members could be used during the process – Outlining tools and sequence diagrams have been in use for many decades

Implementations – Re-engineering n Use of formal transformations – Gather details about an efficient Implementations – Re-engineering n Use of formal transformations – Gather details about an efficient algorithm that may be difficult to understand n Use of wide spectrum language - Ward – An interactive system to abstract details of implementation into Z language and implement Z language in code language of choice

Implementations – Re-engineering n Use of reverse engineering back to specifications – Lano, et. Implementations – Re-engineering n Use of reverse engineering back to specifications – Lano, et. al – Used to reverse engineer COBOL applications n Using good coding practices helps the reengineering process – Self documenting code n Knowledge of higher level domain concepts helps re-engineering – Knowing for what purpose the software system was used

Implementations – Re-engineering n Using design patterns in code – Helps to know the Implementations – Re-engineering n Using design patterns in code – Helps to know the purpose for a software system and helps the forward process by knowing how to build the system n Object-oriented programming facilitates the reverse-engineering process – Components of the high level systems share the names of the objects

Implementations – Domain Analysis Identify the major concepts and the relationships between the concepts Implementations – Domain Analysis Identify the major concepts and the relationships between the concepts n Usage of components is determined by the domain in which they will be used n Determine if components needed have already been built n Helps guide the production of components for better reuse n – Adequate domain models help scope the components and their usage

Challenges of Re-engineering and Reuse n Personnel issues – “Why buy when you can Challenges of Re-engineering and Reuse n Personnel issues – “Why buy when you can build? ” § Reuse doesn’t always mean buying – Contrast to electronic engineering § Build your own microprocessor? n Payoff issues – Rewarding someone for building a reusable component by royalties?

Challenges of Re-engineering and Reuse n Economical issues – Payoff occurs after component production Challenges of Re-engineering and Reuse n Economical issues – Payoff occurs after component production – Most companies are geared towards producing a system § Gain another contract and reduce turnaround time from reuse – Accounting treats software as consumable and not capital § Concept of making software reusable capital like a desk

Challenges of Re-engineering and Reuse n Legal issues – Protection against physical piracy and Challenges of Re-engineering and Reuse n Legal issues – Protection against physical piracy and intellectual piracy – Use of proprietary software remedies certain issues

Conclusions n Software reuse, re-engineering, and reverse engineering are cutting-edge methodologies – Product Line Conclusions n Software reuse, re-engineering, and reverse engineering are cutting-edge methodologies – Product Line and Battle Command Product Line n Technology has caught up to these practices – UML n There is a future in adding reuse to the software lifecycle – Economic gains must be established