【正文】
Introducting software product lines 10 Traditional approach to SD ? one application/product at a time ? focus on delivery and deadlines ? maintainability amp。 evolution not in focus ? typical problems ? time amp。 budget ? system quality ? maintenance cost up to 80% of total product ? decreasing petitiveness Introducting software product lines 11 Software Reuse ? drastically decrease cost of software development and maintenance ? increase quality of software ? reuse of existing software is one of the most promising approaches ? construct applications by posing reusable software pieces (cost ? TTM ? staff) Introducting software product lines 12 Examples of reuse ? code “scavenging” (copy amp。 paste) ? operating systems ? pilers ? class libraries ? design patterns ? distribution systems, ., CORBA, COM, etc. ? graphical user interface (GUI) systems ? design reuse (expertise) ? objectoriented frameworks ? database management systems (DBMS) ? application generators Introducting software product lines 13 Internal vs. External Components your core business domain (no external ponents) operating system encryption browser graphical user interface DBMS Introducting software product lines 14 External Component Lifecycle ? part of application ? identified as domain by visionaries ? prototype development (universities, research labs) ? productification (often by small (new) panies) ? adoption by the “pragmatists” ? incorporation in “infrastructure”, . operating system Introducting software product lines 15 Two approaches to reuse ? opportunistic: the software engineer reuses pieces of software that fit the current problem and adds them to the software. ? planned: the anization puts explicit effort in developing reusable artifacts that provide the ?right? abstractions, ?right? level of variability and that fit into an higher level structure. opportunistic reuse does not work in practice Introducting software product lines 16 Two approaches to reuse ? bottomup: reusable ponents, once developed or mined, are added to a, possibly large, collection of assets. Software engineers search their way through these assets looking for suitable pieces. ? topdown: assets are developed and presented as parts fitting into a higherlevel structure. Assets adhere to predefined provided and required interfaces. bottomup reuse does not work in practice Introducting software product lines 17 Software Components ? three