0% found this document useful (0 votes)
10 views

Module 1 - Fundamentals of Software Engineering

Uploaded by

yfzfzkcnrg
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Module 1 - Fundamentals of Software Engineering

Uploaded by

yfzfzkcnrg
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 90

CMT 311 -

FUNDAMENTALS OF
SOFTWARE
ENGINEERING
Module 1: Introduction to Software
Engineering
Academic norms (Pls read it, very important!!!)
• Choices have consequences. To Fail or to Pass well in an exam is an Option/Choice. Lets
aspire for 100% Pass rate in this unit.
• Class will be starting on time. Student lateness will be allowed 10 minutes after starting
the class.
• During the learning process, all the hand phones must be off or silent.
• CAT dates will be announced a week earlier
• Plagiarism not allowed for all assignments and final examination.
• The attendance minimum 75 percent of the total learning process
• Lectures will be offered on100% on physical basis though virtual classes can still be
offered.
• Quality of Education = Q of Students x Q of Faculty x Q of Learning
Environment
• Remain Relevant. How do you stay relevant ? Learn, Build Competencies &
Build a Brand, You as a brand.Module 1: Introduction to Software Engineering 2
3

Learning Objectives
By the end of this module, you will...

Understand what software engineering is.


 Understand why software engineering is important.
 Know answers to key questions related to the software
engineering discipline.

Module 1: Introduction to Software Engineering


4

Activity
Virtually all countries
Think about all the devices and systems depend on complex
that you encounter in your everyday life computer-based
…which have software controlling them .systems

List as many as you can

Module 1: Introduction to Software Engineering


5

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,


developing and managing them.

Module 1: Introduction to Software Engineering


6

Software Development Crises

Projects were:
• Late
• Over budget
• Unreliable
• Difficult to maintain
• Performed poorly

Module 1: Introduction to Software Engineering


7

Software errors….the cost


Errors in computer software can have
devastating effects.

Module 1: Introduction to Software Engineering


8

Software Crisis

Example 1: 2009,Computer glitch delays flights

Saturday 3rd October 2009-London, England (CNN)

• Dozens of flights from the UK were delayed Saturday


after a glitch in an air traffic control system in Scotland,
but the problem was fixed a few hours later.
• The agency said it reverted to backup equipment as
engineering worked on the system.
• The problem did not create a safety issue but could cause
delays in flights.
• Read more at:
http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flig
hts.delayed Module 1: Introduction to Software Engineering
9

Software Crisis

Example 2: Ariane 5 Explosion

• European Space Agency spent 10 years and $7


billion to produce Ariane 5.

• Crash after 36.7 seconds.

• Caused by an overflow error. Trying to store a 64-bit


number into a 16-bit space.

• Watch the video:


http://www.youtube.com/watch?v=z-r9cYp3tTE

Module 1: Introduction to Software Engineering


10

Software Crisis

Example 3: 1992, London Ambulance


Service

• Considered the largest ambulance service in the


world.

• Overloaded problem.

• It was unable to keep track of the ambulances and


their statuses. Sending multiple units to some
locations and no units to other locations.

• Generates many exceptions messages.

• 46 deaths.
Module 1: Introduction to Software Engineering
Software Crisis
• The difficulty of writing correct, understandable, and
verifiable computer programs

Module 1: Introduction to Software Engineering 11


Software Failures
We waste billions of dollars each year on entirely preventable mistakes

Sources: Business Week, CEO Magazine, Computerworld, InfoWeek, Fortune, The New York
Times, Time, and The Wall Street Journal.
Module 1: Introduction to Software Engineering 12
Software Disasters
• 20 Famous Software Disasters
Source: http://www.devtopics.com/20-famous-software-disasters/

1. Mariner Bugs Out (1962)


Cost: $18.5 million
Disaster: The Mariner 1 rocket with a space probe
headed for Venus diverted from its intended flight path
shortly after launch. Mission Control destroyed the
rocket 293 seconds after liftoff.
Cause: A programmer incorrectly transcribed a
handwritten formula into computer code, missing a
single superscript bar. Without the smoothing function
indicated by the bar, the software treated normal
variations of velocity as if they were serious, causing
faulty corrections that sent the rocket off course

Module 1: Introduction to Software Engineering 13


15. Y2K (1999)
Cost: $500 billion
Disaster: One man’s disaster is another man’s
fortune, as demonstrated by the infamous Y2K
bug. Businesses spent billions on programmers to
fix a glitch in legacy software. While no significant
computer failures occurred, preparation for the Y2K
bug had a significant cost and time impact on all
industries that use computer technology.
Cause: To save computer storage space, legacy
software often stored the year for dates as two
digit numbers, such as “99″ for 1999. The software
also interpreted “00″ to mean 1900 rather than
2000, so when the year 2000 came along, bugs
would result.

