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

Post on 23-Dec-2015

226 views 2 download

Tags:

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

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

Principles

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

Selected Software Engineering Principles

Rigor and Formality

Modularity

Abstraction

Anticipation of Change

Generality

Incrementality

Methods & Techniques

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

Principles

Basic Problem Solving Flow

WHAT

HOW

DO

TEST

USE

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

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

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

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

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

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

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

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;

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

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

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

Maintenance

Production system Operations

Software changes

Change requests/trouble reports

Maintenance

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

PerformTesting

Verification& Validation

RequirementsAnalysis

Design TestingCode

Validate

Verify

Validate

Validate

VerifyVerifyVerify

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

Development Methods & Techniques

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

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

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

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

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

Quality Assurance

Process Reviews

ProductReviews

Activity being

performed

ErrorsErrors

Standards

Products Procedures

Project Tracking & OversightProject Planning

Configuration Management

Quality Assurance

Management Methods & Techniques

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

Life-Cycle Methodologies

Processes &procedures

Automatedtools

Principles

Methods &techniques

Life-cyclemethodologies

Life-cycle Models

Waterfall Incremental Spiral

SystemEngineering

RequirementsAnalysis

DesignSoftware

ImplementationTesting Integration Maintenance

Verification & Validation

The Waterfall Life-cycle

Systems Engineering

Design

Code

Test

Maintenance

Req Analysis

Integration

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

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

Processes & Procedures

Principles

Methods &techniques

Life-cyclemethodologies

Processes &procedures

Automatedtools

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.

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

Tools

AnalysisTools

DesignTools

CodingTools

TestingTools

ReverseEngineering

Tools

Configuration Management Tools

Project/Process Management Tools

Documentation Tools

VERTICAL

TOOLS

HORIZONTAL

TOOLS

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