Fundamentals of Software Engineering
Fundamentals of Software Engineering
OF SOFTWARE ENGINEERING
Module 1: Introduction to Software
Engineering
Academic norms (Pls read it, very important!!!)
• Choices have consequences. To Fail or to Pass well in an exam is an
Option/Choice. Lets aspire for 100% Pass rate in this unit.
• Class will be starting on time. Student lateness will be allowed 10 minutes after
starting the class.
• During the learning process, all the hand phones must be off or silent.
• CAT dates will be announced a week earlier
• Plagiarism not allowed for all assignments and final examination.
• The attendance minimum 75 percent of the total learning process
• Lectures will be offered on100% on physical basis though virtual classes can still be
offered.
• Quality of Education = Q of Students x Q of Faculty x Q of Learning
Environment
• Remain Relevant. How do you stay relevant ? Learn, Build Competencies &
Build a Brand, You as a brand.
Module 1: Introduction to Software Engineering 2
3
Learning Objectives
By the end of this module, you will...
Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
systems.
that you encounter in your everyday life
which have software controlling them…
Projects were:
• Late
• Over budget
• Unreliable
• Difficult to maintain
• Performed poorly
Software Crisis
Example 1: 2009,Computer glitch delays flights
• The problem did not create a safety issue but could cause
delays in flights.
Software Crisis
Example 2: Ariane 5 Explosion
Software Crisis
Example 3: 1992, London Ambulance Service
• Overloaded problem.
• 46 deaths.
Sources: Business Week, CEO Magazine, Computerworld, InfoWeek, Fortune, The New York
Times, Time, and The Wall Street Journal.
Module 1: Introduction to Software Engineering 12
Software Disasters
• 20 Famous Software Disasters
Source: [Link]
Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
1. It is a modeling activity
• Model: an abstract representation of a system
• Software engineers need to understand the environment in which the
system has to operate
• Software engineers need to understand the systems they could build,
to evaluate different solutions and trade-offs
• Other Studies
• 1982 - Tom DeMarco
• 25% of large systems development projects never
finished
• 1991 Capers Jones Study
• Average Management Information System* project is
1 year late and 100% over budget
Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques
Principles
Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques
Principles
WHAT
HOW
DO
TEST
USE
System Requirements
Concept
Write
Software
Review System Requirements
Requirements
Allocated
to Software
SW Requirements Document
Review/Inspect
Perform Requirements
corrective & Write
action Trouble Reports
Trouble Reports
Module 1: Introduction to Software Engineering 41
Software Requirements Checklist
• Clarity
• Is the terminology consistent with the user’s?
• Are the requirements clear and unambiguous?
• If assumptions that affect implementation have been made, are they
stated?
• Completeness
• Have all requirements been assigned a priority?
• Have the criteria for assigning priority levels been defined?
• Have the requirements been stated for each staged implementation?
• Consistency
• Are the requirements consistent with each other?
• Are the requirements here consistent with the requirements in related
documents?
• Testability
• Have the test methods (test, demonstration, analysis or inspection) been
stated for each requirement?
Module 1: Introduction to Software Engineering 42
Requirements Document -
NASA-STD-2100 [4]
Table of Contents
1.0 Introduction
2.0 Related Documentation
3.0 Requirements Approach and Tradeoffs
4.0 External Interface Requirements
5.0 Requirements Specification
5.1 Process and Data Requirements
5.2 Performance and Quality Engineering Requirements
5.3 Safety Requirements
5.4 Security and Privacy Requirements
5.5 Implementation Constraints
5.6 Site Adaptation
5.7 Design Goals
6.0 Traceability to Parent’s Design
7.0 Partitioning forModule
Phased Delivery
1: Introduction to Software Engineering 43
Development Methods & Techniques
Translate Create
reqs into state diagram
objects and for each
create object object
model
Develop
Data Flow
Diagram
for each
Data Flow Diagrams state
Software Engineering
What is Software?
Programs
Software
System
Documentation
Data Documentation
User
Documentation
Types of Software
• Generic products
• Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
• Examples – PC software such as graphics programs, project management tools; CAD
software; software for specific markets such as appointments systems for dentists.
• The specification of what the software should do is owned by the software developer and
decisions on software change are made by the developer.
Systems Engineering:
Interdisciplinary engineering field (computer, software, and process eng.).
Focuses on how complex engineering projects should be designed and managed.
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.
What are the attributes of good software? Good software should deliver the required functionality and performance to
the user and should be maintainable, dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is concerned with all
aspects of software production.
What are the fundamental software engineering activities? Software specification, software development, software validation and
software evolution.
What is the difference between software engineering and Computer science focuses on theory and fundamentals; software engineering is
computer science? concerned with the practicalities of developing and delivering useful software.
What is the difference between software engineering and System engineering is concerned with all aspects of computer-based systems
system engineering? development including hardware, software and process engineering. Software
engineering is part of this more general process.
Component-Based Software
Waterfall approach Iterative development
Engineering CBSE
Depends on:
The process used, and
The type of software being developed.
Roughly 60% of costs are development costs, 40% are testing costs.
Cost distribution
Custom software development (Bespoke)
Software Model Waterfall Model
Cost units 0 25 50 75 100
Cost distribution
Software development activity Specification Design Development Integration and testing
Iterative Development
0 25 50 75 100
Cost distribution
Generic software development
0 25 50 75 100
What is CASE?
Activity
Players, score, scenes, theme. Client accounts, stocks bonds, heart rate, temperature, blood
money transfers. pressure.
1.0 Introduction
2.0 Related Documentation
3.0 Detailed Design Approach and Tradeoffs
4.0 Detailed Design Description
4.1 Compilation Unit Design and Traceability
4.2 Detailed Design of Compilation Units
5.0 External Interface Detailed Design
5.1 Interface Allocation Design
5.2 Physical Interface Design
6.0 Coding and Implementation Notes
7.0 Firmware Support Manual
Design Document
Translate
design into
programming
language
Source code
Compile, link,
load onto
processor
corrected
Load module source code
Run program,
identify & fix
errors
Deliverable Software
Debug & fix
Disposition Information
[6] Status [7] Schedule
Module 1: Introduction to Software Engineering 66
Test Procedures Document -
NASA-STD-2100 [4]
Table of Contents
1.0 Introduction
2.0 Related Documentation
3.0 Test Identification and Objective
4.0 Procedures
5.0 Evaluation Criteria
6.0 Expected Results
7.0 Actual Results
8.0 Abbreviations and Acronyms
9.0 Glossary
10.0 Notes
11.0 Appendices
Integrated system
Write trouble
reports &
fix errors
Production system
Operations
Perform Maintenance
Testing
Software changes
Module 1: Introduction to Software Engineering 69
Development Methods & Techniques
Validate
Validate
Validate
Requirements
Design Code Testing
Analysis
1.0 Introduction
2.0 Related Documentation
3.0 Purpose and Description of the Software
4.0 Resources, Budgets, Schedules, and Organization
4.1 Business Practices Definition and Revision Processes
4.2 Work Breakdown Structure
4.3 Resource Estimation and Allocation to WBS
4.4 Work Authorization
5.0 Acquisition Activities Plan
6.0 Development Activities Plan
7.0 Sustaining Engineering and Operations Activities Plan
8.0 Assurance Plan
9.0 Risk Management Plan
10.0 Configuration Management Plan
11.0 Delivery and Operational Transition Plan
12.0 Abbreviations and Acronyms
13.0 Glossary
14.0 Notes
15.0 Appendices
Q1 Q2 Q3 Q4 Q1 Q2 Q3
System Engineering
Software Requirements Analysis
Software Design
Preliminary
Detailed
Code
Test
Integration
Plan
Actual
Q1 Q2 Q3 Q4 Q1 Q2 Q3
System Engineering
Software Requirements Analysis
Software Design
Preliminary
Detailed
Code
Test
Integration
Plan
Actual
Assurance
Quality Assurance
Configuration Management
Procedures
Products
Activity
being
performed
Standards
Product Process
Reviews Reviews
Errors Errors
Management
Quality Assurance
Configuration Management
Change/Trouble Reports
Change
Control & Approved Request
Impact
Analysis
Development
Staff
Configuration
Management
Library
Corrected Products
Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques
Principles
• Waterfall
• Incremental
• Spiral
Module 1: Introduction to Software Engineering 79
The Waterfall Life-cycle
Systems
Engineering
Req
Analysis
Design
Code
Test
Integration
Maintenance
Module 1: Introduction to Software Engineering 80
Incremental Life-Cycle
Systems Rqmts.
System Implementation Maintenance
Eng Analysis
Rqmts
Build 1 Design Code Test Integrate
Analysis
Rqmts
Build 2 Design Code Test Integrate
Analysis
Rqmts
BuildModule
3 1: Introduction Design Code Test Integrate
Analysisto Software Engineering 81
Spiral Life-cycle
Determine Evaluate alternatives,
objectives, identify, resolve risks
alternatives,
constraints
Risk
Analysis
Risk Mitigation
Concept of
operation
Requirements
analysis
Design
Implementation
and test
Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques
Principles
Quality
004
Assurance
Hardware
Formal
Engineering Inspection
Software Translate
Create Develop
Engineering Requirements Data Flow
state diagram
into objects Diagram for
for
and develop each state
each object
object model
001
Task User
Monitor Needs
User
004
Formal
Inspection
Local
Contractor Data Flow
Task Software Code Test
Diagram
Plan Requirements
For Design
V T
E O
R O Reverse
T L Analysis Design Coding Testing
I S Engineering
C Tools Tools Tools Tools
A
Tools
L
H T
O O
Configuration Management Tools
R O
I L
Z S Project/Process Management Tools
O
N
T
A Documentation Tools
L
References
IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE 1993.