400 likes | 1.1k Views
Component-Based Software Engineering. M.R.V. Chaudron www.win.tue.nl/~mchaudro Dept. of Mathematics and Computing Science Eindhoven University of Technology. This lecture. Obstacles to CBD CBD Process domain engineering. Obstacles to CBD. Some Obstacles to CBSD.
E N D
Component-BasedSoftware Engineering M.R.V. Chaudron www.win.tue.nl/~mchaudro Dept. of Mathematics and Computing Science Eindhoven University of Technology
This lecture • Obstacles to CBD • CBD Process • domain engineering
Some Obstacles to CBSD • Organizational Concerns: • who pays for extra development effort? • (for making components more generic, flexible, ..) • cost of learning
Some Obstacles to CBSD • Commercial Concerns: • No established market! • No Software shops : • marketing, licensing, trading, … • Legal issues: liability (aansprakelijkheid) • Business model (pay-per-copy vs. pay-per-use)
Some Obstacles to CBSD • Technical Concerns: • Method for Design of Components • balance genericity, flexibility, … • Adequate tools are needed; • in particular for integration of third party • components • Need for Common/Standardized: • architectures • component model • data model • specification methods • …
What is Domain Engineering ? Typically, organisations build many systems in a single domain Domain Engineering is the activity of collecting, organizing and storing experience in building systems in a particular domain • using reusable assets • providing means for reuse • retrieval, dissemination, adaptation, assembly Goal: Capitalize the experience/expertise acquired in building systems, in order to build new systems more efficiently Assets may be software, but also requirements, domain models In general: domain knowledge
What is Domain Engineering? ... the process of producing, maintaining and cataloging reusable assets, to make them available to application engineering teams.
References on Domain Engineering • FODA – Feature Oriented Domain Analysis Kang, K., et al. Feature-Oriented Domain Analysis (FODA) Feasibility Study (CMU/SEI-90-TR-21, ADA 235785). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 1990. • ODM – Organization Domain Modelling Simos, M., et al. Software Technology for Adaptable Reliable Systems (STARS) Organization Domain Modeling (ODM) Guidebook Version 2.0 (STARS-VC-A025/001/00). Manassas, VA: Lockheed Martin Tactical Defense Systems, 1996. Also available onlinehttp://www.asset.com/WSRD/abstracts/ABSTRACT_1176.html • Survey papers: • Arango, G. "Domain Analysis Methods," 17-49. Software Reusability. Chichester, England: Ellis Horwood, 1994.
References on Domain Engineering • Reuse-Based Software Engineering: Techniques, Organization and Controls, H. Mili, A. Mili, S. Yacoub, E. Addy, Wiley & Sons, 2002
Domain Engineering Domain Engineering: inputs and outputs Dom.Eng. Methods Mngmt. Procedures Domain literature Taxonomies Standards Existing Appl. Documentation Dom. Models Customer Surveys Components Expert Advice Domain Expert Domain Analysts Domain Engineer
Domain Engineering Process • Domain Identification & Scoping • What is inside/outside the domain • Identify stakeholders • Domain Analysis • Establish lexicon • Identify commonalities/variabilities • Define a set of reusable requirements • Domain Design • Establish a common architecture for the domain • Domain Implementation • Engineer Asset Base / Implement reusable assets; e.g. models, components, generators, reuse infrastructure, ..
Domain Engineering enabled Application Engineering Domain Engineering Development Domain SW Architecture Implement Reusable Assets Domain Analysis Reusable Assets & Tools Domain Model Domain Software Architecture User Req’s Domain Model Based Analysis Domain Arch.-Based Design Application Development Application Model Application Architecture Application Application Engineering
Domain Analysis • The process by which a software engineer learns about the domain to better understand the problem: • The domain is the general field of business or technology in which the clients will use the software • A domain expert is a person who has a deep knowledge of the domain • Benefits of performing domain analysis: • Anticipation of extensions • Aquire expertise to fill in gaps in available information
Domain Analysis A domain model is an explicit representation of knowledge about the domain • Domain model consists of: • Domain lexicon • Concept models (using e.g. diagrams, formalisms, … ) • Feature models
Features According to FODA: A prominent and user-visible aspect, quality or characteristic of a system. ODM: A distinguishable characteristic of a system that is relevant to a stakeholder of the system In mobile telephones: - polyphonic ringtones - SMS, MMS - dual, tri-band, - … In cars: - airco - power-steering - remote key-lock - …
Feature models • Types of features • Mandatory: All systems must have it • e.g. A car must have an engine • Alternative: • A system must have one out of multiple options • e.g. Transmission may be manual or automatic • Optional: A system may have a feature • e.g. A car may have air-conditioning
Feature Diagram A hierarchical decomposition of features. A concept higher in the tree consists of its children car optional wheels engine steering wheel transmission airco alternative mandatory (default) manual automatic • Additional annotations that may be used in the feature diagram: • mutually exclusive features • rationale for chosing between alternatives • composition rules: airco may be used if horsepower>100
Example Domain Analysis document A. Introduction B. Glossary C. General knowledge about the domain D. Customers and users E. The environment • Tasks and procedures currently performed • Vision on future of domain • Competing software • Similarities to other domains
Maintaining Domain Models • Businesses and their environments change. • Hence Domain Models should be maintained.
Typical Activities of a SE Project • Problem Analysis • Requirement Engineering • Architecture Design • Subsystem Design • Implementation & Unit Test • Integration & System Test • Deployment • Maintenance • (De)comission
Consumer and Producer Processes Two concurrent processes Domain Model Domain Software Architecture Consumer aims to build systems using existing components Producer aims to build component to supply to consumers Application Architecture Reusable Assets & Tools Application
CBD Consumer Process (1) • Problem Understanding • Requirement Engineering • list (sub)system requirements • determine (sub)system test-cases • Component Reconnaisance • Survey available Components • Shortlist Candidates • CBD Architecture Design The components selected influence the architecture!
CBD Consumer Process (2) • CBD Architecture Design • Chose a component model • proprietary vs. industry-provided • Indentify dependencies across components • Design space is typically limited to a set of ‘assemblies’; i.e. discrete set of particular combinations of components
CBD Consumer Process (3) • Finding/Locating Components • search internal (department/company) repositories • search external repositories • Component Selection • Component/Assembly Evaluation • Vendor Selection • Build vs. Buy-decision • Component Acquisition • Component understanding • Acquirer testing • Build Custom Software
CBD Consumer Process (4) • Component Integration • wrapping • adapting/tailoring • installing/configuring • verification & validation of assembly & system • test system-wide properties • Component Maintenance • when to update with a new version • when to switch to another vendor • Component Decomission
Consumer Persective primary criterium: suitable functional & extra-functional properties • How will the component affect the behaviour of other components in the system? • Components inevitably interact through resource use • What does a component require of other components in the system? • Who is responsible for • maintenance of the component in the system? • failures in the final system? Producer or assembler?
Consumer Persective Vendor selection • reputation • product quality • service quality • expected business continuity
Selection Criteria Process: • how fast can the component be delivered? • how much time will it take to integrate? • how much time will it take to maintain? • … Product • does it provide required functionality? • does it not provide superfluous functionality? • quality/cost ratio? • …
Component versus Assembly Selection What count are the properties of the final systems. These are not necessarily those of individual components. Instead of evalutating components, we should evaluate assemblies.
CBD Production Activities (1) • Assess market-potential: • what are current and future needs? • what exists in the market? • Identify/Scope components • balance genericity vs. (size, complexity, …) • select variability • Implement Components • documentation / specification
CBD Production Activities (2) • Verify Components • Certification by 3rd party • Packaging • Distribution • insert into repository
Questions? • You should know • component design guidelines • what domain engineering is • how to read & make feature-diagrams • CBD process Self-Study material: - Chapter .. from Mili