Software Engineering

advertisement

Software Engineering

- Abdul Majeed

Contents of the Seminar

What is software?

Definition of Software Engineering

Software Process

Generic view of Software Engineering

Software Process Paradigms

Software Testing Strategies

What is software?

• Computer documentation programs and associated

• Software products may be developed for a particular customer or may be developed for a general market

• Software products may be

– Generic developed to be sold to a range of different customers

– Bespoke (custom) - developed for a single customer according to their specification

What is software engineering?

Software engineering

is an engineering discipline which is concerned with all aspects of software production maintenance).

(development and

In general sense the product will exist three times of the development duration so the total efforts will be distributed as 30/70 or 40/60 for development and maintenance respectively.

Economic and Management aspects of SE

• Software production = development + maintenance (evolution)

• Development costs will be 40%

– 40% analysis and design

– 20% coding

– 40% testing

• Maintenance costs > 60% of all development costs

– 20% corrective

– 30% adaptive

– 50% perfective

• Quicker development is not always preferable

– higher up-front costs may defray downstream costs

– poorly designed/implemented software is a critical cost factor

Economic and Management aspects of SE

30%

25%

20%

15%

10%

5%

0%

16%

8%

16%

12%

18%

30%

Activities

What is the difference between software engineering and computer science?

Computer Science Software Engineering

is concerned with

 theory fundamentals

 the practicalities of developing delivering useful software

Computer science theories

insufficient to act as are currently a complete underpinning for software engineering, BUT it is a foundation for practical aspects of software engineering

What is the difference between software engineering and system engineering?

• Software engineering engineering is part of System

• System engineering of is concerned with all aspects computer-based systems development including

– hardware,

– software and

– process engineering

• System engineers are involved in system specification, architectural design , integration and deployment

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

system

production of the software

Validation

checking that the software is what the customer wants

Evolution

changing the software in response to changing demands

Generic view of SE

There are Three Phases of any software process

1. Definition phase which include activities such as

- System/Information engineering

- Software project planning

- Requirement analysis

2 . Development phase which include activities such as

- Design

- Coding

- Testing

3. Maintenance which include activities such as

- Fixing the bugs

- Adaptation

- Enhancement

Software Process Paradigms

Different categories of software process paradigms are

- Classical Life Cycle Model/ Linear

Sequential Model/Waterfall Model

- Prototype Model

- Rapid Application Development

Model (RAD)

- Evolutionary Model (Incremental and

Spiral Model)

- Component based model

- Formal Transformation

Software Development Lifecycle

Waterfall Model

Requirements

Design

Implementation

Integration

Validation

Deployment

Software Development Lifecycle

Spiral Model

Determine objectives alternatives, constraints

Evaluate alternatives, identify, resolve risks, develop prototypes

Develop, verify next-level product

Plan next phases

Requirements

Problem Definition

Specification

→ Requirements

determine exactly what the customer and

user want

develop a contract with the customer

specifies what the software product is to

do

Difficulties

client asks for wrong product

client is computer/software illiterate

specifications are ambiguous, inconsistent,

incomplete

Architecture/Design

Requirements Specification

Architecture/Design

architecture: decompose software into modules

with interfaces

design: develop module specifications

(algorithms, data types)

maintain a record of design decisions and

traceability

specifies how the software product is to do its

tasks

Difficulties

miscommunication between module designers

design may be inconsistent, incomplete,

ambiguous

Architecture vs. Design

Architecture

of is concerned with the selection architectural elements , their interactions, and the constraints on those elements and their interactions necessary to provide a framework in which to satisfy the requirements and serve as a basis for the design.

Design

and is concerned with the detailed interfaces of modularization the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.

Implementation & Integration

Design → Implementation

implement modules; verify that they meet

their specifications

combine modules according to the design

specifies how the software product does its

tasks

Difficulties

module interaction errors

order of integration may influence quality

and productivity

Software Testing Strategy

Testing is categorized into

Unit Testing verifies the coding of the product

Integration Testing product verifies the design of the

Validation Testing verifies the requirement

System Testing verifies system engineering

Software Testing Strategy

System testing

Validation testing

Integration testing

Unit testing

Code

Design

Requirements

System engineering

Software Testing Strategy

Integration testing

includes

Top down using stubs

- Bottom up using drivers

Validation testing

-

- Beta testing includes

Alpha testing

System testing

includes

Recovery testing

- Security testing

- Stress testing

- Performance testing

Download