You are on page 1of 28

CSE 101

Lesson - 8

Software Engineering
Concepts

Summer 2009
1
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

2
Importance of Software

• 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 professional software
development.
• Expenditure on software represents a
significant fraction of Gross National Product (GNP) in
all developed countries.

3
What is software engineering?

• Software engineering is an engineering discipline


which is concerned with all aspects of software
production

• Software engineers should


– adopt a systematic and organised approach to their work
– use appropriate tools and techniques depending on
– the problem to be solved,
– the development constraints and
– the resources available

4
What is the difference between software
engineering and computer science?

Computer Science Software Engineering


is concerned with
 theory  the practicalities of developing
 fundamentals  delivering useful software

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

5
What is the difference between software
engineering and system engineering?
• System engineering is concerned with all aspects of computer-
based systems development including hardware, software and
process engineering.

• Software engineering is part of this process concerned with


developing the software infrastructure, control, applications and
databases in the system. So this is a part of System
engineering.

• System engineers are involved in


– system specification,
– architectural design
– Integration.

6
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.

7
What are software engineering methods?

• Structured approaches to software development which include


system models, notations, rules, design advice and process
guidance.
• Examples: DeMacro, JSD, UML etc.
• Method Components:
– Model descriptions: Descriptions of graphical models which should be
produced;
– Rules: Constraints applied to system models;
– Recommendations: Advice on good design practice;
– Process guidance: What activities to follow.

8
What is CASE (Computer-Aided Software
Engineering)
Software systems which are intended to provide
automated support for software process activities,
such as requirements analysis, system modelling,
debugging and testing
• Upper-CASE
– Tools to support the early process
activities of requirements and design
• Lower-CASE
– Tools to support later activities such as
programming, debugging and testing

9
What are the attributes of good software?

• The software should deliver the required functionality and


performance to the user and should be maintainable, dependable
and acceptable.
• Maintainability
– Software must evolve to meet changing needs (scalable);
• Dependability
– Software must be trustworthy (reliable, secured and safe);
• Efficiency
– Software should not make wasteful use of system resources;
• Acceptability
– Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.

10
What are the key challenges facing
Software Engineering?

• Heterogeneity
– Developing techniques for building software that can cope with
heterogeneous platforms and execution environments;
• Delivery
– Developing techniques that lead to faster delivery of software;
• Trust
– Developing techniques that demonstrate that software can be
trusted by its users.
– Reliable, Secured and Safe.

11
Generic Software Process Models
• A simplified representation of a software process,
presented from a specific perspective

• Examples of process perspectives:


– Workflow perspective represents inputs, outputs and
dependencies
– Data-flow perspective represents data transformation activities
– Role/action perspective represents the roles/activities of the
people involved in software process
• Generic process models
– Waterfall
– Evolutionary development
– Formal transformation
– Integration from reusable components

12
Engineering Example
Building a house:
•Land and finances System Feasibility

•garden, garage, you are used to age wine, Software Plans and Requirements
enjoy to sit by the fireplace, lots of storage,
don’t like Bauhaus
•Architect will define number of floors and Product Design
rooms, orientation of the driveway, size of the
garage …
Detailed Design
•type of bricks, color of the walls,…
Code
•Construction
•Entering Integration (Product Verification)

•Living in the house Integration (System Test)

•Fixing minor problems, leaking in the roof … Operations and Maintenance

13
The Waterfall Model
System Feasibility Validation

Plans +
Validation
Requirements

Product Design Verification

Detailed Design Verification

Code Unit Test

Product
Integration
Verification

Integration System Test

Didn’t we forget something ? Operation +


Maintenance
Revalidation
14
The Waterfall Model
System Feasibility Validation

Plans +
Validation
Requirements

Product Design Verification

Detailed Design Verification

Code Unit Test

Product
Integration
Verification

Integration System Test

Operation +
Revalidation
Maintenance
15
Review of Waterfall Model

Weaknesses:
– Usually requirements change, are incomplete
or even not known
– Communication ! (…see Mars Orbiter…)
Result: ‘That’s not what I meant !’ ( go back to
last step )

WF-Model reacts very statically:


– Each stage must be completed before next
one starts
16
Total FeedBack

System Feasibility Validation


•Too expensive
Plans +
•Doesn’t force to discipline
Validation
Requirements •Don’t show this to your boss !
Product Design Verification

Detailed Design Verification

Code Unit Test

Product
Integration
Verification

Integration System Test

Operation +
Revalidation
Maintenance
17
Evolutionary Process Model

Concurr ent
activities

Initial
Specification
version

Outline Intermediate
Development
description versions

Final
Validation
version

18
Process Model Problem
• Waterfall
– High risk for new systems because of specification and
design problems.
– Low risk for well-understood developments using familiar
technology.
• Prototyping
– Low risk for new applications because specification and
program stay in step.
– High risk because of lack of process visibility.
• Transformational
– High risk because of need for advanced technology and
staff skills.

19
Spiral Process Model
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product
20
Spiral Model Advantages

• Focuses attention on reuse options.


• Focuses attention on early error elimination.
• Puts quality objectives up front.
• Integrates development and maintenance.
• Provides a framework for hardware/software
development.

21
Spiral Model Problems

• Contractual development often specifies


process model and deliverables in advance.
• Requires risk assessment expertise.

22
The Human Factor

Programmer‘s view:
• Some (holy) lines of code
• A technical challenge
• A pet
• ... Programmer
User

SOFTWARE

Customer Designer

23
The Human Factor
User‘s view:
• A miracle
• A wonderful tool making things easier
• An incombprehensible tool
Usercomplicating life Programmer
unnecessarilly
• Something that simply should work !
SOFTWARE

Customer Designer

24
The Human Factor

User Programmer

SOFTWARE

Customer Designer
Customer‘s view:
• A hopefully affordable tool to enhance profit.

25
The Human Factor

User Programmer

SOFTWARE

Customer Designer‘s view: Designer


• A reasonably complicated
tool to fulfill the needs
• A technical challenge
26
Professional and ethical responsibility

• Software engineering involves wider responsibilities


than simply the application of technical skills.
• Software engineers must behave in an honest and
ethically responsible way if they are to be respected
as professionals.
• Ethical behaviour is more than simply upholding the
law.

27
Question???

28

You might also like