software engineering with reusable components
DESCRIPTION
RiSE’s Seminars Sametinger’s book :: Chapters 11, 12 and 13 Ednaldo Dilorenzo. Software Engineering with Reusable Components. Summary. Software Engineering (Chapter 11) Introduction Software Management Software Design Software Implementation Software Testing Software Maintenance - PowerPoint PPT PresentationTRANSCRIPT
31 de Maio de 2005
Software Engineeringwith Reusable Components
RiSE’s SeminarsSametinger’s book :: Chapters 11, 12 and 13
Ednaldo Dilorenzo
31 de Maio de 2005 2
Summary 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
31 de Maio de 2005 3
Summary
Domain Engineering Domain Analyses Domain Analyses Activities Domain Analyses Methods Foda: Feature-Oritented Domain Analyses Domain Implementation
31 de Maio de 2005 4
Software Engineering
31 de Maio de 2005 5
Introduction
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;
Software Engineering :: Chapter 11
31 de Maio de 2005 6
Software Management 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
Software Engineering :: Chapter 11
31 de Maio de 2005 7
Software Specification 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.
Software Engineering :: Chapter 11
31 de Maio de 2005 8
Software Design 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
Software Engineering :: Chapter 11
31 de Maio de 2005 9
Software Design 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
Software Engineering :: Chapter 11
31 de Maio de 2005 10
Software Design All these characteristics are related to each other. Various categories of design methods exist. Design methods and software reuse interact in two
ways.
Software Engineering :: Chapter 11
31 de Maio de 2005 11
Software Implementation 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.
Software Engineering :: Chapter 11
31 de Maio de 2005 12
Software Testing 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
Software Engineering :: Chapter 11
31 de Maio de 2005 13
Software Testing 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.
Software Engineering :: Chapter 11
31 de Maio de 2005 14
Software Maintenance 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
Software Engineering :: Chapter 11
31 de Maio de 2005 15
Software Maintenance 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.
Software Engineering :: Chapter 11
31 de Maio de 2005 16
Waterfall Model 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
Software Process Models :: Chapter 12
31 de Maio de 2005 17
Waterfall Model 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.
Software Process Models :: Chapter 12
31 de Maio de 2005 18
Exploratory Model The classic software life cycle is not practical for
many of today’s 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.
Software Process Models :: Chapter 12
31 de Maio de 2005 19
Exploratory Model Good when both customers and developers don’t
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.
Software Process Models :: Chapter 12
31 de Maio de 2005 20
Prototyping Model 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.
Software Process Models :: Chapter 12
31 de Maio de 2005 21
Spiral Model 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.
Software Process Models :: Chapter 12
31 de Maio de 2005 22
Twin Life Cycle 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.
Software Process Models :: Chapter 12
31 de Maio de 2005 23
Domain Analyses 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.
Domain Engineering :: Chapter 13
31 de Maio de 2005 24
Domain Analyses Information Sources
Existing applications; Domain experts;
Products Domain definition; Domain model; Domain requirements model; Architecture model; Domain taxonomy; Domain language; Domain standards; Reusable components;
Domain Engineering :: Chapter 13
31 de Maio de 2005 25
Domain Analyses 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;
Domain Engineering :: Chapter 13
31 de Maio de 2005 26
Domain Analysis Activities 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
Domain Engineering :: Chapter 13
31 de Maio de 2005 27
Domain Definition and Preparation 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;
Domain Engineering :: Chapter 13
31 de Maio de 2005 28
Data Collection 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;
Domain Engineering :: Chapter 13
31 de Maio de 2005 29
Data Analysis and Classification 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.
Domain Engineering :: Chapter 13
31 de Maio de 2005 30
Evaluation Besides using and refining models, it helpful to
evaluate the domain; Real application developments are the best
evaluation and test of a domain;
Domain Engineering :: Chapter 13
31 de Maio de 2005 31
Domain Analysis Methods 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;
Domain Engineering :: Chapter 13
31 de Maio de 2005 32
Foda: Feature-Oriented Domain Analysis It was developed at the Software Engineering
Institute Foda contains the basic phases:
Context Analysis; Domain Modeling; Architecture Modeling;
Domain Engineering :: Chapter 13
31 de Maio de 2005 33
Context Analysis
Domain Engineering :: Chapter 13
Define the scope of the domain and its relationships to other domain Context model; Structure diagrams; Data flow diagrams;
31 de Maio de 2005 34
Domain 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;
31 de Maio de 2005 35
Architecture 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.
31 de Maio de 2005 36
Domain Implementation
Domain Engineering :: Chapter 13
Domain implementation means the use of the information collected in domain analysis to create reusable components and new systems.