Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 -...

51
Introduction to Software Engineering

Transcript of Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 -...

Page 1: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Introduction to Software Engineering

Page 2: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –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

Page 3: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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]

Page 4: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.
Page 5: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 6: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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.

Page 7: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 8: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 9: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 10: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Software Engineering Relationships

Principles

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

Page 11: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Selected Software Engineering Principles

Rigor and Formality

Modularity

Abstraction

Anticipation of Change

Generality

Incrementality

Page 12: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.
Page 13: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Methods & Techniques

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

Principles

Page 14: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Basic Problem Solving Flow

WHAT

HOW

DO

TEST

USE

Page 15: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Development Methods & Techniques

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Project Tracking & Oversight

Project Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Page 16: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Systems Engineering

User Need

Concept

System Requirements

Allocated Hardware Reqs

System Design Document

ConceptDefinition

System Design

RequirementsDefinition

Allocated Software Reqs

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Page 17: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Software Requirements Analysis

Allocated Software Requirements

Review/Inspect Requirements

& WriteTrouble Reports

Performcorrective

action

Trouble Reports

Write Software

Requirements Review System Requirements

Allocatedto Software

SW Requirements Document

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Page 18: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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?

Page 19: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Requirements Document - NASA-STD-2100 [4]

Table of Contents

1.0 Introduction2.0 Related Documentation3.0 Requirements Approach and Tradeoffs4.0 External Interface Requirements5.0 Requirements Specification

5.1 Process and Data Requirements5.2 Performance and Quality Engineering Requirements5.3 Safety Requirements5.4 Security and Privacy Requirements5.5 Implementation Constraints5.6 Site Adaptation5.7 Design Goals

6.0 Traceability to Parent’s Design7.0 Partitioning for Phased Delivery

Page 20: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Object Oriented Software Design*

Develop Data FlowDiagramfor each

state

Create state diagram

for each object

Translatereqs 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

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Page 21: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

1.0 Introduction2.0 Related Documentation3.0 Detailed Design Approach and Tradeoffs4.0 Detailed Design Description 4.1 Compilation Unit Design and Traceability 4.2 Detailed Design of Compilation Units5.0 External Interface Detailed Design

5.1 Interface Allocation Design5.2 Physical Interface Design

6.0 Coding and Implementation Notes7.0 Firmware Support Manual

Table of Contents

Page 22: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Software Implementation

Design Document

Run program, identify & fix

errors

Compile, link, load onto processor

Translatedesign into

programming language

Source code

Load module

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

corrected source code

Page 23: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Ada Code

-- package specificationpackage Simple_IO is procedure Get (Item : out Integer); procedure Put (Item : in Integer);end Simple_IO;-- package bodywith 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;

Page 24: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Testing

Produce test

plans andprocedures

Conducttests &

EvaluateResult

Debug & fix

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Test plan and procedures

Source CodeExpected Results

Deliverable Software

Page 25: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 26: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Test Procedures Document - NASA-STD-2100 [4]

Table of Contents

1.0 Introduction2.0 Related Documentation3.0 Test Identification and Objective4.0 Procedures5.0 Evaluation Criteria6.0 Expected Results7.0 Actual Results8.0 Abbreviations and Acronyms9.0 Glossary10.0 Notes11.0 Appendices

Page 27: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Integration

Tested hardware

Receive &Install

Hardware/Software

Tested software

Run acceptance

test

Write trouble reports &fix errors

Integrated system

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Expected resultsAcceptance test plans and procedures

Production system

Page 28: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Maintenance

Production system Operations

Software changes

Change requests/trouble reports

Maintenance

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

PerformTesting

Page 29: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Verification& Validation

RequirementsAnalysis

Design TestingCode

Validate

Verify

Validate

Validate

VerifyVerifyVerify

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Page 30: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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-17.1.6-23.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

Page 31: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Management Methods & Techniques

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

Page 32: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Management Plan Document NASA-STD-2100 [4]

1.0 Introduction2.0 Related Documentation3.0 Purpose and Description of the Software4.0 Resources, Budgets, Schedules, and Organization

4.1 Business Practices Definition and Revision Processes4.2 Work Breakdown Structure4.3 Resource Estimation and Allocation to WBS4.4 Work Authorization

5.0 Acquisition Activities Plan6.0 Development Activities Plan7.0 Sustaining Engineering and Operations Activities Plan8.0 Assurance Plan9.0 Risk Management Plan10.0 Configuration Management Plan11.0 Delivery and Operational Transition Plan12.0 Abbreviations and Acronyms13.0 Glossary14.0 Notes15.0 Appendices

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Page 33: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Project Planning

System Engineering

Software Requirements Analysis

Software Design

Preliminary

Detailed

Code

Test

Integration

Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3

PlanActual

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Page 34: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Project Tracking And Oversight

System Engineering

Software Requirements Analysis

Software Design

Preliminary

Detailed

Code

Test

Integration

Q 1 Q 2 Q 3 Q 4 Q 1 Q 2 Q 3

PlanActual

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Page 35: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Quality Assurance

Process Reviews

ProductReviews

Activity being

performed

ErrorsErrors

Standards

Products Procedures

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Page 36: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Configuration Management

ChangeControl &

Impact Analysis

Change/Trouble Reports

DevelopmentStaff

ConfigurationManagement

Library

Approved Request

Corrected Products

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

Version Controlled Products Copy of Products

Page 37: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Life-Cycle Methodologies

Processes &procedures

Automatedtools

Principles

Methods &techniques

Life-cyclemethodologies

Page 38: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Life-cycle Models

Waterfall Incremental Spiral

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Page 39: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

The Waterfall Life-cycle

Systems Engineering

Design

Code

Test

Maintenance

Req Analysis

Integration

Page 40: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Incremental Life-Cycle

System ImplementationSystems

EngRqmts.

Analysis Maintenance

Code Test Integrate

Code Test Integrate

Code Test Integrate

Design

Design

Design

RqmtsAnalysis

RqmtsAnalysis

RqmtsAnalysis

Build 1

Build 2

Build 3

Page 41: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Spiral Life-cycle

Determineobjectives,alternatives,constraints

Plan next phases

Evaluate alternatives, identify, resolve risks

Develop, verifynext level product

Risk Analysis

Risk Mitigation

Concept ofoperation

Requirementsanalysis

Design

Implementationand test

Page 42: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Processes & Procedures

Principles

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

Page 43: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Software Engineering Processes and Procedures

HardwareEngineering

Configuration Management

QualityAssurance

SoftwareEngineering

TranslateRequirementsinto objectsand developobject model

Create state diagram

for each object

DevelopData Flow

Diagram foreach state

001 002 003

Formal Inspection

004

Baselined SoftwareRequirements Document

ResponsibleGroup

Baseline SoftwareDesign Document

006

* - the processes and procedures defined in this slide apply to the software design phase of a complex software project.

Page 44: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Software Engineering Processes and Procedures

User

Math LibraryManagement

Task Monitor

LocalContractor Task

Plan

Data FlowDiagram

For Design

Code

001

005 006

008

User Needs

ResponsibleGroup

BaselineRoutine

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

FormalInspection

004

002

Page 45: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Tools

AnalysisTools

DesignTools

CodingTools

TestingTools

ReverseEngineering

Tools

Configuration Management Tools

Project/Process Management Tools

Documentation Tools

VERTICAL

TOOLS

HORIZONTAL

TOOLS

Page 46: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.
Page 47: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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.

Page 48: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

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

Page 49: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Footnotes

Page 50: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.

Glossary

Page 51: Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 - Background and Introductory Information –Software Engineering.