790 likes | 980 Views
Overview of Software Reuse and Software Product Line. Vijayan Sugumaran Decision and Information Sciences Oakland University Rochester, Michigan, 48309 USA sugumara@oakland.edu. Outline of the Presentation. Software Reuse Overview Product Line Overview
E N D
Overview of Software Reuse and Software Product Line Vijayan Sugumaran Decision and Information Sciences Oakland University Rochester, Michigan, 48309 USA sugumara@oakland.edu
Outline of the Presentation • Software Reuse Overview • Product Line Overview • Target System Generation Methodology • Prototype Architecture • Sample Session • Summary
Reuse Problem Dimensions • Reuse is still an active area of research • No Silver Bullet – Incremental Progress • Three Major Dimensions • Individual Factors • Black-box syndrome • Organizational Factors • Commitment to Reuse • Technical Factors • Lack of standards • Integration Issues • Consistency, correctness, reliability Organizational Technical Individual
Organizational Barriers • a) economic barriers • lack of investment to create the reuse assets since they can not be charged to a client • b) administrative barriers • lack of incentives and commitment from top management • c) political barriers • resistance to using artifacts developed in other units and the perception that the developers are no longer empowered to make architectural decisions • d) psychological barriers • the “not invented here” syndrome and perceived “top-down” imposition of a reuse mandate
Aspects of Technical Barriers Reusable Repository Organization Search & Locate Customization & Integration
Technical Barriers • a) standards • lack of necessary standards for creating reusable assets within an organization • b) repository management • lack of necessary tools and infrastructure to catalog, archive and store reusable assets across multiple business units • c) component identification • lack of effective search and retrieval mechanisms • d) customization and testing • lack of adequate support for validating reusable components that have been customized
Enabling Technologies Search & Locate Customization 4 Knowledge-based Tools 4 Truth Maintenance Systems 4 Domain Model 4 NL / Web Interface Architectural Framework for Component Based Development Reuse Repository 4 Object-Oriented Methods and Tools 4 Business Objects 4 Component Models and Architectures 4 Object Management
Reuse Objectives • Reuse of Higher Level Artifacts • Reuse at analysis and design phases • Overall methodology • Combine the enabling technologies to achieve reuse • Domain Model, Object/Component Repository, Knowledge-Base Technology
Domain Model • Focus on the application domain • Application Domain represented by a family of systems • “Artifacts resulting from domain modeling are more conducive to reuse” • Domain Model (DM) • Reflects similarities and variations of members of family of systems • Multiple viewpoint representation • Domain Specific Software Architecture (DSSA)
Component Based Development (CBD) • Component – Building block • Hardware Industry • Standardized components • Software Industry • Libraries are platform specific • Language specific • Lack of reuse of service, i.e., all or nothing • Object-oriented technology • Didn’t create object market as anticipated • CBD – Focus on the Interface of components • Standardized interface and behavior • The notion of “contract”
Component Programming Model Component 1 Component 1 Interface pins methods pins methods Interface Component 2 Component 2 Software Component Wiring Hardware Component Wiring
CBD Building Blocks • Repository • Collection of organized artifacts for reuse • Lack of meta knowledge about artifacts • Limitations in searching for reusable artifacts • Dependencies and relationships ignored • Ontology • Explicit specification of related concepts • Terms, definitions, relationships of application domain
CBD Building Blocks (Cont’d) • Domain Model • Model of an application domain • Generic components within a domain • Objectives, processes, actions, actors, objects • Dependencies between these artifacts • Use domain model information for searching reuse repositories
Possible Approach for Component Retrieval • User specifies search requirements • Generate initial search query • Use ontology and domain model to refine query • Execute the query against repository or application database • Format results
System Architecture Ontology Application Database Capture User Input Search Query Query Execution/ Pattern Matching NL/Web Interface Query Refinement Generate Query Results Format Results Reuse Repository Repository Interface Query Interface Client Side Server Side Domain Model
Prototype System • Web-based interface • Client-server architecture • Java enabled web browser • Form based interface • Java-enabled server • Java Servlets • JESS – Java Expert System Shell • Reasoning Engine
Server-side Modules • Query Interface • Capture user input • Generate initial query • Format results • Query Refinement Module • Use contents of ontology and domain model • Query Execution Module • Servlets for query execution and pattern matching • Identify and retrieve additional information
Server-side Modules (Cont’d) • Ontology • Terms, synonyms, description, business rules, and relationships • Domain Model • Objectives, processes, actions, actors, and components (objects) • Application Database • Operational data • Reuse Repository • Pre-defined components (objects) for domain • Metadata about the components
Term Synonym Description Business Rule Related to Item Product Bought and sold and bid Category, on Customer, Shipper Category Classification of Item Product Customer Buyer, Seller Person who buys or Item, Account sells Account Prerequisite for Customer Needs Customer Transaction to open account for transaction Shipper Vendor Company that delivers Item the items to the buyer Transaction Sale Buying and selling of a Need both buyer Item, Customer, good and seller to proceed Bid Current Current price willing to Item, Customer auction price pay Bidder Buyer Bids for item or product Has to be Buyer, Customer on sale registered to bid Customer, Item Register Open an account in Item, Customer order to buy or sell items Partial Auction Site Ontology
Example: Component Retrieval Step 1- Learn about the application domain User: “give me details about the bidding process” Step 2- Explore domain model Search domain model for related information e.g: “facilitate bidding” and “monitor bidding”
Further Steps in Retrieval • Step 3- Specify component requirements • User wants to retrieve components for bidding process with methods for capturing bidder information, bid time, etc. • Step 4- Retrieve components • Based on objectives, processes, and actions, identify relevant components • Display component list to the user • User selects one or more components to view
Product Line Overview • Product Line • Set of software-intensive systems that share a common, managed feature set satisfying specific needs or mission • Developed from a common set of core assets in a prescribed way • Core Assets • Architecture, components, domain models, requirement statements, specifications, schedules, test plans, budgets, etc.
Product Line Overview (contd) • Individual System – Target System • Created using applicable components from the core asset base • Tailoring through preplanned variation mechanism • Adding new components as necessary • Assembling the collection according to the rules of the product-line architecture • Predefined plan that specifies the exact product building approach
Three Major Activities • Core Asset Development • Creating the repository of assets used in instantiating specific systems • Product Development • Developing the individual systems within the family of systems • Management • Managing the technical as well as the organizational aspects
Core Asset Development • Separate activity or evolve out of product development • Mine existing products for generic assets • May be purchased from other sources • Core assets are refreshed as organizations develop new products • Track asset use and fed back to the asset development activity
Inputs to Core Asset Development • Product Constraints • Commonalities and variations among products including their behavioral features • Styles, patterns, and frameworks • Relevant architectural building blocks • Production Constraints • Standards and requirements • Production Strategy • Top down, bottom up etc. • Inventory of pre-existing assets • Leveraging already existing assets
Product Development • Depends on the requirements for individual products • Strong feedback effect on product line scope, core assets, production plan, etc. • Product development can vary greatly depending on the available assets, production plan and organizational context
Management • Strong commitment needed at the technical and organizational levels • Technical management oversees core asset development and the product development • Organizational management involves setting proper structure and allocating sufficient resources • Adoption and diffusion plan that spells out the desired state and the strategy to achieve it
Product Line Practice Areas • Body of work or collection of activities that need to be mastered for creating successful product lines • Grouped into three major areas: • Software engineering • Technical Management • Organizational Management
Software Engineering Practice Areas • Necessary for applying the appropriate technology to create and evolve core assets and products • Specific SE Areas: • Architecture Definition • Architecture Evaluation • Component Development • COTS Utilization • Mining Existing Assets • Requirements Engineering • Software System Integration • Testing • Understanding Relevant Domains
Technical Management Practice Areas • Necessary for Engineering the creation and evolution of core assets and products • Specific areas: • Configuration Management • Data collection, Metrics and Tracking • Make/Buy analysis • Process Definition • Scoping • Technical Planning • Technical Risk Management • Tool Support
Organizational Management Practice Areas • Necessary for orchestrating the entire product line effort • Specific areas: • Building a Business Case • Customer Interface Management • Developing an Acquisition Strategy • Funding • Launching and Institutionalizing • Market Analysis • Operations • Organizational Planning • Organizational Risk Management • Structuring the Organization • Technology Forecasting • Training
Operational Issues • Each core asset should have an associated process that specifies how to use it in product development • These processes get folded into what becomes the product production plan • Need commitment and sponsorship from someone above technical ranks • It takes highly proactive advocacy and marketing to introduce software product lines • Need architectural focus for success of product line efforts • Better product line tool support and more supportive business models and data are imperative
Product Line Architecture • Focus on the application domain • Application Domain represented by various artifacts • “Artifacts resulting from domain modeling are more conducive to reuse” • Product Line architecture • Reflects similarities and variations of members of family of systems • Multiple viewpoint representation • Individual Systems can be generated based on specific requirements
Methodology for Target System Generation Steps: • Derive features and modules from the Domain Architecture Knowledge Base • Retrieve the corresponding implemented components from the Component Repository • Select the appropriate attributes and methods for the objects based on the new system requirements, and perform consistency checking • Customize and reconcile the components for the new system design
Attributes Methods Overall Methodology Component Repository Domain Architecture and Knowledge Base Features Components Processes Components Attributes Methods Patterns Feedback Feedback Feature and Method Selection System Requirements Component Customization Business Rules System Requirements Component Integration
Domain Architecture Features Domain Processes Features Processes Adaptation Domain Level Patterns Agents Patterns Process Level Mandatory Optional Components Data Level Current Implementation Framework from Literature
Sales Domain Asset Model Domain:Sales Features: 1. Define potential market segments 2. Analyze sales prospects 3. Bid on large customer requests 4. Make the sale 5. Follow-up on sales 6. Analyze performance Processes/Patterns:Components: 4. Make the sale Sales Person Process order information Order Enter sales order Customer Follow-up orders Product Cancel sales order Hold sales order
Step 1-Derive Features & Components • Features of the new system • From Features, derive Processes and Modules • Derive “Conceptual” Components • Use of Domain Architecture • Dependencies between artifacts embedded in the domain architecture
Step 2-Retrieve Components from Component Repository Sub-Steps: 2.1 Identify relevant/comparable components in the component repository 2.2 Retrieve and transform these components into a suitable representation for “configuring” Artifact dependencies used in retrieval
Step 3 – Configure Objects Sub-Steps: 3.1 Select interfaces to support actions - (access and update methods pulled in) 3.2 Select additional methods 3.3 Configure (re-package) these “actual” components based on user requirements 3.4 Perform Consistency Checking Process –Pattern Method – Attribute Pattern – Component Actual Components Consistency within features, components, methods, etc.
Step 4 – Object Customization Sub-Steps: 4.1 Modify attribute and method names 4.2 Modify pre and post conditions of methods 4.3 Modify implementation of methods 4.4 Add new attributes and methods
Domain Component Repository Assembled System Repository Domain Architecture Repository Objectives Processes Domain Level Actors Actions Process Level Flows Data Files Data Level • Java Beans Hierarchy • Packages • Client/Server Relationships System “A” System “B” System “Z” User Interface Knowledge Base Retrieval Rules Configuration Rules Customization Rules New System New System Components Requirements Consistency Checking Rules Local Data Fact Base Component Base Prototype Architecture