20
Software Engineering - Abdul Majeed

Software Engineering - Abdul Majeed

  • Upload
    tambre

  • View
    54

  • Download
    0

Embed Size (px)

DESCRIPTION

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?. - PowerPoint PPT Presentation

Citation preview

Page 1: Software Engineering - Abdul Majeed

Software Engineering

- Abdul Majeed

Page 2: Software Engineering - Abdul Majeed

• What is software?

• Definition of Software Engineering

• Software Process

• Generic view of Software Engineering

• Software Process Paradigms

• Software Testing Strategies

Contents of the Seminar

Page 3: Software Engineering - Abdul Majeed

What is software?• Computer programs and associated documentation

• 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

Page 4: Software Engineering - Abdul Majeed

What is software engineering?

Software engineering is an engineering discipline which is concerned with all aspects of software production (development and maintenance).

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.

Page 5: Software Engineering - Abdul Majeed

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

Page 6: Software Engineering - Abdul Majeed

Economic and Management aspects of SE

16%

8%

16%12%

18%

30%

0%5%

10%15%20%25%30%

An

aly

sis

&D

esi

gn

Co

din

g

Te

stin

g Fix

Ad

ap

tion

En

ha

nce

me

nt

Activities

Eff

ort

Page 7: Software Engineering - Abdul Majeed

What is the difference between software engineering and computer science?

Computer Science Software Engineeringis concerned with

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

theory fundamentals

the practicalities of developing

delivering useful software

Page 8: Software Engineering - Abdul Majeed

What is the difference between software engineering and system engineering?

• Software engineering is part of System engineering

• System engineering is concerned with all aspects of computer-based systems development including – hardware, – software and – process engineering

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

Page 9: Software Engineering - Abdul Majeed

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

– Validation - checking that the software is what the customer wants

– Evolution - changing the software in response to changing demands

Page 10: Software Engineering - Abdul Majeed

Generic view of SEThere 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

Page 11: Software Engineering - Abdul Majeed

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

Page 12: Software Engineering - Abdul Majeed

Software Development LifecycleWaterfall Model

Requirements

Design

Implementation

Integration

Validation

Deployment

Page 13: Software Engineering - Abdul Majeed

Develop, verifynext-level product

Software Development LifecycleSpiral Model

Evaluate alternatives,identify, resolve risks,develop prototypes

Plan next phases

Determine objectivesalternatives, constraints

Page 14: Software Engineering - Abdul Majeed

Requirements

• Problem Definition → Requirements Specification– 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

Page 15: Software Engineering - Abdul Majeed

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

Page 16: Software Engineering - Abdul Majeed

Architecture vs. Design

• Architecture is concerned with the selection of 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 is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.

Page 17: Software Engineering - Abdul Majeed

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

Page 18: Software Engineering - Abdul Majeed

Testing is categorized into

- Unit Testing verifies the coding of the product

- Integration Testing verifies the design of the product

- Validation Testing verifies the requirement

- System Testing verifies system engineering

Software Testing Strategy

Page 19: Software Engineering - Abdul Majeed

Unit testing

Integration testing

Validation testing

System testing

Code

Design

Requirements

System engineering

Software Testing Strategy

Page 20: Software Engineering - Abdul Majeed

Software Testing Strategy

Integration testing includes - Top down using stubs- Bottom up using drivers

Validation testing includes- Alpha testing- Beta testing

System testing includes- Recovery testing- Security testing- Stress testing- Performance testing