Module 1: Introduction to Software Engineering 14


• Blue Screen of Death (or BSOD) refers to the error message displayed in
Microsoft Windows operating systems.

During the presentation of a Windows 98


beta at COMDEX in April 1998, the demo
computer crashed as one of the assistants
tried to connect a scanner in
demonstrating the Windows support for
Plug & Play devices. With the BSoD
message on slideshow display, the
audience had a big laughter and
applauded, to which Mr. Gates responded:
“That must be why we’re not shipping
Windows 98 yet.”

Module 1: Introduction to Software Engineering 15


• These problems will become worse because of the
pervasive use of software in our civic infrastructure.

Module 1: Introduction to Software Engineering 16


Factors of software development

• Factors affecting the success of software development


i. Complexity:
• The problem domain is difficult
• The development process is very difficult to manage
• Software offers extreme flexibility
• Software is a discrete system
• Continuous systems have no hidden surprises (Parnas)
• Discrete systems have!

Module 1: Introduction to Software Engineering 17


ii. Change:
• The “Entropy” of a software system increases with each change: Each
implemented change erodes the structure of the system which makes the
next change even more expensive (“Second Law of Software Dynamics”).
• As time goes on, the cost to implement a change will be too high, and the
system will then be unable to support its intended task. This is true of all
systems, independent of their application domain or technological base.

Module 1: Introduction to Software Engineering 18


Iron Triangle

Module 1: Introduction to Software Engineering 19


Iron Triangle

 What happens when you


break the triangle?
 1) The project gets canceled.
 15% of projects are cancelled before they deliver a system.
 A study of 1,027 IT projects cited scope management
related to serial practices as the single largest contributing
factor to project failure in 82% of the projects and was given
a overall weighted failure influence of 25%.

Module 1: Introduction to Software Engineering 20


Iron Triangle
 What happens when you
break the triangle?

2) The Project is delivered late, over budget, or both

 According to the Chaos Report 51% of projects are


challenged (severely over budget and/or late), with
an average cost overrun of 43%.

Module 1: Introduction to Software Engineering 21


Iron Triangle
 What happens when you
break the triangle?

3) The Project delivers poor quality software.

 When development teams are forced to deliver more functionality


than they have time or resources for, they are often motivated to
take short cuts which inevitably result in poor quality.

Module 1: Introduction to Software Engineering 22


Iron Triangle

• What happens when you


break the triangle?

4) The project under delivers.

• The team fails to deliver all of the required


functionality.

Module 1: Introduction to Software Engineering 23


Iron Triangle…
 What to do about it?

 Recognize that the iron triangle must be respected.


 So
 Vary the Scope
 Vary the Schedule
 Vary the Resources
 Vary two or more factors

Module 1: Introduction to Software Engineering 24


25

Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.

Module 1: Introduction to Software Engineering


From Software Development
to Software Engineering
Towards the engineering of software development

• How to develop high quality software under the constraints of time


and cost?
• software development skill training
• Qualified developers recruitment
• Development process reengineering
• ….
• We need a systematic approach

Module 1: Introduction to Software Engineering 27


Software Engineering
• Software Engineering:
• The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software, and the study of
these approaches; that is, the application of engineering to software. (IEEE
Computer Society’s Software Engineering Body of Knowledge )

Module 1: Introduction to Software Engineering 28


Understand the Software Engineering

1. It is a modeling activity
• Model: an abstract representation of a system
• Software engineers need to understand the environment in which the
system has to operate
• Software engineers need to understand the systems they could build,
to evaluate different solutions and trade-offs

Module 1: Introduction to Software Engineering 29


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]
Module 1: Introduction to Software Engineering 30
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

Module 1: Introduction to Software Engineering 31


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.
Module 1: Introduction to Software Engineering 32
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

Module 1: Introduction to Software Engineering 33


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

Module 1: Introduction to Software Engineering 34


Software Engineering Relationships

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

Principles

Module 1: Introduction to Software Engineering 35


Selected Software Engineering Principles

• Rigor and Formality


• Modularity
• Abstraction
• Anticipation of Change
• Generality
• Incrementality

Module 1: Introduction to Software Engineering 36


Methods & Techniques

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

Principles

Module 1: Introduction to Software Engineering 37


Basic Problem Solving Flow

WHAT

HOW

DO

TEST

USE

Module 1: Introduction to Software Engineering 38


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
Module 1: Introduction to Software Engineering 39
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

Module 1: Introduction to Software Engineering 40


Development Methods & Techniques

Software Requirements System Requirements


