Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

SOFTWARE ENGINEERING Errors in computer software can have

devastating effects.
Importance of Software Engineering

Complex systems need a disciplined approach


for designing, developing and managing them. SOFTWARE CRISIS

TIME 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
COST QUALITY few hours later.

• The agency said it reverted to backup


equipment as engineering worked on the
TIME – kailangan iconsider yung time sa system.
paggagawa ng software, para malaman kung • The problem did not create a safety issue but
kalian yung deadline or yung time kung could cause delays in flights.
hanggang kalian magagagawa yung software

COST – yung cost ng software, or paggawa ng


software Example 2: Ariane 5 Explosion

QUALITY – kailangan quality, hindi bad quality • European Space Agency spent 10 years and $7
billion to produce Ariane 5.

• Crash after 36.7 seconds.


SOFTWARE DEVELOPMENT CRISES
• Caused by an overflow error. Trying to store a
Projects were: 64-bit number into a 16-bit space.
• Late – di natapos on time

• Over budget – hindi sakto sa budget yung Example 3: 1992, London Ambulance Service
total nung software
• Considered the largest ambulance service in
• Unreliable – pag mali yung mga nalagay sa the world.
software like yung sources
• Overloaded problem.
• Difficult to maintain – di na mamaintain yung
software, di nauupdate on time • It was unable to keep track of the ambulances
and their statuses. Sending multiple units to
• Performed poorly - di nagana ng maayos, some locations and no units to other locations.
kulang sa test?
• Generates many exceptions messages.

• 46 deaths.
Software errors….the cost
CUSTOMIZED OR BBESPOKE PRODUCTS

Therefore… - Commissioned by a specific customer to


meet their own needs
A well-disciplined approach to software
- Embedded control systems
development and management is necessary.
- Specification of what the software
This is called engineering.
should do is owned by the customer for
the software and they make decisions
on software changes that are required
 the term software engineering first appeared
in the 1968 NATO

Software Engineering Conference and was SOFTWARE ENGINEERING vs COMPUTER


meant to provoke thought regarding what was SCIENCE
then called the “software crisis”
Computer Science is no more about computers
 “.. An engineering discipline that is concerned than astronomy is about telescopes - edger
with all aspects of software production from the dijkstra
early stages of system specification to
maintaining the system after it has gone into
use.” Sommerville, Computer Science

pg.7 - Theory
- Fundamentals

Software Engineering

- Practicalities of software design,


development and delivery

SOFTWARE ENGINEERING vs SYSTEMS


ENGINEERING

Systems Engineering

- Interdisciplinary engineering field


(computer, software, and process eng)
- Focuses on how complex engineering
TYPES OF SOFTWARE projects should be designed and
managed
GENERIC PRODUCTS - All aspects of computer-based systems
development: HW + SW + Process
- Stand-alone systems, marketed and
- Older than SWE
sold to customers
- Ex. PC Software such as graphic Software Engineering
programs
- Specification is owned by the software - Deals with design, development and
developer and decisions on software delivery of SW
change are made by the developer - Part of Systems Engineering
What are the key challenges facing software
engineering?
QUESTIONS
- Coping with increasing diversity,
What is software?
demands for reduced delivery times
- Computer programs and associated and developing trustworthy software.
documentation. Software products may
be developed for a particular customer
What are the costs of software engineering?
or may be developed for a general
market. - Roughly 60% of software costs are
development costs, 40% are testing
What are the attributes of good software?
costs. For custom software, evolution
- Good software should deliver the costs often exceed development costs.
required functionality and performance
What are the best software engineering
to the user and should be maintainable,
techniques and methods?
dependable and usable.
- While all software projects have to be
What is software engineering?
professionally managed and developed,
- Software engineering is an engineering different techniques are appropriate for
discipline that is concerned with all different types of system. For example,
aspects of software production. games should always be developed
using a series of prototypes whereas
What are the fundamental software safety critical control systems require a
engineering activities? complete and analyzable specification
- Software specification, software to be developed. You can’t, therefore,
development, software validation and say that one method is better than
software evolution. another.

What is the difference between software


engineering and computer science? What differences has the web made to software
engineering?
- Computer science focuses on theory
and fundamentals; software - The web has led to the availability of
engineering is concerned with the software services and the possibility of
practicalities of developing and developing highly distributed service-
delivering useful software. based systems. Web-based systems
development has led to important
What is the difference between software advances in programming languages
engineering and system engineering? and software reuse.
- System engineering is concerned with
all aspects of computer-based systems
development including hardware, SOFTWARE PROCESS
software and process engineering. Process Activity
Software engineering is part of this
more general process.
SPECIFICATION – what does the customer COST OOF SOFTWARE ENGINEERING
needs? ; What are the constraints?
 Depends on:
