object-Oriented Software Engineering Practical Software development using uml and Java Chapter 3 Basing software development on Reusable Technology www.oseng.com
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology
3.1 Building on the Experience of others Software engineers should avoid re-developing software already developed Types of reuse Reuse of expertise Reuse of standard designs and algorithms Reuse of libraries of classes or procedures Reuse of powerful commands built into languages and operating systems Reuse of frameworks Reuse of complete applications www.oseng.com O Lethbridge/Laganiere 2001 Chap 3: Basing Development on Reusable
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 2 3.1 Building on the Experience of Others Software engineers should avoid re-developing software already developed Types of reuse: • Reuse of expertise • Reuse of standard designs and algorithms • Reuse of libraries of classes or procedures • Reuse of powerful commands built into languages and operating systems • Reuse of frameworks • Reuse of complete applications
3.2 Reusability and Reuse in SE R euse an nd design for reusability should be part of the culture of software development organizations But there are problems to overcome Why take the extra time needed to develop something that will benefit other projects/customers? Management may only reward the efforts of people who create the visible final products Reusable software are often created in a hurry and without enough attention to quality www.oseng.com O Lethbridge/Laganiere 2001 Chap 3: Basing Development on Reusable
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 3 3.2 Reusability and Reuse in SE Reuse and design for reusability should be part of the culture of software development organizations But there are problems to overcome: • Why take the extra time needed to develop something that will benefit other projects/customers? • Management may only reward the efforts of people who create the visible ‘final products’. • Reusable software are often created in a hurry and without enough attention to quality
A vicious cycle Developers tend not develop high quality reusable components, so there is often little to reuse To solve the problem, recognize that: This vicious cycle costs money Investment in reusable code is important Attention to quality of reusable components is essential -So that potential reusers have confidence in them The quality of a software product is only as good as its lowest-quality reusable component Developing reusable components can often simplify de lesign www.oseng.com O Lethbridge/Laganiere 2001 Chap 3: Basing Development on Reusable 4
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 4 A vicious cycle Developers tend not develop high quality reusable components, so there is often little to reuse To solve the problem, recognize that: • This vicious cycle costs money • Investment in reusable code is important • Attention to quality of reusable components is essential —So that potential reusers have confidence in them —The quality of a software product is only as good as its lowest-quality reusable component • Developing reusable components can often simplify design
3.3 Frameworks: Reusable Subsystems A framework is reusable software that implements a generic solution to a generalized problem It provides common facilities applicable to different application programs Principle: Applications that do different, but related, things tend to have quite similar designs www.oseng.com O Lethbridge/Laganiere 2001 Chap 3: Basing Development on Reusable
© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 5 3.3 Frameworks: Reusable Subsystems A framework is reusable software that implements a generic solution to a generalized problem. • It provides common facilities applicable to different application programs. Principle: Applications that do different, but related, things tend to have quite similar designs