Engineering Analysis
Design
Software
Implementation
Testing Integration Maintenance

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
Module 1: Introduction to Software Engineering 41
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?
Module 1: Introduction to Software Engineering 42
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 forModule
Phased Delivery
1: Introduction to Software Engineering 43
Object Oriented
Development Methods & Techniques

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

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

Module 1: Introduction to Software Engineering 44


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

Software Engineering

 The term software engineering first appeared in the 1968 NATO


Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..

 “.. An engineering discipline that is concerned with all aspects of


software production from the early stages of system specification
to maintaining the system after it has gone into use.” Sommerville,
pg.7

Module 1: Introduction to Software Engineering


Woman and Software Engineering

Ada Lovelace ( 1815-1852 ) Grace Murray Hopper


(1906-1992)

The First Programmer The Inventor of Cobol

Module 1: Introduction to Software Engineering 46


47

What is Software?

Data Softwar Program


e s

System
Documentation
Document
ation
User
Documentation

Module 1: Introduction to Software Engineering


48

Types of Software

• Generic products
• Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
• Examples – PC software such as graphics programs, project management tools; CAD
software; software for specific markets such as appointments systems for dentists.
• The specification of what the software should do is owned by the software developer and
decisions on software change are made by the developer.

• Customized or bespoke products


• Software that is commissioned by a specific customer to meet their own needs.
• Examples – embedded control systems, air traffic control software, traffic monitoring
systems.
• The specification of what the software should do is owned by the customer for the software
and they make decisions on software changes that are required.

Module 1: Introduction to Software Engineering


49

Software Engineering vs. Computer Science

“Computer science is no more about computers than


astronomy is about telescopes.” Edsger Dijkstra

Computer Science Software Engineering

• Practicalities of software
• Theory.
• Fundamentals. design, development and
Module 1: Introduction to Software delivery.
Engineering
50

Software Engineering vs. Systems Engineering

Systems Engineering:
 Interdisciplinary engineering field (computer, software, and process eng.).
 Focuses on how complex engineering projects should be designed and managed.

Systems Engineering Software Engineering

• All aspects of computer- • Deals with the design,


based systems development and delivery
development: HW + SW + of SW.
Process. • Is part of Systems
• Older than SWE. Module 1: Introduction to SoftwareEngineering.
Engineering
Frequently asked questions about software
engineering
Question Answer

What is software? Computer programs and associated documentation. Software products may be
developed for a particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and performance to
the user and should be maintainable, dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is concerned with all
aspects of software production.
What are the fundamental software engineering activities? Software specification, software development, software validation and software
evolution.
What is the difference between software engineering and Computer science focuses on theory and fundamentals; software engineering is
computer science? concerned with the practicalities of developing and delivering useful software.

What is the difference between software engineering and System engineering is concerned with all aspects of computer-based systems
system engineering? development including hardware, software and process engineering. Software
engineering is part of this more general process.

Module 1: Introduction to Software Engineering 51


Frequently asked questions about software
engineering
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often exceed
development costs.
What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for
different types of system. For example, games should always be
developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable specification
to be developed. You can’t, therefore, say that one method is
better than another.

What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.

Module 1: Introduction to Software Engineering 52


53

What is a Software Process?

 Activities and results that produce a software product:

SW Process Activity What is going on there?

What does the customer need?


Specification What are the constraints?

Development Design & programming.

Validation Checking whether it meets requirements.

Evolution Modifications (e.g. customer/market).

Module 1: Introduction to Software Engineering


54

What is a Software Process Model?

 Description of the software process that represents one view, such


as the activities, data or roles of people involved.

Examples of views Focus on…

Activities = human actions.


Workflow What is input, output, and dependencies.

Activities = transformations of information.


Dataflow How the input is transformed into output.
What is the role of people involved in each step of
Role/Action the process?

Module 1: Introduction to Software Engineering


55

Software Process Models

Component-Based Software
Waterfall approach Iterative development
Engineering CBSE

assembled form existing


components

Module 1: Introduction to Software Engineering


56

The Cost of Software Engineering

 Depends on:
 The process used, and
 The type of software being developed.

 Each generic approach has a different profile of cost distribution.

 Roughly 60% of costs are development costs, 40% are testing


costs.

 For custom software, evolution costs often exceed development


costs.
Module 1: Introduction to Software Engineering
57

Cost distribution
Custom software development (Bespoke)
Waterfall Model
Software Model
Cost units 0 25 50 75 100

Cost distribution
Software development activity Specification Design Development Integration and testing

Iterative Development
0 25 50 75 100

Specification Iterative Development System testing

Component-based Software Engineering


0 25 50 75 100

Specification Development Integration and testing

Development and evolution costs for long-lifetime systems


0 100 200 300 400

Module 1: Introduction to Software Engineering


System development System evolution
58

Cost distribution
Generic software development

0 25 50 75 100

