Software Engineering with Reusable Components

36
31 de Maio de 2005 Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 11, 12 and 13 Ednaldo Dilorenzo

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 Presentation

Transcript of Software Engineering with Reusable Components

Page 1: Software Engineering with Reusable Components

31 de Maio de 2005

Software Engineeringwith Reusable Components

RiSE’s SeminarsSametinger’s book :: Chapters 11, 12 and 13

Ednaldo Dilorenzo

Page 2: Software Engineering with Reusable Components

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

Page 3: Software Engineering with Reusable Components

31 de Maio de 2005 3

Summary

Domain Engineering Domain Analyses Domain Analyses Activities Domain Analyses Methods Foda: Feature-Oritented Domain Analyses Domain Implementation

Page 4: Software Engineering with Reusable Components

31 de Maio de 2005 4

Software Engineering

Page 5: Software Engineering with Reusable Components

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

Page 6: Software Engineering with Reusable Components

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

Page 7: Software Engineering with Reusable Components

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

Page 8: Software Engineering with Reusable Components

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

Page 9: Software Engineering with Reusable Components

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

Page 10: Software Engineering with Reusable Components

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

Page 11: Software Engineering with Reusable Components

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

Page 12: Software Engineering with Reusable Components

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

Page 13: Software Engineering with Reusable Components

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

Page 14: Software Engineering with Reusable Components

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

Page 15: Software Engineering with Reusable Components

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

Page 16: Software Engineering with Reusable Components

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

Page 17: Software Engineering with Reusable Components

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

Page 18: Software Engineering with Reusable Components

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

Page 19: Software Engineering with Reusable Components

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

Page 20: Software Engineering with Reusable Components

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

Page 21: Software Engineering with Reusable Components

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

Page 22: Software Engineering with Reusable Components

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

Page 23: Software Engineering with Reusable Components

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

Page 24: Software Engineering with Reusable Components

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

Page 25: Software Engineering with Reusable Components

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

Page 26: Software Engineering with Reusable Components

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

Page 27: Software Engineering with Reusable Components

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

Page 28: Software Engineering with Reusable Components

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

Page 29: Software Engineering with Reusable Components

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

Page 30: Software Engineering with Reusable Components

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

Page 31: Software Engineering with Reusable Components

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

Page 32: Software Engineering with Reusable Components

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

Page 33: Software Engineering with Reusable Components

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;

Page 34: Software Engineering with Reusable Components

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;

Page 35: Software Engineering with Reusable Components

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.

Page 36: Software Engineering with Reusable Components

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.