Contents i UNIT - I UNIT - II UNIT - III CHAPTER - 1 [SOFTWARE REUSE SUCCESS FACTORS] Software Reuse Success Factors. CHAPTER - 2 [REUSE-DRIVEN SOFTWARE ENGINEERING IS A BUSINESS] Reuse Driven Software Engineering is a Business CHAPTER - 3 [OBJECT-ORIENTED SOFTWARE ENGINEERING] Object Oriented Software Engineering. CHAPTER - 4 [APPLICA APPLICATIONS AND COMPONENT SYSTEMS] Applications and Component Subsystems. CHAPTER - 5 [USE CASE COMPONENTS] Use Case Components. CHAPTER - 6 [OBJECT COMPONENTS] Use Case Components. CHAPTER - 7 [DESIGN PATTERNS Introduction. SYLLABUS CHAPTER - 8 [CREA CREATIONAL PATTERNS Factory Method, Abstract Factory, Singleton, Builder, Prototype. CHAPTER - 9 [STRUCTURAL PATTERNS Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy. CHAPTER - 10 [BEHA BEHAVIOURAL PATTERNS Chain of Responsibility, Command, Interpreter.
ii Contents UNIT - IV CHAPTER - 11 [BEHA BEHAVIOURAL PATTERNS TTERNS-I -I] Iterator, Mediator, Memento, Observer, State, Strategy, Template, Visitor. CHAPTER - 12 [OTHER DESIGN PATTERNS Whole-Part, Master-Slave, View Handler, Forward-Receiver, Client Dispatcher-Server, Publisher-Subscriber. UNIT - V CHAPTER - 13 [ARCHITECTURAL PATTERNS Layers, Pipes and Filters, Black Board, Broker, Model-View Controller, Presentation - Abstraction - Control, Micro Kernel, Reflection.
Contents SOFTWARE REUSE TECHNIQUES iii CONTENTS UNIT - I [CH. H. - 1] ] [SOFTWARE REUSE SUCCESS FACTORS]... 1.1-1.22 1.1 INTRODUCTION... 1.1 1.2 SOFTWARE REUSE IN A SIMPLE IDEA... 1.2 1.3 COMPONENTS ARE FUELING A REVOLUTION IN APPLICATION DEVELOPMENT... 1.3 1.4 A SYSTEMATIC APPROACH MAKES PRAGMATIC REUSE WORK... 1.4 1.5 ERICSSON AND HEWLETT-PACKARD REUSE EXPERIENCE REVEALS COMMON PRINCIPLES... 1.5 1.6 REUSE REQUIRE CHANGES IN PROCESS... 1.11 1.6.1 Domain Engineering... 1.13 1.6.2 Application System Engineering... 1.14 1.7 REUSE REQUIRES CHANGES IN ORGANISATION... 1.15 1.8 ADOPT REUSE SYSTEMATICALLY AND INCREMENTALLY... 1.16 1.9 INPUT FROM OTHER REUSE PROGRAM... 1.19 1.10 IT TAKES A SET OF PRINCIPLES... 1.21 UNIT - I [CH. - 2] ] [REUSE-DRIVEN SOFTWARE ENGINEERING IS A BUSINESS]... 1.23-1.38 2.1 INTRODUCTION... 1.23 2.2 IT IS A BUSINESS FOR YOU?... 1.24 2.3 MAKE SURE COST-EFFECTIVE... 1.25 2.4 A REUSE BUSINESS HAS BUSINESS CHARACTERISTICS... 1.26 2.4.1 Reuse-Driven Characteristics... 1.28 2.4.2 Applied Engineering Discipline... 1.28 2.5 ARCHITECT COMPONENTS AND APPLICATIONS... 1.28 2.5.1 Components and Component Systems... 1.31 2.5.2 Layered Architecture... 1.31
iv Contents 2.6 SOFTWARE ENGINEERING PROCESSES... 1.32 2.6.1 People and Processes Interact... 1.33 2.6.2 Application Family Engineering... 1.34 2.6.3 Application System Engineering... 1.34 2.6.4 Component System Engineering... 1.35 2.7 ESTABLISHING AND MANAGING A REUSE BUSINESS... 1.36 2.7.1 Improving Internal Processes... 1.37 2.7.2 Embedded Software... 1.37 2.7.3 Software House... 1.38 2.7.4 Software Product Vendor... 1.38 UNIT - I [CH.. - 3] ] [OBJECT OBJECT-ORIENTED ORIENTED SOFTWARE ENGINEERING]... 1.39-1.52 3.1 INTRODUCTION... 1.39 3.2 SOFTWARE ENGINEERING TRANSFORMS REQUIREMENTS INTO CODE.. 1.40 3.3 SOFTWARE ENGINEERING IS A TEAM PROCESS... 1.40 3.4 SOFTWARE ENGINEERING IS SYSTEMATIC MODEL BUILDING... 1.41 3.4.1 The Incremental, Iterative Software Engineering Life Cycle... 1.43 3.5 OBJECTS UNIFY THE MODELING PROCESS... 1.43 3.5.1 Objects Contain both Behaviour and Data... 1.44 3.5.2 Stereotypes Define Different Kinds of Types, Classes other and Elements... 1.44 3.5.3 Relationship Among Objects... 1.45 3.5.4 Packages and Subsystems Group Classes, Types and Elements... 1.45 3.6 THE USECASE MODEL CAPTURES SYSTEM REQUIREMENTS... 1.46 3.6.1 Actor Model Roles... 1.47 3.6.2 Usecases and System Transactions... 1.47 3.6.3 Usecase Generalization... 1.48
Contents v 3.7 THE ANALYSIS MODEL SHAPES SYSTEM ARCHITECTURE... 1.49 3.7.1 Different Analysis Stereotypes Capture Standard System Structure... 1.49 3.7.2 Diagrams Show Relationships Between Analysis Types... 1.50 3.8 THE DESIGN MODEL DEFINES THE IMPLEMENTATION... 1.50 3.9 THE IMPLEMENTATION MODEL IS THE CODE... 1.52 3.10 The test model validates the system... 1.52 UNIT - I [CH. H. - 4] ] [APPLICATIONS AND COMPONENT SYSTEMS]... 1.53-1.68 4.1 APPLICATION DEVELOPERS CAN REUSE OOSE MODEL COMPONENTS... 1.53 4.2 APPLICATION FAMILIES ALLOW SIGNIFICANT REUSE... 1.55 4.3 APPLICATION SYSTEMS ARE BUILT FROM REUSABLE COMPONENTS... 1.55 4.4 GROUP COMPONENTS INTO COMPONENT SYSTEMS... 1.55 4.5 FACADES CONTROL ACCESS TO COMPONENT SYSTEM INTERNALS... 1.56 4.6 FACADES AND COMPONENT SYSTEMS ARE SPECIAL KINDS OF PACKAGES... 1.57 4.7 COMPONENT SYSTEMS EXPORT COMPONENTS VIA FACADES... 1.58 4.8 SPECIALIZE SOME COMPONENTS BEFORE REUSE... 1.59 4.9 VARIABILITY OCCURS AT VARIATION POINTS... 1.60 4.10 USE SEVERAL KINDS OF VARIABILITY MECHANISMS... 1.62 4.10.1 Using Inheritance... 1.63 4.10.2 Using Extensions... 1.63 4.10.3 Using Parameterization, Templates and Macrons... 1.65 4.11 REUSE VARIABLE COMPONENTS TO BUILD APPLICATION SYSTEMS... 1.66 4.12 PACKAGE AND DOCUMENT COMPONENT SYSTEMS FOR REUSE... 1.67
vi Contents UNIT - I [CH. H. - 5] ] [USE CASE COMPONENTS]... 1.69-1.78 5.1 STRUCTURE THE USE CASE MODEL TO ENSURE COMPONENT REUSE... 1.69 5.2 THE USE CASE MODEL SHAPES THE REST OF THE SYSTEM... 1.70 5.3 REUSING COMPONENTS TO BUILD THE USE CASE MODEL... 1.71 5.4 DESIGN THE USE CASE COMPONENTS FOR EFFECTIVE REUSE... 1.72 5.5 NOT ALL USE CASES SHOULD BE REUSABLE COMPONENTS... 1.73 5.6 REUSING CONCRETE (OR) ABSTRACT ACTOR AND USE CASE COMPONENTS... 1.74 5.7 EXPRESSING USE CASE VARIABILITY... 1.75 5.7.1 Using Use Case Parameter and Templates... 1.76 5.7.2 Using Use Case Inheritance... 1.77 5.7.3 Using Use Case Extensions... 1.77 5.7.4 Choosing Between Users and Extends for Variability... 1.77 5.8 PACKGING AND DOCUMENTING USE CASE COMPONENTS... 1.77 UNIT - I [CH. - 6] ] [OBJECT COMPONENTS]... 1.79-1.92 6.1 OBJECT MODELS DEFINE SYSTEM ARCHITECTURE AND DESIGN... 1.79 6.2 REUSING ANALYSIS AND DESIGN COMPONENTS... 1.81 6.3 EXPRESSING VARIABILITY IN OBJECT MODEL COMPONENTS... 1.82 6.4 TRACING USECASE VARIABILITY TO THE OBJECT MODELS... 1.83 6.4.1 Reusing Compatible Usecase and Object Components... 1.83 6.4.2 Designing a Component System to be Reusable... 1.84 6.4.3 Mapping Usecase Variability to an Appropriate Object Variability Mechanism... 1.84 6.5 REUSABLE ANALYSIS COMPONENTS... 1.85 6.5.1 Architecture and Design Patterns Correspond to Abstract Usecases... 1.86 6.6 SUBSYSTEM COMPONENTS GROUP RELATED TYPES AND CLASSES... 1.86 6.6.1 Frameworks are Abstract Subsystems... 1.87 6.6.2 Interfaces Constrain Interactions Between Systems... 1.87
Contents vii 6.7 REUSABLE DESIGN AND IMPLEMENTATION COMPONENTS... 1.87 6.7.1 Implications of Programming Language Features... 1.87 6.7.2 Using Inheritance... 1.88 6.7.3 Using Extensions... 1.89 6.7.4 Using Parameterization, Templates and Generation... 1.90 6.8 PACKAGING AND DOCUMENTING OBJECT COMPONENTS AND VARIANTS... 1.91 UNIT - II [CH.. - 7] ] [DESIGN PATTERNS... 2.1-2.30 7.1 INTRODUCTION... 2.2 7.2 WHAT IS A DESIGN PATTERN?... 2.2 7.2.1 Advantages of Design Patterns... 2.3 7.2.2 Essential Elements of a Design Pattern... 2.4 7.3 DESIGN PATTERNS IN SMALLTALK MVC... 2.4 7.4 DESCRIBING DESIGN PATTERNS... 2.6 7.5 THE CATALOG OF DESIGN PATTERNS... 2.7 7.6 ORGANIZING THE CATALOG... 2.9 7.6.1 Creational Patterns... 2.10 7.6.2 Structural Patterns... 2.10 7.6.3 Behavioural Patterns... 2.10 7.6.4 Various Ways of Organizing the Design Patterns... 2.11 7.7 HOW DESIGN PATTERNS SOLVE DESIGN PROBLEMS... 2.16 7.7.1 Finding Appropriate Objects... 2.16 7.7.2 Determining the Granularity of Objects... 2.17 7.7.3 Specifying Object Interfaces... 2.17 7.7.4 Specifying Object Implementations... 2.18 7.7.4.1 Class Vs Interface Inheritance... 2.19 7.7.4.2 Principle of Reusable Object-Oriented Design... 2.20
viii Contents 7.7.5 Using Reuse Mechanisms... 2.21 7.7.5.1 Inheritance Vs Composition... 2.21 7.7.5.2 Difference between White-box Reuse and Black-box Reuse... 2.22 7.7.5.3 Inheritance Vs Parametrized Types... 2.23 7.7.6 Relating Run-time and Compile-time Structures... 2.24 7.7.6.1 Aggregation Vs Acquaintance... 2.24 7.7.7 Designing for Change... 2.25 7.7.7.1 Tool kits... 2.27 7.7.7.2 Frameworks... 2.27 7.8 HOW TO SELECT A DESIGN PATTERN... 2.28 7.9 HOW TO USE A DESIGN PATTERN... 2.30 UNIT - II [CH.. - 8] ] [CREA CREATIONAL PATTERNS... 2.31-2.72 8.1 CREATIONAL PATTERNS... 2.31 8.2 ABSTRACT FACTORY... 2.36 8.3 BUILDER... 2.43 8.4 FACTORY METHOD... 2.50 8.5 PROTOTYPE... 2.59 8.6 SINGLETON... 2.65 UNIT - III [CH. - 9] ] [STRUCTURAL PA... 3.1-3.68 9.1 INTRODUCTION... 3.1 9.2 ADAPTER... 3.1 9.3 BRIDGE... 3.10 9.4 COMPOSITE... 3.20 9.5 DECORATOR... 3.27 9.6 FACADE... 3.36 9.7 FLYWEIGHT... 3.44 9.8 PROXY... 3.55
Contents ix UNIT - III [CH.. - 10] ] [BEHA BEHAVIOURAL PATTERNS... 3.69-3.102 10.1 INTRODUCTION... 3.69 10.2 CHAIN OF RESPONSIBILITY... 3.70 10.3 COMMAND... 3.80 10.4 INTERPRETER... 3.90 UNIT - IV [CH.. - 11] ] [BEHA BEHAVIOURAL PATTERNS TTERNS-I -I]... 4.1-4.76 11.1 ITERATOR... 4.1 11.2 MEDIATOR... 4.10 11.3 MEMENTO... 4.19 11.4 OBSERVER... 4.27 11.5 STATE... 4.38 11.6 STRATEGY... 4.45 11.7 TEMPLATE METHOD... 4.55 11.8 VISITOR... 4.62 UNIT - IV [CH.. - 12] ] [OTHER DESIGN PATTERNS... 4.77-4.100 12.1 INTRODUCTION... 4.77 12.2 WHOLE-PART... 4.78 12.3 MASTER-SLAVE... 4.81 12.4 VIEW HANDLER... 4.85 12.5 FORWARDER-RECEIVER... 4.90 12.6 CLIENT DISPATCHER-SERVER... 4.93 12.7 PUBLISHER-SUBSCRIBER... 4.99 UNIT - V [CH. - 13] ] [ARCHITECTURAL PA... 5.1-5.68 13.1 INTRODUCTION... 5.1 13.2 LAYERS... 5.2 13.3 PIPES AND FILTERS... 5.17 13.4 BLACK BOARD... 5.29
x Contents 13.5 BROKER... 5.35 13.6 MODEL-VIEW CONTROLLER... 5.44 13.7 PRESENTATION-ABSTRACTION-CONTROL... 5.51 13.8 MICROKERNEL... 5.57 13.9 REFLECTION... 5.63