Lec 01
Lec 01
Lec 01
Software Engineering
Time Time
Failure curve for hardware Failure curve for software
Failure characteristics of software
products…
Increased failure
rate due to side effect
Failure Actual
rate Change curve
Idealized
curve
Time
Software Development Process…
The impact of change of software:
60 – 100x
Cost to
change
1.5 – 6x
1x
Quality
Conformance to requirement
Basic steps of software engineering:
Technical steps:
Work process/engineering artifacts
understanding.
Determine the role of software with the
optimum roles played by other components of
the system.
Design of software requirements
Coding and testing
Integration, system testing
Implementation/deployment/commissioning
Basic steps of software engineering..
Engineering management steps
Project management
Quality assurance
Requirements/change management
Configuration management
How to capture requirements?
Functional capabilities/capacities
Process modeling
Performance parameter selection
Determining existing roles of system
components
Setting new targets of capabilities and
performance
Determining new roles of components
Determining optimum roles in meeting targets
Capture the role of software: this is your
software requirements document.
Basic structure:
Purpose
Input Output
Step-2
Waiting time Waiting time
Performance
Performance
Time/throughput
Quality/wastage
Energy
Safety
Cost
Total value addition
Practice Session:
Develop requirements of a software for
improving the method of teaching alphabets to
playgroup students:
Current system
Envisioned system
Role of software
Submit a report in the next class:
Sunday, June 03
Any other system of your interest???
Business value of software
Revenue of Apple?
Revenue of Microsoft?
Revenue of SAP?
Revenue of InfoTech?
Revenue of IBM global services?
Revenue of Bangladesh’s software industry?
Revenue of India’s software service industry?
Is it a big business?
Every business is software business
Why?
Dilemma in software business:
If you extend schedules to make realistic
customer commitment, you loose business.
If you make competitive commitments, your
software is late and customers are unhappy.
If you do this too often, you will be known as an
unreliable supplier.
If this condition continues for long, you will lose
so many customers that you could well go out of
business.
Principles of Software Management
Principle number one: Recognize that you are in
software business
Customers
Product managers
Developers
Principle number Two: The quality must be the
top priority
Principle number Three: Quality software is
developed by disciplined and motivated people
Why project fails
Unrealistic schedules
Inappropriate staffing
Changing requirements
Poor quality work
Believing in magic
Key lessons to deal with project failure
The two key components of software
management are a dedication to quality and
consistently disciplined engineering work
When software projects fails, it is usually
because a manager did not insist that the work
be done in the right way
All of those causes could have been avoided
had management insisted on planned and
disciplined work.
Rational management
Four elements to rational management:
Set aggressive long-term goals, but break these
goals into realistic and measurable short-term
goals.
Require detailed and complete plans, review
these plans, and then negotiate the commitments
with the people who will do the work.
Insist on facts and data, and use these facts and
data to run these businesses
Monitor the work, and use current data to
anticipate and resolve future problems.
Why should quality be managed?
There are three reasons to insist that software
quality be measured and managed:
Poor-quality software can cause major property
damage and even kill people
Quality works saves time and money
If management do not manage software quality,
nobody else will do.
Why quality pays
Defective software is expensive and can even be life
threatening.
Software engineers inject defects because they are
human.
The cost to find and fix a defect increases exponentially
as development progresses.
The engineer who developed a program is best able to
find and fix defects.
Effective defect-removal methods require special
training.
If you do not manage software quality, nobody else will.
Leadership goals:
In setting goals, make them clear and measurable, assign them to
specific people, and track performance against them.
Goals that are measured get managed, and goals that are managed
are often met.
Goals that are not measured and managed won’t be met, and
performance may actually deteriorate.
To improve engineering performance, you must change what people
do.
To change their behavior, the engineers must know how to make
detailed plans, manage quality, and use efficient working methods.
To actually improve the organization, the engineers must
consistently use the methods they know and the managers must
guide, support, and coach them in doing so.
Changing engineering behavior:
For engineers to use disciplined methods, their
managers must agree with the methods and
support their use.
To actually change engineering and
management behavior, the managers must be
responsible for implementing the changes.
If software engineers are to change their
behavior, they must believe that the new
methods will work for them.
Software industry analysis
Value chain
Domestic market
Export market
Outsourcing
Business Software Industry Analysis
Domestic Market Small Clients in Large Clients in
Production (e.g. RMG, the International the International $ 600 b
Banks etc.) Market Market
Value Chain
Service
Many Unit Coding &
Unit Coding & $ 10-
Testing
Providers Local Software $ 80/day Testing
Unit Coding &
Testing 25/day
$ 100 b
Service Providers
80% in
(150 firms) Developed Developing
Few System
System Integration Countries Countries
& Testing Local Software Integration
Service Provider & Testing
$ 50 b
Production of Users’ Production of
No Users’ Manual &
Manual & Training $ 500-
Local Software Training Material
Material Service Provider 600/day
Developed
Software No Countries Software
Implementation Local Software Implementation $ 200 b
Guide Preparation Service Provider Guide Preparation
Software Life Cycle Models
Basics
The Waterfall
The Prototype
Rapid Application Development (RAD)
Iterative or Evolutionary Model
Incremental
The Spiral
Life Cycle Models in Object Oriented Development
Methodology
Methodologies to deal with defects
SEI Process Frameworks and Life cycle Models
Basics of Life Cycle
Basic Technical Steps (i.e. Value Chain) of
Software Engineering
1. Requirements
2. Specifications
3. Design: Architectural and detailed
4. Test design: unit, system, acceptance
5. Coding and unit testing
6. Integration and system testing
7. Implementation and acceptance testing
8. Maintenance: bug fixing, enhancement
Basics of Life Cycle…
Basic Management Steps
Project planning
Project monitoring and control
Quality assurance
Project financing
HR management
Technology management
Process management
Product positioning management
Basics of Life Cycle…
Products produced
Project plan
Requirements document
Specification document
Design document
Test design and plan
Code
Test results: unit, integration, acceptance
Users’ manual
Training materials
Basics of Life Cycle…
Fundamental approach
1. Plan
2. Perform
3. Measure
4. Control
5. Improve
Listen to Build/revise
customer mock-up
Customer
test-drives
mock-up
Prototyping Model…
Limitations:
The customer sees what appears to be a working
version of the software.
Planning
Customer
Communication
Risk
Project analysis
entry point
axis
Customer Evaluation
Engineering
Engineering
Construction &
Release
Spiral Model’s Activities:
Customer communication – tasks required to establish effective
communication between developer and customer.
Risk analysis– tasks required to assess both technical and management risks.
Construction and release– tasks required to construct, test, install and provide
user support.
The evolving nature of this model enables the customer and the
developer better understand and react to risks at each evolutionary
level.