23
Components Based Design and Development Computer Engineering Studies Universidad Carlos III de Madrid 1 Juan Llorens– Software Engineering Overview Juan Llorens Högskolan på Åland – Finland / Universidad Carlos III de Madrid - Spain [email protected] Unit 2: Software Engineering Quick Overview

Components Based Design and Development - — OCWocw.uc3m.es/ingenieria-informatica/components-based-software...Components Based Design and Development Computer Engineering Studies

Embed Size (px)

Citation preview

Components Based Design and Development

Computer Engineering Studies

Universidad Carlos III de Madrid

1Juan Llorens– Software Engineering Overview

Juan Llorens

Högskolan på Åland – Finland / Universidad Carlos III de Madrid - Spain

[email protected]

Unit 2: Software Engineering Quick Overview

Software Engineering

• Engineering...“the profession in which

a knowledge of the mathematical and natural sciences gained by study, experience and practiceis applied with judgment

to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind.” (Accreditation Board for Engineering

2Juan Llorens– Software Engineering Overview

nature for the benefit of mankind.” (Accreditation Board for Engineering and Technology, 1996).

• Particularities of software engineering– The “product” (software)

– A lot of development, little engineering discipline

– Frequent changes in the product

– It is not seen as necessary by the “so called” software engineers

From Gonzalo Genova

Software Engineering

• The economies of ALL developed nations are dependent on software.

• More and more systems are software controlled

• Software engineering is concerned with theories, methods and tools for

3Juan Llorens– Software Engineering Overview

• Software engineering is concerned with theories, methods and tools for professional software development.

• Expenditure on software represents a significant fraction of GNP in all developed countries.

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

The systems engineering process

System

design

Requirements

definition

System

evolution

System

decommissioning

4Juan Llorens– Software Engineering Overview

System

integration

Sub-system

development

design

System

installation

evolution

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 2

Inter-disciplinary involvement

Electronic

engineering

Mechanical

engineering

Software

engineering

5Juan Llorens– Software Engineering Overview

ATC systems

engineering

Electrical

engineering

User interface

design

Architecture

Structural

engineering

Civil

engineering

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 2

What is a software process?

Objectives, needs, ideas

6Juan Llorens– Software Engineering Overview

problems, failures,..

“Software application”

BNot a Software system

How is a software project done?

What is a software process?

• A set of activities whose goal is the development or evolution of software.

• Generic activities in all software processes are:– Specification - what the system should do and its development constraints– Development - production of the software system

7Juan Llorens– Software Engineering Overview

– Validation - checking that the software is what the customer wants– Evolution - changing the software in response to changing demands.

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

What is a software process model?

• A simplified representation of a software process, presented from a specific perspective.

• Examples of process perspectives are– Workflow perspective - sequence of activities;

– Data-flow perspective - information flow;

8Juan Llorens– Software Engineering Overview

– Data-flow perspective - information flow;

– Role/action perspective - who does what.

• Generic process models– Waterfall;

– Iterative development;

– Component-based software engineering.

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

Usual workflow Activities

design implementation testsReq. analysis

9Juan Llorens– Software Engineering Overview

Not so Usual workflow Activities

Project Mgmt Estimation DebriefingVocabulary Id.

Risk Mgmt. Project Plan. IndexingSw For Reuse

Types of Software Processes : the waterfall process

analysis of requirements

Need

A single iteration

10Juan Llorens– Software Engineering Overview

design

implementation

tests Final product

is an idealization never realized in this pure form

Iterative process [spiral]

Requirements analysis design

N iterations

11Juan Llorens– Software Engineering Overview

implementationtests

need

N versions of the product, documentation...

final product

Iterative and incremental process

• Enables the evolution in parallel of several workflows, and by that the work in parallel of several teams of people

• the different versions of the documents produced in each iteration are not necessarily compatible between them: organize well the documentation

iteration 1 iteration 2 iteration 3

12Juan Llorens– Software Engineering Overview

analysis

(version 1)

analysis

(version 2)

analysis

(version 3)

design

(version 1)

design

(version 2)

implementation

(version 1)

UP: Phases, iterations and workflows

requirements

analysis

Phases of the life cycle

Workflows Inception Elaboration Construction Transition

an iteration in the

phase of Elaboration

13Juan Llorens– Software Engineering Overview

design

implementation

tests

iterations

Preliminary

iteration(s)

Iter.

#1Iter.

#2

Iter.

#n

Iter.

#n+1

Iter.

#n+2

Iter.

#m

Iter.

#m+1

My Favorite workflow structure for Development

Softw

are

for R

euse

New Project

PMgnt

Risk

Plan-Est

Req Ana

Softw

are

with

Reuse

Req Cap

Voc

Sw for reuse

Find + Reuse

14Juan Llorens– Software Engineering Overview

Softw

are

for R

euse

New Solution

Req Ana

Arc. Des

D Des

Dev

Tes

Db

Ix

Softw

are

with

Reuse

CM

WG Traceability

DocumentMngmnt.

My Favorite dataflow structure for Development

PMgnt

Risk

Plan-Est

Req Ana

Req Cap

Voc Ontology

Document Templates

Gantt Diagrams

Spreadsheets

Text based Requirements

Text Based Risks

Requirements Models

15Juan Llorens– Software Engineering Overview

Req Ana

Arc. Des

D Des

Dev

Tes

Db

Ix

Requirements Models

Documents

Architectural Models

Software Models

Code

Reports

AcknowledgedReports

Documents

Documents

Documents

Documents

Terminology of UP Classical terminology

requirementsrequirements analysis

analysis

Other frameworks and nomenclatures

16Juan Llorens– Software Engineering Overview

design design

implementationimplementation

integration

tests tests

Eric Braude, Software Engineering. An Object-Oriented Perspective, John Wiley & Sons, 2001, p. 30.

• divide a project in mini-projects, easier to manage and complete

• each mini-project is an iteration

• each iteration contains all the elements of a normal project:– planning

– analysis and design

– construction

How to perform an Iterative Software Process

17Juan Llorens– Software Engineering Overview

– construction

– integration and tests

– generate a version of the product (internal or external)

• each iteration generates a baseline that includes a partially completed version of the final system, and all the associated documentation

• the successive iterations build on top of each other until the final system is finished

• the difference between two baselines is known as an increment

What are software engineering methods?

• Structured approaches to software development which include system models, notations, rules, design advice and process guidance.

• Model descriptions– Descriptions of graphical models which should be produced;

• Rules

18Juan Llorens– Software Engineering Overview

• Rules– Constraints applied to system models;

• Recommendations– Advice on good design practice;

• Process guidance– What activities to follow.

Based on Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

What are the costs of software engineering?

• Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs.

• Costs vary depending on the type of system being developed and the requirements of system attributes such as performance and system reliability.

19Juan Llorens– Software Engineering Overview

requirements of system attributes such as performance and system reliability.

• Distribution of costs depends on the development model that is used.

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

Software costs

• Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.

• Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs.

20Juan Llorens– Software Engineering Overview

• Software engineering is concerned with cost-effective software development.

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

Activity cost distributionWaterfall model

Iterative development

Specification Design Development Integration and testing

25 50 75 1000

25 50 75 1000

21Juan Llorens– Software Engineering Overview

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

Component-based software engineering

Development and evolution costs for long-lifetime systems

System evolution

10 200 30 4000

System development

Specification Development Integration and testing

25 50 75 1000

Specification Iterative development System testing

Product development costs

22Juan Llorens– Software Engineering Overview

©Ian Sommerville 2004 - Software Engineering, 7th edition. Chapter 1

The maturity of the Software Engineering discipline (swing)

1. Real need: what the customer really wanted.

2. Client side: what the client was able to describe as his/her clear need.

3. Sale process: what the software manufacturer promised the client.

4. Requirements: the final understanding of what the customer described as requirements.

23Juan Llorens– Software Engineering Overview

the customer described as requirements.

5. Analysis: how was planned that the system should finally work at the client side.

6. Design: how the system should perform the analysed functionality.

7. Coding: what the programmer finally produced.

8. On-site installation: what was really installed in the client site.

9. Test: what the responsibles saw in the system.