Software Engineering Seminar
GT-SARG (Georgia Tech Software Architecture Reading Group
CS 8112 Winter Quarter 1995
Moderator: Gregory Abowd
Return to GT-SARG topic overview
Date: Feb 1 Topic Domain Specific Software Architectures
Discussant: Name
Readings
- Domain Specific Software Architeucture Engineering Process
Guidelines
- Domain-Specific Software Architecture Engineering Process
Outline
- A Process for Consolidating and Reusing Design Knowledge
- The Graft-Host Method for Design Change
Additional readings
None
Summary of readings
1) Domain Specific Software Architeucture Engineering Process
Guidelines
This paper defined what a domain-engineering process was, and how it was to
be used to generate a Domain-Specific Software Architecture (DSSA). There
were four basic premises of the work done in the paper:
- An application can be defined by a set of needs that it fulfills,
- user needs can be translated into a set of requirements that meet
those needs,
- requirements can be met in a number of different ways
(multiple solutions), and
- implementation constraints limit the number of ways requirements
can be met.
The goal of the process is to map user needs into system and software
requirements that, based on a set of implementation constraints, define a
DSSA.
According to the authors, most domain analysis processes do not differen-
tiate between functional requirements and implementation constraints, but
rather simply classify them under the heading of "requirements". This
differentiation distinguishes other "domain-analysis" processes from the domain
engineering process described in the paper. Existing domain-analysis processes
fail to distinctly separate "problem-domain analysis" from "solution-space
analysis."
A Domain Specific Software Architecture is, in effect, a multiple-point
solution to a set of application-specific requirements (which define a problem
domain). There are five stages in the DSSA definition/domain engineering
process. They are:
- Define the Scope of the Domain.
- Define what can be accomplished - emphasis is on the user's
needs.
- Define/Refine Domain-Specific Concepts and Requirements.
- Similar to Requirements Analysis - emphasis is on the problem
space.
- Define/Refine Domain-Specific Design and Implementation Constraints.
- Similar to Requirements Analysis - emphasis is on the solution
space.
- Develop Domain Models/Architectures.
- Similar to High-Level Design - emphasis is on defining module/model
interfaces and semantics.
- Produce/Gather Reusable Workproducts.
- Implementation/collection of reusable artifacts (e.g. code,
documentation, etc.).
2) Domain-Specific Software Architecture Engineering Process Outline
This paper is very similar to the previous paper that described process
guidelines for a Domain-Specific Software Architecture (DSSA). The difference
is this paper gives an outline for each of the stage inputs and outputs
associated with the 5 stages of the DSSA definition. They are as follows:
Stage 1) Define the Scope of the Domain
Inputs:
- Experts
- Existing Systems
- Existing Documentation (e.g. textbooks, articles)
Outputs:
- Block Diagram of the domain of interest including inputs and
outputs to the domain and high-level relationships between
functional units/elements in the domain.
- List of people's names to serve as future references or validation
sources.
- List of projects with pointers to documentation and source code.
- List of needs to be met by applications in this domain.
Stage 2) Define/Refine Domain-Specific Concepts/Requirements
Inputs:
- Outputs from Stage 1
- Selected Systems
- Selected documentation
Outputs:
- Data Dictionary w/ thesaurus
- Generic high-level block diagram/architecture.
- Data Flow and control flow diagrams for various aspects of
applications in the domain.
- Rationale and relationships between elements in the domain.
Stage 3) Define/Refine Domain-Specific Design and Implementation
Constraints
Inputs:
- Outputs from Stage 1
- Outputs from Stage 2
Outputs:
- List of Constraints on the H/W used by applications in the
domain.
- List of constraints on the S/W used by applications in the
domain.
- List of constraints on the S/W developed as part of applications
in the domain.
- List of performance constraints on applications in the domain.
Stage 4) Develop Domain Architectures/Models
Inputs:
- Inputs and Outputs of the previous stages.
Outputs:
- DSSA(s) with component interfaces formally specified.
- Domain-Specific models and analysis results.
- Mappings between models/modules/subsystems and requirements
identified in Stage 2.
- Mappings between models/modules/subsystems and concepts
identified in Stage 2.
Stage 5) Produce/Gather Reusable Workproducts
Inputs:
- The interface spec's generated in Stage 4 and related artifacts
from existing systems.
Outputs:
- Reusable components and associated test cases and documentation.
- Cross reference of components to requirements, constraints, and
architecture.
3) A Process for Consolidating and Reusing Design Knowledge
This paper focused on the signficant improvements in design quality and
productivity that are possible when designers operate in a domain-specific
information workspace with low-cost access to relevant application, design,
and technology information. A validated process for constructing such workspaces
to support product family design and evolution was presented. The process
involves three related efforts:
- techniques to consolidate critical analysis and design information from
different projects and different engineering-sites--domain analysis,
- on-line representation of the information in structured form - technology
books, and
- methods and tools to reuse information.
The authors answered the question, "When does it make sense to consolidate and
reuse design knowledge," in the following manner: 1)When working on systems
that are inherently difficult to understand, 2) When working on projects with
high probability of design information being reused, and 3) When engineering
organizations have short product development cycles, operating under challen-
ging regulatory systmes, or with high product-maintenance costs.
Technlogy books consolidate the best knowledge available in the organization
about a class of problems. They use a small number of semantic and syntactic
tags. These tags represent a careful compromise between usability and for-
mality. The information is stored in typed nodes and in relations between
nodes. A typical information node may include encapsulated documents or infor-
mation fragments, and other attributes
4) The Graft-Host Method for Design Change
"Normal" software design methodologies fail to address: (i) the interactions
between multiple, concurrent software design dimensions: (ii) the integrated
management of software and hardware design constraints: and, (iii) the change
management problems that result from grafting partial designs onto existing
host designs.
This paper proposed the Graft-Host (G-H) method for changing design
incrementally by means of "graft-and-repair" steps. It derives its strength
from the reuse of analysis and design information. Some key features of G-H
are:
- evaluation of grafts and host systems at the analysis and design
level by reusing information from technology books;
- reuse and adaptation of software components driven by analysis and
design considerations;
- Evaluation of designs along multiple design dimensions; and
- compostion of change rationales as formal explanations of change pro-
pagation and change trade-off analyses.
Functionally, The G-H method introduces structure into design change by means
of graft-and-repair steps: a subset of a design (the target) is replaced by
an equivalent but not identical subset (the graft), and the resulting new
design is modified (repaired) to compensate for the differences between the
graft and target. The goal is to provide developers with an infrastructure
of reusable knowledge to help them analyze software grafts efficiently. This
infrastructure is embodied in what the authors dub a technology book, and is
specific to a task that a product performs. The knowledge represented in these
"books" is distilled from various sources (eg. textbooks, systems documentation,
etc.) through a process called domain analysis. The knowledge is stratified by
levels of refinement:
- Problem analysis - the formalization of an informal problem statement-
i.e a task to be performed - into an appropriate language.
- Design - results from mapping the problem analysis into abstract
computational entities.
- Implementation - The S/W and/or H/W that performs the task.