Title: Software Engineering with Reusable Components
1Software Engineeringwith Reusable Components
- RiSEs Seminars
- Sametingers book Chapters 11, 12 and 13
- Ednaldo Dilorenzo
2Summary
- Software Engineering (Chapter 11)
- Introduction
- Software Management
- Software Design
- Software Implementation
- Software Testing
- Software Maintenance
- Software Process Models (Chapter 12)
- Waterfall Model
- Exploratory Model
- Prototyping Model
- Spiral Model
- Twin Life Cycle
3Summary
- Domain Engineering
- Domain Analyses
- Domain Analyses Activities
- Domain Analyses Methods
- Foda Feature-Oritented Domain Analyses
- Domain Implementation
4Software Engineering
4
5Introduction
Software Engineering Chapter 11
- Cost-effective production of high-quality system
is the primary goal of software engineering - Software reuse and components provide crucial
contributions in this direction - Large software projects are broken up into
various project phases
6Software Management
Software Engineering Chapter 11
- Software projects tend to run over budget and
behind schedule - Software management has to plan a project
- It comprises the following major activities
- Project planning
- Project measuring
- Project estimating
- Project scheduling
- Project controlling
7Software Specification
Software Engineering Chapter 11
- Software specifications serve as contracts
between customers and manufacturers of software
systems. - For complex systems, requirements analyses may be
necessary. - A software specification should be complete.
- Functional and nonfunctional requirements are
among the most important parts of a
specification. - Specifications should completely and consistently
define requirements on components.
8Software Design
Software Engineering Chapter 11
- Software Design is an iterative process and
involves describing a component at different
levels of abstraction. - Design includes various activities
- Architectural design
- Component or interface design
- Data structure design
- Algorithmic design
9Software Design
Software Engineering Chapter 11
- Top-down design is typical for components being
built from scratch. - Botton-up design proceeds in the oposite
direction. - Good designs are considered to have the following
characteristics - Modularity
- Coupling
- Cohesion
- Understandability, Adaptability
10Software Design
Software Engineering Chapter 11
- All these characteristics are related to each
other. - Various categories of design methods exist.
- Design methods and software reuse interact in two
ways.
11Software Implementation
Software Engineering Chapter 11
- Implementation is the process of transforming a
design into an executable. - Ideally, the design of a component is independent
of its implementation. - We refrain from dealing with implementation in
greater detail.
12Software Testing
Software Engineering Chapter 11
- The purpose of testing is to ascertain whether a
component satisfies its requirements by
discovering as many errors as possible. - Various kinds of tests include the following
- Specification test
- Component test
- Integration test
- Acceptance test
13Software Testing
Software Engineering Chapter 11
- Various testing methods and strategies include
- Static/dynamic testing
- Black-box/white-box testing
- Top-down/botton-up testing
- With software reuse, software quality can be
increased and testing efforts can be decreased.
14Software Maintenance
Software Engineering Chapter 11
- Software maintenance is the modification of a
software component after its first delivery. - Maintenance activities fall into the following
categories - Adaptive maintenance
- Corrective maintenance
- Perfective maintenance
- Preventive maintenance
15Software Maintenance
Software Engineering Chapter 11
- The cost of maintenance has been steadily
increasing over the past decades. - Reuse can have a positive influence on
maintenance costs when high-quality components
are available and reused for the development of
software systems.
16Waterfall Model
Software Process Models Chapter 12
- According to the waterfall model, the software
development process is divided in well-defined
phases. - The waterfall life cycle comprises the following
steps - Requirements analysis
- Specification
- Design
- Implementation
- Test
- Operation and Maintenance
17Waterfall Model
Software Process Models Chapter 12
- Any step might uncover problems in a previous
step and necessitate returning and partly or even
completely redoing earlier work. - The waterfall model enforces a linear process,
which implies that executable programs are
available late in the process. - Despite its drawbacks, the classic software life
cycle continues to provide structure for many
software projects.
18Exploratory Model
Software Process Models Chapter 12
- The classic software life cycle is not practical
for many of todays software systems. - In the exploratory model a working system is
developed as quickly as possible. - Large, longevous software systems are usually not
developed by using exploratory programming. - Exploratory software development involves
repeatedly applying techniques.
19Exploratory Model
Software Process Models Chapter 12
- Good when both customers and developers dont
know what they want. - The exploratory model delivers various
operational but incomplete products. - Exploratory development challenge software
engineers in that they create an open
architecture.
20Prototyping Model
Software Process Models Chapter 12
- Rapid prototyping has become popular for the
development of software systems with complex user
interfaces. - The purpose of the prototype is to enable
customer and developer to agree on what the
software system is supposed to do. - Prototypes are useful for software components as
well, especially those with complex user
interfaces.
21Spiral Model
Software Process Models Chapter 12
- The key characteristics of this model are regular
assessments of management risks and actions to
counteract these risks. - Each cycle of spiral have the following steps
- Specifying objectives
- List alternatives and their constraints
- Assessing each of the alternatives against each
objective - The spiral model incorporates other process
models.
22Twin Life Cycle
Software Process Models Chapter 12
- Different organizational groups are involved in
systematic reuse - Domain groups
- Component groups
- Application groups
- Software process models and software reuse
interact in two ways - Design with reuse
- Design for reuse
- Provides only a rough overview, but it clearly
demonstrates activities of groups.
23Domain Analyses
Domain Engineering Chapter 13
- Common objects and operations are likely to occur
in multiple applications within a domain. - Domain analyses stresses the reusability of
analyses and design, not code. - Domain-specific reuse is usually accomplished by
separating domain engineering and application
engineering.
24Domain Analyses
Domain Engineering Chapter 13
- Information Sources
- Existing applications
- Domain experts
- Products
- Domain definition
- Domain model
- Domain requirements model
- Architecture model
- Domain taxonomy
- Domain language
- Domain standards
- Reusable components
25Domain Analyses
Domain Engineering Chapter 13
- In the context of domain analysis we can
distinguish the following categories - General purpose
- Domain-specific components
- Product-specific components
- Benefits
- Reuse of domain knowledge
- Reuse of components in a certain context
- Domain-specific model for classification
- Framework for tooling and systems synthesis from
reusable components - Large-grain reuse across products
- Identification of reusable software components
26Domain Analysis Activities
Domain Engineering Chapter 13
- Activities in domain analysis have been described
by various authors. - Arango has compared several domain analysis
methods and extracted a common process with the
following activities - Domain Definition and Preparation
- Data Collection
- Data Analysis and Classification
- Evaluation
27Domain Definition and Preparation
Domain Engineering Chapter 13
- It is important that a domain be clearly defined
and its boundaries be established - After the definition of the domain, relevant data
has to be identified and collected for the
acquisition of domain knowledge
28Data Collection
Domain Engineering Chapter 13
- Different approaches for data collection can be
used, e.g., reviews of literature, interviews of
experts, analysis of applications. - In determining reusable components various levels
can be chosen for analysis - Different sources of information provide
different types of information
29Data Analysis and Classification
Domain Engineering Chapter 13
- It is crucial to analyze similarities, variations
and combinations of data. - The activities in this step are not entirely
different from activities in developing a single
software system. - Domain information is prepared by abstracting and
generalizing functions, objects and their
relationships.
30Evaluation
Domain Engineering Chapter 13
- Besides using and refining models, it helpful to
evaluate the domain - Real application developments are the best
evaluation and test of a domain
31Domain Analysis Methods
Domain Engineering Chapter 13
- Domain analysis methods provide some sort of
systematic proceeding to do domain analyses - Argo has presented, compared and evaluated eight
domain analysis methods - They are essentially similar, with the main
differences in - Emphasis on certain data acquisition means over
others - Approach to modeling, e.g., functional vs.
object-oriented techniques - Overlapping subsets of notations
- Different groupings of activities with different
names - Same names with slightly different meanings
32Foda Feature-Oriented Domain Analysis
Domain Engineering Chapter 13
- It was developed at the Software Engineering
Institute - Foda contains the basic phases
- Context Analysis
- Domain Modeling
- Architecture Modeling
33Context Analysis
Domain Engineering Chapter 13
- Define the scope of the domain and its
relationships to other domain - Context model
- Structure diagrams
- Data flow diagrams
34Domain Modeling
Domain Engineering Chapter 13
- Analyze commonalties and differences of problems
being addressed by applications in the domain - Feature analysis
- Entity relationship modeling
- Functional analysis
35Architecture Modeling
Domain Engineering Chapter 13
- Provide a software solution to problems defined
during domain modeling. - The Foda architecture model is a high-level
design of applications in the domain.
36Domain Implementation
Domain Engineering Chapter 13
- Domain implementation means the use of the
information collected in domain analysis to
create reusable components and new systems.