Domain Specific Software Engineering (DSSE)

advertisement
Domain Specific Software Engineering (DSSE)
• Software Engineering, just as other engineering
disciplines, needs to take into account of the
different domain in which it is working.
• Consider the “electrical engineering” of Electric
Coffee Machine (household appliance) versus the
“electric engineering” of Airplane (avionics):
a) 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.
b) 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.)
• Each Different Domain require potentially different:
–
–
–
–
Principles
Techniques
Processes
Tools
• Domain Specific Software Engineering is an approach to
developing software by leveraging the existing domain knowledge
(usually the “common” part) extensively:
1. Dividing requirements between those common across application domain and
those that are unique to the system
2. Common requirements can be tied to existing solutions, allowing design focus
on domain specific areas
3. Many of the software development activities are simplified through reuse of the
common material and focusing only on the domain specific areas separately
4. Separation of the tools and environments for common and domain specific
needs will make the development and support activities a lot clearer
5. 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.
General vs Domain Specific Software Engineering
.
.
.
.
?
.
searching for solution
- - - a big frustration
Problem Space
General Solution Space
.
.
..
Problem Space
by Domains
Solution Space by Domains
mapping specific domain problems to domain specific reference architecture
DSSE in terms of 3 Areas:
Domain, Business & Technology
Business
Domain
defines different
business goals
such as efficiency or
money
defines different
industry domain
concerns
Technology
defines various tools,
DSSE;
methodologies & processes
Product Lines
Interest lies where
(Domain∩Business∩Technology)
Domain Specific Software Architecture
• Domain Specific Software Architecture is a
set of principal design decisions composed
of:
1) A reference architecture which describes a
general computational framework for a significant
domain of applications
2) A component library of reusable chunks of
domain expertise
3) An application configuration method for selecting
and configuring components within the
architecture to meet particular application
requirements
DSSA is not free and is built over time upon deep experiences with the domain
Note: Only for
“Large”
Organizations?
DSSE
done
A “Process” View of DSSE and DSSA
Domain
Analysis
Domain
Model
Reference
Architecture Dev.
Ref. Arch.
Model
Parts of
DSSA
over
time
additional
reqs.
Framework &
Component Dev.
Framework &
Comp. Library
Product line
Development
Product Arch.
Model
Application
Development
Domain
Specific App.
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.
• Domain model is created as a result of:
1. Context analysis of those items within the domain context
and relating to those items outside of the domain context
2. Domain analysis via identifying, capturing, and organizing
those entities, functionalities, properties, and data which
recur across multiple applications within the specific
domain.
Domain Model (cont.)
• A domain model is made of 4 main components:
1) Domain dictionary composed of domain specific terms
2) Information model which is a collection of models built
from context analysis and information analysis
(domain analysis- describes the domain)
3) Feature model which describes the user/customers
expectations of the capabilities of the application in the
given domain
4) Operational model identifies how the applications
within the domain works:
Elements of Domain Model
Domain
Dictionary
Information
Model
Feature
Model
Operational
Mode
Context info
Diagram *
Feature
Relation
Diagram *
Data-flow
diagram
Use Case
diagram
Control-flow
diagram
Representation
Diagram *
State Transition
diagram
Entity-Relation
diagram
Semantic
Network *
Class (object)
diagram
Dictionary
Of “domain”
terms
“Interdependence” Capabilities (reqs.)
of entities in the
of the domain
domain
application
How application
Control and Data
“flow”
A Few Possibly-Unfamiliar Diagrams
• The domain model may use part or all of the different
diagrams to depict the models. Most are familiar to
software engineers but a few may not be:
– Context-information diagram - captures high level
information flow among entities within and outside of the
domain system (reminds one of “use case diagram”)
– Semantic network – a network diagram to represent relations
among concepts (entities) in the domain
– Feature-relation diagram – describes overall-all mission of
the domain application
– Representation diagram – describes how information is made
available to users (e.g. UI looks and flow )and other
applications
Domain Specific Software Architecture (DSSA)
& Reference (canonical) Requirements
• DSSA is focused on the “standard” or canonical parts of a
specific domain to create the reference architecture. It still
depends on the requirements specified. Such “standard’ or
canonical requirements for the domain is called the
“Reference Requirements”
• Reference Requirements are derived from customers in the same
application domain and contains:
–
–
–
–
Functional requirements
Non-functional requirements
Design requirements
Implementation requirements
• Reference requirements contains 3 parts:
– Mandatory features : applicable to all systems in the domain
– Optional features: applicable to only subsets of systems in the domain
– Variable features: known to differ in nature by “specific application” in the
domain
Note that reference requirements are similar to what is shown in feature model
Reference Architecture
• From the reference requirements & 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-related-systems, typically
within an application domain, (2) with explicitly
defined points of variation.
• A reference architecture may be “defined” via:
1. An architecture derived completely from a complete, single product in the domain
that serves as guidance for the future (not ideal –too narrow)
2. Incomplete variant architecture containing a specified common part among
products in the doamin and an unspecified part, which may vary. (drift & erosion?)
3. Domain-specific invariant architecture with explicitly “defined” points of variation
As you study “sample” retail apps ---- which way are you going to
approach your assignment ?
Developing Reference Architecture
• There is no “simple” path to when and how to
develop a reference architecture.
– Timing must be just right: not too early when not enough is
know or too late when everything is already developed. This
is a tall order ---- the best way may be do this incrementally
as enough information and knowledge are acquired.
– The form of the reference architecture can not be based on
a single product (too restrictive), nor just incomplete
invariant (may lack too much detail, especially on the
incomplete variable parts) ---- the best is the invariant
architecture with explicit points of variation.
Caution : too many points of variation can be combinatory nightmare!
e.g. 6 potential points of variation can give you 26 = 64 combinations of variations!
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 productline
– while DSSA reference architecture may have incomplete and
undefined parts
• Product-line architecture - 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 in the product-line.
Tabular Method to specify Product-Line
(requirements and/or architecture)
Features or
Comp/connectors
Basic
Office Suite: Product-Line
Complete
Advanced
word processor
X
X
X
spread sheet
X
X
X
presentations
X
X
X
X
X
layout support
spell check
X
X
X
grammar check
X
X
X
X
file import/export
X
auto save
task management
multi-lingual
X
X
X
You can pick
or “select” your
own
a) Combinations
- single product
b) add more features
such as:
- re-do
- pagination
c) add more functions
- statistical calc.
Advantages of Product-line
• Biggest Rationale for Product-line is to gain “re-use”.
– Less cost (spread the cost across multiple products in the
family and lower the individual cost
→ 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
• Re-used common parts also reduces individual
product maintenance cost
– Share fix to common parts
– Share cost on improvements to the common parts
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
Example: Payroll “Product-Line” Technology Based
Re-Architecting
Payroll
UNIX based Payroll
UNIX
Oracle
DB
IBM AS/400 based Payroll
web
cloud
Payroll
AS/400
Oracle
DB
AS/400
DB
Common DB
MS Window based Payroll
MS
SQL
Common UI
Payroll
MS/
Window
Now Consider the Domain & Business
• Domain Specific Considerations:
– Universal Part: inputting employee payroll information,
modifying employee payroll info, computing pay check,
printing pay check, performing direct deposit of pay check, ------ etc.
– Variable Parts: benefits management; retirement pension
management; amount of reports and history maintained ----etc.
• Business Specific Considerations:
– There will be 3 products in the product line: 1) Core, 2)
Complete, 3) Deluxe for customer “pricing” purposes
– International Versions based off US version and includes:
Spanish, French, Chinese, Japanese, Arabic versions for
international marketing purpose
– There will be two “maintenance” updates per year, which
includes: bug fixes, annual tax law change, minor updates
for customer satisfaction purpose
You can imagine the version control and configuration management nightmare for this!
General
Requirements
(Version 2)
General
Requirements
General
Requirements
(Version 3)
US (common) code
v3
US (common) code
v2
US (common) code
v1
French
( version 1 )
French
( version 3 )
French
( version 2 )
French
(version 2.1)
Japanese
( version 3 )
If Fench Version 2.1
came after Version 3,
we may need to build
a French V3.1
Japanese
( version 2 )
Japanese
( version 1 )
Brazilian
( version 3)
Brazilian
( version 2 )
Brazilian
( version 1 )
Example of Product “Family” ---- and Versioning
Download