2. Introduction to
Software Engineering Outline
Part 1 - Background and Introductory Information
– Software Engineering History
– Software Development Statistics
– What is Software Engineering?
Part 2 - Software Engineering Concepts
– Software Engineering Relationships
– Principles
– Development Methods & Techniques
– Management Methods & Techniques
– Life-Cycle Methodologies
– Software Engineering Processes & Procedures
– Automated Tools
3. Software Engineering History
Computers were invented in the 1940’s
Then - computing programming languages were
invented
Eventually - program language training was
developed
However, training was unable to provide sufficient
methods & techniques for developing large reliable
systems on time & within budget
By the late 1960’s, digital computers were less than
25 years old and already facing a software crisis
Software Engineering term first emerged as title of
a 1968 NATO conference [1]
4.
5. Software Development Statistics
1979 General Accounting Office Report [2]
– 50% + of contracts had cost overruns
– 60% + of contracts had schedule overruns
– 45% + of software contracted for could not be used
– 29% + of software was paid for and never delivered
– 22% + of software contracted for had to be reworked/modified to
be used
6. Software Development Statistics
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
Software crisis stubbornly persists
* Management Information System - a system for providing information to
support organizational activities and management functions.
7. Summary
While there has been some progress, there still are
serious problems to overcome in software
development
– schedule and cost estimates are still inaccurate
– productivity of developers is not keeping up with the demand
– quality of software is not meeting customer expectations
Still a need to bring engineering discipline into the
software process
8. Software Engineering Definition
The application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software; that is,
the application of engineering to software.
[IEEE Std 610.12-1990]
Institution of engineering discipline in the
manufacturing of computer software
16. Systems Engineering
User Need
Concept
System Requirements
Allocated Hardware Reqs
System Design Document
Concept
Definition
System
Design
Requirements
Definition
Allocated Software Reqs
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
18. 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?
19. 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
20. Object Oriented
Software Design*
Develop
Data Flow
Diagram
for each
state
Create
state diagram
for each
object
Translate
reqs into
objects and
create object
model
Data Flow Diagrams
Software Req. Document
*This diagram is based partly on the Rumbaugh OOD technique[5]
Object Model State Diagrams
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
21. Detailed Design Document-
NASA-STD-2100 [4]
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
Table of Contents
22. Software
Implementation
Design Document
Run program,
identify & fix
errors
Compile, link,
load onto
processor
Translate
design into
programming
language
Source code
Load module
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
corrected
source code
23. 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;
package body Simple_IO is
-- hidden declarations
package Int_IO is new Text_IO.Integer_IO (Integer);
-- body stubs
procedure Get (Item : out Integer) is separate;
procedure Put (Item : in Integer) is separate;
end Simple_IO;
24. Testing
Produce
test
plans and
procedures
Conduct
tests &
Evaluate
Result
Debug & fix
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
Test plan and procedures
Source Code
Expected Results
Deliverable Software
25. Trouble Report
[1] Program ID - TR #
[2] Current Status
[3] Program Title
[4] Problem Description
[5] Rationale (Proposed Approach to be Taken)
Disposition Information
[6] Status [7] Schedule
26. 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
27. Integration
Tested hardware
Receive &
Install
Hardware/
Software
Tested software
Run
acceptance
test
Write trouble
reports &
fix errors
Integrated system
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
Expected results
Acceptance test
plans and procedures
Production
system
28. Maintenance
Production system
Operations
Software changes
Change requests/trouble reports
Maintenance
System
Engineering
Requirements
Analysis
Design
Software
Implementation
Testing Integration Maintenance
Verification & Validation
Development Methods & Techniques
Perform
Testing
30. Requirements Traceability Matrix
Ref.
#
1 5.1.6.1.1 Accelerate from 0 to 60
within 10 seconds under
standard conditions.
4.1.6.1.1-1
7.1.6-2
3.1.1-3
2 Maintain cruising speed
within 2 mph of set speed.
5.1.1.1-4
3 5.1.6.1.2
5.1.6.1.1
Update speed display 10
times per second.
2.1.6.1.2-1
Paragraph
#
Description Module ID
32. Management Plan Document
NASA-STD-2100 [4]
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 Tracking & Oversight
Project Planning
Configuration Management
Quality Assurance
Management Methods & Techniques
43. Software Engineering Processes
and Procedures
Hardware
Engineering
Configuration
Management
Quality
Assurance
Software
Engineering
Translate
Requirements
into objects
and develop
object model
Create
state diagram
for
each object
Develop
Data Flow
Diagram for
each state
001 002 003
Formal
Inspection
004
Baselined Software
Requirements Document
Responsible
Group
Baseline Software
Design Document
006
* - the processes and procedures defined in this slide apply to the software design phase of a complex software project.
44. Software Engineering Processes
and Procedures
User
Math Library
Management
Task
Monitor
Local
Contractor Task
Plan
Data Flow
Diagram
For Design
Code
001
005 006
008
User
Needs
Responsible
Group
Baseline
Routine
* - the processes and procedures defined in this slide show the possible phases applicable for adding a simple routine to a math library.
Test
007
Software
Requirements
003
Formal
Inspection
004
002