Software Engineering SW Cost Estimation Slide 1 Software Engineering Software Cost Estimation.
Introduction to Software Engineering. Introduction to Software Engineering Outline nPart 1 -...
-
Upload
chloe-newton -
Category
Documents
-
view
226 -
download
2
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