DEVELOPMENT – Design and programming
 The process used, and
VALIDATION – Checking whether it meets
 The type of software being
requirements
developed.
EVOLUTION – Modifications (customer/market)
 Each generic approach has a different profile
of cost distribution.

SOFTWARE PROCESS MODEL  Roughly 60% of costs are development costs,


40% are testing costs.
Description of the software process that
represents one view, such as the activities, data  For custom software, evolution costs often
or roles of people involved. exceed development costs.

WORKFLOW – activities = human actions; what


CASE
is input, output, and dependencies
Computer Aided Software Engineering
DATAFLOW – activities = transformations of
information; how the input is transformed into Programs that support:
output
 Requirements analysis.
ROLE/ACTION – what is the role of people
involved in each step of the process?  System modeling.

 Debugging.

MODELS  Testing.

Waterfall Approach

Iterative Development ATTRIBUTES OF A GOOD SOFTWARE

Component-Based Software Engineering – Functional attributes (performance; what the


CBSE; assembled from existing components system does).

Non-functional attributes (quality; how the


system does it).

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 MODELS OF SOFTWARE ENGINEERING
by target users. Efficient to use the system by
Why have a model
users to accomplish a task. Satisfying to use by
intended users. The goals of a model

Look at a few models


CHALLENGES FACING SOFTWARE ENGINEERING What was NT’s model
Heterogeneity – different computers, different
platforms, different support systems; software
needs to cope with this variability WHY HAVE A MODEL

DELIVERY - Businesses are more responsive Software has become vital in our everyday life
(supporting software needs to evolve as Software programs are large complicated beasts
rapidly); software needs to be delivered in
shorter time without compromising quality. - NT started out small. Today not one
TRUST - Software is a part of many aspects of single person can grasp all of NT.
our lives (work, study, leisure); Software needs A model recognize that Software Engineering is
to demonstrate that it can be trusted by users. more than just programming

Recognize product life cycles

- Various requirements specification


SOFTWARE LIFECYCLE phases
- Design phases
A software engineering lifecycle model - Coding and testing phases
describes how one might put structure on the - Maintenance phase (bug fixes and
software engineering activities revisions)
The classic lifecycle model is the waterfall A model helps recognize and define the division
model (roughly due to Royce in 1956), which is of labor
structured by a set of activities and is inherently
document-driven - Individual responsibilities (program
managers, software design engineers,
Limited feedback increases risk UI designers, testers, product support,
“You start at the top and it’s all downhill from internationalization, marketing, etc.)
there.” [uncertain origin] - How big should a team be (look at
MMM)
The cost of fixing errors at later lifecycle phases - Parallel work efforts
is much higher than at earlier stages - Does a one person team need a model
- Boehm’s 1976 data still hold — the Provide a common means of communication
differences are often an order of between all involved parties
magnitude
- Must increase feedback in the lifecycle Documentation is vital
to reduce these costs (and other risks) - Comments in the code is not sufficient
documentation
- Dave Cutler’s NT design workbook is
now part of the Smithsonian
WATERFALL MODEL

WHY NOT HAVE A MODEL

Avoids bureaucracy

Cost of an inadequate or improperly applied


model

- Build the wrong product


- Build something that doesn’t work
- Build something that cannot be tested
- Build something that cannot be What it is
maintained What it tried to accomplish
- Not take into account personnel
changes, and requirement changes - Account for more than programming
- Feedback between phases
GOALS OF A GOOD MODEL
Benefits
The obvious “Provide a framework for building
a solidly engineered product” Limitations

A paradigm that adds discipline and order to - Limited feedback increases risk
software development - A requirement change can have a major
cost downstream
Provides a formal mechanism to clarify, track,
and modify the product requirements
throughout the product life cycle BOEHM’S SPIRAL MODEL
Provide a guideline for engineers to use in the
product life cycle

Provide feedback into the development cycle

Compel engineers to want to use it

- Doesn’t get in the way


- Convinces them that they will build a
better product
- Be easy to understand and use

Keep everyone organized

Many more “common sense” reasons What it is

What it tried to accomplish


FIRST A SIMPLE MODEL (WATERFALL) - Recognize that Software Engineering is
a process of iterative refinement
- Allow for alternate designs and THE NT ALBATROSS
implementations
Maintenance cost including maintaining
Benefits compatibility between releases is huge

Limitations - With later versions of NT compatibility


