Académique Documents
Professionnel Documents
Culture Documents
Software Engineering, just as other engineering disciplines, needs to take into account of the different domain in which it is working. Consider the engineering of Electric Coffee Machine (household appliance) versus the engineering of Airplane (avionics):
We may design the electric coffee maker in such a manner that it is focused on properties such as speed of heating, electric safety, and looks; but we know if it breaks the user will just go buy a new one --- do not worry about maintenance (reusable parts & replacement) too much. We may design commercial airplanes for super reliability and safety first. Thus we want to design for frequent maintenance (reusable parts and replacement). Then we are concerned with speed and comfort. We are not concerned with the looks of the airplane.
Our design concerns differ based on the different problem domain.
DSSE (cont.)
Different domains require potentially different:
Principles Techniques Processes Tools
Domain Specific Software Engineering is an approach to developing software by leveraging the existing domain knowledge extensively:
Dividing requirements between those common across application domain and those that are unique to the system Common requirements can be tied to existing solutions, allowing design focus on domain specific areas Many of the software development activities are simplified through reuse of the common material and focusing only on the domain specific areas separately Separation of the tools and environments for common and domain specific needs will make the development and support activities a lot clearer Separation of the common from the domain specific will allow communications to the various stakeholders easier, especially that the domain specific areas may have their own parochial vocabulary.
Problem Space
. .
.
Solution Space by Domains
Domain
defines different industry domain concerns
Business
defines different business goals such as efficiency or money
Domain Model
Parts of DSSA
Framework & Component Dev.
Framework & Comp. Library
additional reqs.
Application Development
Domain Model
Domain model characterizes the problem space:
Standardizes the domain terminologies and semantics forming a domain ontology or domain system Provides the basis for standardized descriptions of problems to be solved in that domain
Consider the term, lot . What does this mean? A) It means a parcel of land in the real estate industry. B) It means a set of same type of items in manufacturing . C) It means role in life in sociology and psychology.
Data-flow diagram
Domain Dictionary
Entity-Relation diagram
Control-flow diagram
Semantic Network Representation diagram Class (object) diagram State Transition diagram
Dictionary Of terms
Interdependence of entities
Reference Requirements
Reference Requirements are derived from customers in the same application domain and contains:
Functional requirements Non-functional requirements Design requirements Implementation requirements
Note that reference requirements are similar to what is shown in feature model
Reference Architecture
From the reference architecture & the domain model (which speaks to business, technology, and a specific domain), we can develop the Reference Architecture which was defined earlier as:
Def: Reference Architecture is the set of principal design decisions that are (1) simultaneously applicable to multiple systems, typically within an application domain, (2) with explicitly defined points of variation. A reference architecture may be:
1. An architecture derived completely from a single product in the domain 2. Incomplete variant architecture containing a common part and an unspecified part, which may vary. 3. Domain specific invariant architecture with explicitly defined points of variation
Product-Line Architecture
The software industry has been building products in the form of product-line. (e.g. Oracle database, Oracle HRM, MS Office Suite, SAP ERP, etc.) Product-line architecture is similar to reference architecture in DSSA, except in scope and completeness:
product-line architecture captures the complete set of design decisions of well-defined, multiple related products in the product-line while DSSA reference architecture may have incomplete and undefined parts
Product-line architecture is composed of design decisions which simultaneously capture all the related products in the product-line. Some of these decisions will
be 1) common among all products, 2) some will be common among a subset of the products and 3) some will be unique to individual product.
Basic
X X X
X
X X You can pick or select your own a) Combinations - single product b) add more features - re-do - pagination c) add more functions - statistical calc.
X
X X
X
X X
X
X X
Advantages of Product-line
Biggest Rationale for Product-line is to gain re-use.
Less cost (spread the cost across multiple products in the
lower pricing)
Shorter schedule for subsequent products that share common features and functionalities Better quality for subsequent products that share already tested and proven features and functionalities
Domain Specific Architect Can you be a domain specific architect. Yes, if you know:
Software design Some specific application domain Technologies Standards that has to be kept Business economics Domain
Business
Technology
web cloud
Payroll
AS/400
AS/400 DB
Oracle DB Common DB
Common UI
Payroll
MS/ Window
You can imagine the version control and configuration management nightmare for this!
General Requirements (Version 3) US (common) code v3 French ( version 3 ) If Fench Version 2.1 came after Version 3, we may need to build a French V3.1
US (common) code v1
French ( version 1 )
Brazilian ( version 3)