Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 51

Introduction to

Software Engineering
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
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]
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


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.
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
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
Part 2 - Software Engineering
Concepts

 Part 1 - Background and Introductory


Information
 Part 2 - Software Engineering Concepts
– Software Engineering Relationships
– Principles
– Development Methods & Techniques
– Management Methods & Techniques
– Life-Cycle Methodologies
– Software Engineering Processes & Procedures
– Automated Tools
Software Engineering
Relationships

Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques

Principles
Selected Software Engineering
Principles

 Rigor and Formality

 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

Development Methods & Techniques

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Management Methods & Techniques


Project Planning
Project Tracking & Oversight
Quality Assurance
Configuration Management
Development Methods & Techniques

Systems Engineering System Requirements


Engineering Analysis
Design
Software
Implementation
Testing Integration Maintenance

Verification & Validation

System Design Document


User Need

Concept Requirements System


Definition Definition Design

System Requirements

Concept

Allocated Hardware Reqs Allocated Software Reqs


Software Requirements
Development Methods & Techniques

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Analysis Verification & Validation

Allocated Software Requirements

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

Object Oriented System Requirements


Engineering Analysis
Design
Software
Implementation
Testing Integration Maintenance

Software Design* Verification & Validation

Software Req. Document

Translate Create
reqs into state diagram
objects and for each
create object object
model

Object Model State Diagrams

Develop
Data Flow
Diagram
for each
Data Flow Diagrams state

*This diagram is based partly on the Rumbaugh OOD technique[5]


Detailed Design Document-
NASA-STD-2100 [4]

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

System Requirements Software

Implementation
Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

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;

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;
Development Methods & Techniques

System Requirements Software

Testing
Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Produce Source Code


test Expected Results
plans and
procedures
Conduct
tests &
Evaluate
Result

Test plan and procedures

Deliverable Software
Debug & fix
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
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

System Requirements Software

Integration
Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Acceptance test Expected results


Tested hardware plans and procedures
Receive &
Install Production
Hardware/ system
Software
Run
acceptance
Tested software test

Integrated system
Write trouble
reports &
fix errors
Development Methods & Techniques

Maintenance
System Requirements Software
Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Production
system Operations

Change requests/trouble reports

Perform Maintenance
Testing

Software changes
Development Methods & Techniques

Verification System Requirements


Engineering Analysis
Design
Software
Implementation
Testing Integration Maintenance

& Validation Verification & Validation

Validate

Validate

Validate

Requirements
Design Code Testing
Analysis

Verify Verify Verify Verify


Requirements Traceability Matrix

Ref. Paragraph Description Module ID


# #
1 5.1.6.1.1 Accelerate from 0 to 60 4.1.6.1.1-1
within 10 seconds under 7.1.6-2
standard conditions.
3.1.1-3

2 5.1.6.1.1 Maintain cruising speed 5.1.1.1-4


within 2 mph of set speed.

3 5.1.6.1.2 Update speed display 10 2.1.6.1.2-1


times per second.
Management Methods & Techniques

Development Methods & Techniques

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

Management Methods & Techniques


Project Planning
Project Tracking & Oversight
Quality Assurance
Configuration Management
Management Methods & Techniques

Management Plan Document


Project Planning
Project Tracking & Oversight
Quality Assurance

NASA-STD-2100 [4] 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
Project Management Methods & Techniques
Project Planning
Project Tracking & Oversight

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
Project Tracking
Management Methods & Techniques
Project Planning
Project Tracking & Oversight
Quality Assurance

And Oversight Configuration Management

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

Version Controlled Products Copy of Products


Life-Cycle Methodologies

Automated
tools
Processes &
procedures
Life-cycle
methodologies
Methods &
techniques

Principles
Life-cycle Models

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

 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

Plan next phases Develop, verify


next level product
Processes & Procedures

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

001 002 003

Software Translate Develop


Create
Engineering Requirements Data Flow
state diagram
into objects Diagram for
for
and develop each state
each object
object model

* - 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

Math Library Baseline


Routine
Management

001
Task User
Monitor Needs

User
004
Formal
Inspection

002 003 005 006 007

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

 Computer Aided Software Engineering (CASE)


Environments
– Tools supporting analysis, design, code (Fortran, C,C++),
simulation, and reverse engineering
– Tools supporting vertical areas using object-oriented methods
and code generation
 Test Beds
– PC Data Acquisition Hardware and Software
 Miscellaneous
– Oscilloscopes/Logic Analyzers and other test equipment
– Testing equipment and tools
– Circuit analyzers
Footnotes
Glossary

You might also like