Specification Development System testing

Product development costs

Module 1: Introduction to Software Engineering


59

What is CASE?

 Computer Aided Software Engineering.

 Programs that support:



Requirements analysis

System modeling

Debugging

Testing

Module 1: Introduction to Software Engineering


60

Attributes of good software

 Functional attributes (performance; what the system does).


 Non-functional attributes (quality; how the system does it).

Product Characteristic Description


Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability, security, safety.
Efficiency Response time, processing time, memory utilization.
Usability Easy to learn how to use the system by target users.
Efficient to use the system by users to accomplish a task.
Satisfying to use by intended users.

Module 1: Introduction to Software Engineering


61

Activity
 What are the key attributes for..
Interactive game Banking system Cardiac monitor in an ICU unit

Players, score, scenes, theme. Client accounts, stocks bonds, heart rate, temperature, blood
money transfers. pressure.

Module 1: Introduction to Software Engineering


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

Module 1: Introduction to Software Engineering 62


Development Methods & Techniques

Software System Requirements


Engineering Analysis
Design
Software
Implementation
Testing Integration Maintenance

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

Module 1: Introduction to Software Engineering 63


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;
Module 1: Introduction to Software Engineering 64
Development Methods & Techniques

Testing System Requirements


Engineering Analysis
Design
Software
Implementation
Testing

Verification & Validation


Integration Maintenance

Produce Source Code


test Expected Results
plans and
procedures
Conduct
tests &
Evaluate
Result

Test plan and procedures

Deliverable Software
Debug & fix

Module 1: Introduction to Software Engineering 65


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
Module 1: Introduction to Software Engineering 66
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

Module 1: Introduction to Software Engineering 67


Development Methods & Techniques

Integration System Requirements


Engineering Analysis
Design
Software
Implementation
Testing

Verification & Validation


Integration Maintenance

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

Module 1: Introduction to Software Engineering 68


Development Methods & Techniques

Maintenance System Requirements


Engineering Analysis
Design
Software
Implementation
Testing

Verification & Validation


Integration Maintenance

Production
system Operations

Change requests/trouble reports

Perform Maintenance
Testing

Software changes
Module 1: Introduction to Software Engineering 69
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

Module 1: Introduction to Software Engineering 70


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.

Module 1: Introduction to Software Engineering 71


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
Module 1: Introduction to Software Engineering 72
Management Methods & Techniques

Management Plan Document Project Planning


Project Tracking & Oversight

NASA-STD-2100 [4]
Quality Assurance
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

Module 1: Introduction to Software Engineering 73


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

Module 1: Introduction to Software Engineering 74


Project Tracking Management Methods & Techniques
Project Planning
Project Tracking & Oversight

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

Module 1: Introduction to Software Engineering 75


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

Module 1: Introduction to Software Engineering 76


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

Module 1: Introduction to Software Engineering 77


Life-Cycle Methodologies

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

Principles

Module 1: Introduction to Software Engineering 78


Life-cycle Models

System Requirements Software


Design Testing Integration Maintenance
Engineering Analysis Implementation

Verification & Validation

• Waterfall
• Incremental
• Spiral
Module 1: Introduction to Software Engineering 79
The Waterfall Life-cycle
Systems
Engineering
Req
Analysis

Design

Code

Test

Integration

Maintenance
Module 1: Introduction to Software Engineering 80
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
BuildModule
3 1: Introduction Design Code Test Integrate
Analysisto Software Engineering 81
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
Module 1: Introduction to Software Engineering 82
Processes & Procedures

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

Principles

Module 1: Introduction to Software Engineering 83


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

Module 1: Introduction to Software Engineering 84


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

Module 1: Introduction to Software Engineering 85


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

Module 1: Introduction to Software Engineering 86


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.

Module 1: Introduction to Software Engineering 87


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
Module 1: Introduction to Software Engineering 88
89

Challenges facing software engineering

Challenge Why? Software needs to ..

Different computers, different


Heterogeneity platforms, different support systems.
Cope with this variability.

Businesses are more responsive


Be delivered in shorter time
Delivery  supporting software needs to without compromising quality.
evolve as rapidly.

Software is a part of many aspects of


Demonstrate that it can be
Trust our lives (work, study, leisure).
trusted by users.
Module 1: Introduction to Software Engineering
90

References

 PRESS&SUN-BULLETIN, The Binghamton Press Co., Binghamton, NY, October


1,1999.

 “Software Hell: Is there a way out?”, BUSINESS WEEK, December 6, 1999.

 IEEE Standards Collection: Software Engineering, IEEE standard 610.12-1990, IEEE


1993.

 Sommerville, Ian “Software Engineering”, 9th edition, Addison-Wesley.

Module 1: Introduction to Software Engineering

You might also like