Module 1 - Fundamentals of Software Engineering
Module 1 - Fundamentals of Software Engineering
FUNDAMENTALS 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
Think about all the devices and systems depend on complex
that you encounter in your everyday life computer-based
…which have software controlling them .systems
Projects were:
• Late
• Over budget
• Unreliable
• Difficult to maintain
• Performed poorly
Software Crisis
Software Crisis
Software Crisis
• Overloaded problem.
• 46 deaths.
Module 1: Introduction to Software Engineering
Software Crisis
• The difficulty of writing correct, understandable, and
verifiable computer programs
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: http://www.devtopics.com/20-famous-software-disasters/
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
Object Oriented
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?
System
Documentation
Document
ation
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.
• Practicalities of software
• Theory.
• Fundamentals. design, development and
Module 1: Introduction to Software delivery.
Engineering
50
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.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.
Component-Based Software
Waterfall approach Iterative development
Engineering CBSE
Depends on:
The process used, and
The type of software being developed.
Cost distribution
Custom software development (Bespoke)
Waterfall Model
Software 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
What are the key attributes for..
Interactive game Banking system Cardiac monitor in an ICU unit
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
NASA-STD-2100 [4]
Quality Assurance
Configuration Management
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
Planning
Quality Assurance
Configuration Management
Q1 Q2 Q3 Q4 Q1 Q2 Q3
System Engineering
Software Requirements Analysis
Software Design
Preliminary
Detailed
Code
Test
Integration
Plan
Actual
And Oversight
Quality Assurance
Configuration Management
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
Impact Request
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
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