is a huge burden.
Maintaining old API sets
LESSONS FROM THE MODELS Apps that improperly used the
API set in earlier releases
Each trying to capture or dictate how a project - Unforeseen interaction between pieces
should be run also increases maintenance costs
Even a good properly applied model cannot fix a Small changes break seemingly
flawed design unrelated things, for example the handle table
Not any model offers the 100% solution change in NT 5.0

Often borrowing from one or more model is Controlling kernel stack usage is
necessary always hard

Just as Software Engineering is full of MP performance problems crop


compromises so is using a Software Engineering up constantly when two pieces interact
model

So take these models with a grain of salt and SOFTWARE ENGINEERING REQUIREMENTS
use only those parts that apply to your situation
Two words that bear repeating “Risks” and
“Constraints”
THE NT EXPERIENCE Specifying requirements
Daily builds - What makes up a requirement
- Incremental and clean builds - What is not in a requirement
- Catch build errors - Ways of specifying requirements
- Without daily builds entropy would rule - One person’s requirement is usually
someone else’s design
Dog food

- NT developers ran the latest build on


their own system. Some Angles on Requirements
- Performance and functional inadequate What vs. How
features were usually taken care of in a
timely fashion System requirements vs. Software requirements
- Broken pieces had to get fixed
Functional vs. non-functional

Requirements change

Keep it realistic
Expect unintended side affects (i.e., customers It is an iterative process, a good requirements
will use the system in ways you can never writer bridges the gap between customer and
imagine) implementer

Any method for dictating requirements is only


as good as the people are willing to use it
EXAMPLES

Successful projects that met their requirements


Who Writes the Requirements and Has Major
- Caller ID, Call forwarding, etc.
Input
- TCAS
Program Managers
Past failures or future failures (?)
Customers
- Therac-25 (An Investigation of the
Therac-25 Accidents, by Nancy Leveson Software Design Engineers
and Clark S. Turner, 1993)
Software Test Engineers
Computerized radiation therapy
Performance Engineers
machine
Realistic
Did not follow proper software
engineering practices KISS
- Internet security
- Tower of Babel
PROTOTYPING

Building the throw away model


WHAT SHOULD BE IN A REQUIREMENT
Building models that demonstrate properties of
Desired effects of the system the real product
Know your intended customers and speak their Building something faster and cheaper than the
language real product
Likewise know the implementers and speak WHY PROTOTYPE
their language
To reduce risk
Justify your requirements so that the next
person understands your reasoning To learn while you have the luxury

- How people will use and interact with


the product
HOW TO SPECIFY REQUIREMENTS - How to build the real product
Natural Language to To tweak the design before it is too late
Structured Natural Language to - Change requirements
- Change interface
Formal notation
- Change architecture
The goal is to convey enough information to MISSING
judge the design and the process necessary to
The code is missing
build the product
- Typically most of the error handling is
missing
EXAMPLES - May not be extensible, maintainable or
just well designed
The wooden Palm Pilot
- Typically not fully featured
Model cars
It maybe of limited size and
Storyboards scope

Mock-ups (space station, airplanes, kitchens, It maybe slow


etc.)
The documentation, testing, performance, and
A subset of an API set can be a prototype support considerations are missing

A non-fully featured app can be a prototype


(then it can act as a sales tool)
When do we do a prototype and when to start
There is really a wide spectrum from paper and stop prototyping
design notes to full featured prototypes (for
When potential payoff outweighs the cost of
example a building architects sketches to stick
doing a prototype
models)
Finish the prototype when you’ve learned what
Building construction sometimes erects a
you wanted to know
sample wall (to learn how to build the real
product and ensuring it meets its requirements) Also move on when other risks become more
pressing

- Slipping your schedule and spending


SOFTWARE PROTOTYPE
too much money on development
Isn’t the previous version a prototype
But resist jumping into the coding phase before
- It can often be used as a basis for you’re really ready
prototyping
- What to do in the absence of a previous
version Who builds, sees and uses the prototype

Screenshots and storyboards The program manager

Languages and tools for prototyping The customer to test usage scenarios

Not everything is easy to prototype The developer to see what to build

- UI’s are easier Testing, product support, et cetera


- API sets are hard
RISKS

Slows the process

- A longer time to market often translates


to decreased revenue
- Software Design Engineers don’t like to
wait for Program Management to say
what to build
- Software Design Engineers don’t listen
to Program Management

Program Management believes their prototype


should be the product

Program Management convinces upper


management that the product is possible
because the prototype works

- Sad but true, this occurs more often


than it should

You might also like