What are some Qualitative Benefits of Using a DSSA?
Here are several specific examples of how automation, reuse, work
avoidance, and accurate analysis are applied during specific life cycle
activities. Some
quantative data and
estimates of cost and schedule reduction
are available for specific cases.
Increased Requirements Reuse
Where there is a common understanding of your product line among your customer
base, a reusable requirements outline can be produced. This can often be done
in such a way that there is a well-defined mapping between the requirements
outline and the reusable architecture specification. This allows refinements
of the requirements outline to be mapped in a methodical way to refinements of
the reusable software architecture.
Increased Design Reuse
A software architecture captures reusable design information in a clear and
unambiguous way. Once an architecture is captured in a formal architecture
specification language, automation can be applied to increase the ability
of developers to reuse this design information in a reliable way.
Increased Source Module and Unit Test Reuse or Generation
A standard software architecture defines the context in which source modules
are used. This provides interface coding guidelines that help insure source
modules will plug-and-play together. It also provides a categorization of
functionality that assists in developing a modular decomposition of the source
code, and assists in structuring a reuse library so that developers can more
easily find useful source modules. Aspects of an architecture-based approach
resemble the use of fourth generation languages, in that much of the source
code is automatically generated or assembled from high-level architecture
specifications.
Decreased Module Interaction and System Integration Defects
Software architectures provide common product-wide standards for module
interaction. This includes both coding guidelines and semantic models of how
modules are combined and interact. System-level analysis performed on the
architecture specification allows complex interactions between modules to be
assessed and verified. To put this another way, tools are available to
automatically check that certain module interactions behave correctly.
Increased Reuse of System Integration and Test Artifacts
Embedded software products must inevitably transition from host-based
development and simulation through hardware-in-the-loop test fixtures and
ultimately into the target system. By capturing and managing the
context-dependent portions of an application, an architecture-based approach
allows modules and subsystems to be reexecuted in a number of configurations and environments
without change. Standard system integration and test architectures can be
defined, with well-defined methods for integrating, testing and transitioning
the application modules into the final product.
Increased Documentation Reuse or Generation
A reusable architecture has a structure that can be mirrored in the structure
of some of the related documentation. Documentation about the various
components that appear in the software architecture can be assembled in an
analogous manner into the standard documentation structure. For example,
hypertext annotations of the boxes and arrows that appear in an architecture
diagram can be automatically assembled according to a standard outline to
automatically generate design documentation.
Increased Ability to Predict and Manage Product Characteristics
The ability to analyze architectures to determine product characteristics,
especially the ability to perform approximate analysis on partial
specifications, allows developers to more accurately and consistently meet
product objectives. Using initial analysis results obtained from a partial
architectural specification very early in the development cycle, a developer
can establish performance budgets and identify key uncertainties. Development
steps can be scheduled to resolve the key uncertainties early in the
development process, and design modifications can be made more easily to meet
the product objectives.
Increased Development Process Predictability and Repeatability
The increased ability to predict and manage product characteristics leads to
increased predictability and repeatability of the development process.
Well-defined and repeatable methods are used to tailor a reusable software
architecture and to assemble software components from a software architecture
specification, which makes the implementation phase more repeatable. An
enhanced ability to reconfigure systems during development makes it possible
to more rapidly and easily respond to changes or new information.
Decreased Development Risk and Rework
The use of accurate system analysis and precise module interface guidelines
leads to significant reductions in defects, which in turn can lead to
significant savings in the effort spent finding and fixing bugs. The
ability to accurately predict and manage product characteristics and to
adapt to changing circumstances, coupled with a methodical and repeatable
process for obtaining an implementation from an architecture specification,
significantly reduces development variability and risk and significantly
reduces rework due to defects or failure to meet requirements.