Introduction To Software Engineering
Introduction To Software Engineering
Software Engineering
Introduction to
Software Engineering Outline
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
Selected Software Engineering
Principles
Modularity
Abstraction
Anticipation of Change
Generality
Incrementality
Methods & Techniques
Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques
Principles
Basic Problem Solving Flow
WHAT
HOW
DO
TEST
USE
Development Methods & Techniques
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
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?
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 for Phased Delivery
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
Table of Contents
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
Software
Development Methods & Techniques
Implementation
Design Testing Integration Maintenance
Engineering Analysis Implementation
Design Document
Translate
design into
programming
language
Source code
Compile, link,
load onto
processor
corrected
Load module source code
Run program,
identify & fix
errors
Ada Code
-- package specification
package Simple_IO is
procedure Get (Item : out Integer);
procedure Put (Item : in Integer);
end Simple_IO;
-- package body
with Text_IO;
Testing
Design Testing Integration Maintenance
Engineering Analysis Implementation
Deliverable Software
Debug & fix
Trouble Report
[1] Program ID - TR #
[2] Current Status
[3] Program Title
Disposition Information
[6] Status [7] Schedule
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
Development Methods & Techniques
Integration
Design Testing Integration Maintenance
Engineering Analysis Implementation
Integrated system
Write trouble
reports &
fix errors
Development Methods & Techniques
Maintenance
System Requirements Software
Design Testing Integration Maintenance
Engineering Analysis Implementation
Production
system Operations
Perform Maintenance
Testing
Software changes
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
Project Management Methods & Techniques
Project Planning
Project Tracking & Oversight
Q1 Q2 Q3 Q4 Q1 Q2 Q3
System Engineering
Software Requirements Analysis
Software Design
Preliminary
Detailed
Code
Test
Integration
Plan
Actual
Project Tracking
Management Methods & Techniques
Project Planning
Project Tracking & Oversight
Quality Assurance
Q1 Q2 Q3 Q4 Q1 Q2 Q3
System Engineering
Software Requirements Analysis
Software Design
Preliminary
Detailed
Code
Test
Integration
Plan
Actual
Quality
Management Methods & Techniques
Project Planning
Project Tracking & Oversight
Assurance
Quality Assurance
Configuration Management
Procedures
Products
Activity
being
performed
Standards
Product Process
Reviews Reviews
Errors Errors
Configuration
Management Methods & Techniques
Project Planning
Project Tracking & Oversight
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
Life-cycle Models
Waterfall
Incremental
Spiral
The Waterfall Life-cycle
Systems
Engineering
Req
Analysis
Design
Code
Test
Integration
Maintenance
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
Build 3 Design Code Test Integrate
Analysis
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
Software Engineering Processes
and Procedures
Responsible
Group
006
Configuration Baseline Software
Baselined Software Design Document
Management Requirements Document
Quality
004
Assurance
Hardware
Formal
Engineering Inspection
* - the processes and procedures defined in this slide apply to the software design phase of a complex software project.
Software Engineering Processes
and Procedures
Responsible
Group 008
001
Task User
Monitor Needs
User
004
Formal
Inspection
Local
Contractor Data Flow
Task Software Code Test
Diagram
Plan Requirements
For Design
* - the processes and procedures defined in this slide show the possible phases applicable for adding a simple routine to a math library.
Tools
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
Tool Examples - 1
Vertical Tools
– McCabe Tools - source code analyzers that generate measures
of software complexity
Horizontal Tools
– Microsoft Project - commercial project management tool
– Polytron Version Control System - controls multiple versions of
software, documents, procedures, etc.
Tool Examples - 2