Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
8 views40 pages

Week15 SE

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 40

Software Engineering

WEEK 14
Software Engineering
The economies of ALL developed nations are
dependent on software.
More and more systems are software-controlled.
Software Engineering is concerned with theories,
methods and tools for professional software
development.
What is Software Engineering?

Software engineering is an engineering discipline


which is concerned with all aspects of software
production.
Software engineers should
 adopt a systematic and organized approach to their work
 use appropriate tools and techniques
Characteristics of Software

Software is engineered, not manufactured.


Software doesn’t wear out, it declines, because of
changes.
Software is complex
Where to use?

Software is used in many applications:


 system software
 application software
 engineering/scientific software
 Real-time, embedded software
 product-line software
 Web applications
 AI software
Software Engineering vs.
System Engineering

System engineering is concerned with all aspects of


computer-based systems development including
hardware, software and process engineering.
Software engineering is part of this process
Software Engineering Phases

 Definition Phase – What


 Development Phase – How
Maintenance Phase – Change
Definition (What???)

System or information engineering


Software project planning
Requirements analysis
Development (How???)

Software design
Code Generation
Software Testing
Maintenance (Change)

Correction
Adaptation
Enhancement
Prevention
Process in S.E

Software engineering encompasses a process,


management techniques, technical methods, and the
use of tools.
Major goals of software engineering are to :
 deliver project on time
 within budget
 Having required quality
 Satisfying the true needs of stakeholders
A Layered Technology

Software Engineering

tools

methods

process model

a “quality” focus
Attributes of Good Software
 The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
 Maintainability
 Software must evolve to meet changing needs
 Dependability
 Software must be trustworthy
 Efficiency
 Software should not make wasteful use of system
resources
 Usability
 Software must be usable by the users for which it was
designed
Software Engineering Process Models

Description of a real-world process that abstracts


from irrelevant details.
Description which is used to guide or control the
execution of a process.
Also known as:
 Software Development Life Cycle Models
 Process Models
Software Development Life Cycle Models

Software life cycle models describe phases of the


software cycle and the order in which those phases
are executed.
There are tons of models, and many companies
adopt their own, but all have very similar patterns.
General Life Cycle Model
General Life Cycle Model

Each phase produces deliverables required by the


next phase in the life cycle.
Requirements are translated into design.
Code is produced during implementation that is
driven by the design.
Testing verifies the deliverable of the
implementation phase against requirements.
Requirements Phase

Business requirements are gathered in this


phase.
Meetings with managers, stake holders and
users are held in order to determine the
requirements.
 Who is going to use the system?
 How will they use the system?
 What data should be input into the system?
 What data should be output by the system?
Requirements Phase contd…

Produce a nice big list of functionality that the


system should provide, which describes functions
the system should perform, business logic that
processes data, what data is stored and used by the
system, and how the user interface should work.
The overall result is the system as a whole and how
it performs, not how it is actually going to do it.
Types of Requirements

Functional Requirements
 That define the function of the project
Non-Functional Requirements
 That define property of the project
Design Phase

The software system design is produced from the


results of the requirements phase.
Architects have the ball in their court during this
phase and this is the phase in which their focus
lies.
This is where the details on how the system will
work is produced.
Architecture, including hardware and software,
communication, software design are all part of the
deliverables of a design phase.
Implementation Phase

Code is produced from the deliverables of the


design phase during implementation, and this is
the longest phase of the software development life
cycle.
For a developer, this is the main focus of the life
cycle because this is where the code is produced.
Many tools exists (CASE tools) to actually
automate the production of code using information
gathered and produced during the design phase.
Testing Phase

During testing, the implementation is tested


against the requirements to make sure that the
product is actually solving the needs addressed and
gathered during the requirements phase.
Unit tests and system tests are done during this
phase.
Unit tests act on a specific component of the
system, while system tests act on the system as a
whole.
Process Model

A process model divides a process into phases or


working areas.
Phase:
 Time interval in the execution of a process in which
activities of a certain kind are executed.
Help the project manager and team to decide:
 What work should be done;
 In what sequence to perform the work.
Software Process Model

A (software/system) process model is a description


of the sequence of activities carried out in an SE
project, and the relative order of these activities.
What is Software Process?

When building a Product, it is important to go


through a series of predictable steps, road map,
that help you create a timely, and high-quality
result.

The ROAD MAP that you follow is the Software


Process.
Software Process
A set of activities whose goal is the development or
evolution of software.
Generic activities in all software processes are:
 Specification - what the system should do and its
development constraints
 Development - production of the software system
 Validation - checking that the software is what the
customer wants
 Evolution - changing the software in response to
changing demands
The Waterfall Model

The waterfall model is the classic process model – it


is widely known, understood and used.
In some respect, waterfall is the ”common sense”
approach.
Advantages

Easy to understand and implement.


Widely used and known (in theory!)
Fits other engineering process models: civil, mech etc.
Reinforces good habits: define-before- design, design-
before-code
Identifies deliverables and milestones
Document driven:
People leave, documents don’t
Works well on large/mature products and weak teams
Doesn’t reflect iterative nature of exploratory
development.
Sometimes unrealistic to expect accurate
requirements early in a project
Software is delivered late, delays discovery of serious
errors.
Difficult and expensive to change decisions,
”Swimming upstream”.
Significant administrative overhead, costly for small
teams and projects
Code-and-Fix

This model starts with an informal general product


idea and just develops code until a product is ”ready”
(or money or time runs out). Work is in random
order.
Corresponds with no plan!
Advantages

No administrative overhead


Signs of progress (code) early.
Low expertise, anyone can use it!
Disadvantages

Dangerous!
 No visibility/control
 No resource planning
 No deadlines
 Mistakes hard to detect/correct
Impossible for large projects,
 communication breakdown, chaos.
Rapid Prototyping

Key idea
 Customers are non-technical and usually don’t know what they
want.
Advantages

Reduces risk of incorrect user requirements


Good where requirements are
changing/uncommitted
Regular visible progress aids management
Supports early product marketing
Disadvantages

An unstable/badly implemented prototype often


becomes the final product.
Requires extensive customer collaboration
Costs customers time/money
Needs committed customers
Difficult to finish if customer withdraws
May be too customer specific, no broad market
Difficult to know how long project will last
Iterative

it was recognized that it is much easier, and


sometimes necessary, to develop the software if the
large projects are subdivided into smaller
components, which may thus be developed
incrementally and iteratively.
Advantages / disadvantages? Find them yourself!

You might also like