Вы находитесь на странице: 1из 60

Introduction to Software Engineering

What is Software Engineering ?

Engineering discipline that is concerned with all aspects


of software production.
Software engineering is the study of engineering to the
design, development, and maintenance of software.
It is a group of processes, steps or it is a standard or a
group of rules used to achieve a perfect system or product.
Part of the System Engineering

Prepared by: Mostafa Taher

Introduction to Software Engineering


What is Software Engineering ?

Prepared by: Mostafa Taher

Introduction to Software Engineering


Why Software Engineering is needed ?

Prepared by: Mostafa Taher

Introduction to Software Engineering


Why Software Engineering is needed ?

HW vs SW cost:

We do the least understood tasks in software


When task is simple & understood, encode it in hardware
Demand more and more of software
Prepared by: Mostafa Taher

Introduction to Software Engineering


Why Software Engineering is needed ?

Software development difficulties:

Prepared by: Mostafa Taher

Introduction to Software Engineering


Why Software Engineering is needed ?

Software development difficulties:

Prepared by: Mostafa Taher

Introduction to Software Engineering


Why Software Engineering is needed ?

So we need to:

Improve Software Quality


Reduce Software Costs/Risks
Faster delivery of software
Make users trust in software product(s)

Prepared by: Mostafa Taher

Software Development Models


Intro

Software development methodologies


Or

Software development process models

Prepared by: Mostafa Taher

Software Development Models


Intro

Prepared by: Mostafa Taher

Software Development Models


Intro

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.
Prepared by: Mostafa Taher

Waterfall Model

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

The waterfall model is a sequential design process, often used in software


development processes, in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases of Conception.

The following phases are followed in order:

Requirements specification resulting in the product requirements document.


Design resulting in the software architecture.
Construction (implementation or coding) resulting in the actual software.
Integration
Testing and debugging
Installation
Maintenance

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

Time spent early in the software production cycle can


lead to greater economy at later stages.
A bug found in the early stages (such as requirements
specification or design) is cheaper in money, effort, and
time, to fix than the same bug found later in the process.

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

One phase has to be complete before moving onto the


next phase
Inflexible partitioning of the project into distinct stages
makes it difficult to respond to changing customer
requirements.
Therefore, this model is only appropriate when the
requirements are well-understood and changes will be
fairly limited during the design process.

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

Few business systems have stable requirements


The waterfall model is mostly used for large systems
engineering projects where a system is developed at
several sites

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

Advantages
Easy to use due to its simple design.

Easy to manage each phase has specific deliverables and


a review process.
Phases are processed and completed one at a time.
Works well for smaller projects where requirements are
very well understood.

Prepared by: Mostafa Taher

Software Development Models


Waterfall Model

Disadvantages:
Adjusting scope during the life cycle can kill a project
No working software is produced until late during the life
cycle.
High amounts of risk and uncertainty.
Poor model for complex projects.
Poor model for long and ongoing projects.
Poor model where requirements are at a moderate to
high risk of changing.
Prepared by: Mostafa Taher

V-Models

Prepared by: Mostafa Taher

Software Development Models


V-Model

The V-model represents a software development


process (also applicable to hardware development)
which may be considered an extension of the waterfall
model.
Instead of moving down in a linear way, the process
steps are bent upwards after the coding phase, to form
the typical V shape

Prepared by: Mostafa Taher

Software Development Models


V-Model

The V-Model demonstrates the relationships between


each phase of the development life cycle and its
associated phase of testing.

Prepared by: Mostafa Taher

Software Development Models


V-Model

Prepared by: Mostafa Taher

Software Development Models


V-Model

The deliverables from the first 3 phases of the lifecycle


forms the input for testing process.
These deliverables are in the form of specification
documents.

Prepared by: Mostafa Taher

Software Development Models


V-Model

Unit Testing -> In computer programming, unit testing is a


method by which individual units of source code are tested to
determine if they are fit for use.
Integration Testing -> In integration testing the separate
modules will be tested together to expose faults in the
interfaces and in the interaction between integrated
components.

Prepared by: Mostafa Taher

Software Development Models


V-Model

User Acceptance Testing-> Is the phase of testing used


to determine whether a system satisfies the
requirements specified in the requirements analysis
phase.
The acceptance test phase is the phase used by the
customer to determine whether to accept the
software/system or not.

Prepared by: Mostafa Taher

Software Development Models


V-Model

Advantages:
Simple and easy to use.
Each phase has specific deliverables.
Each deliverable must be testable
Project management can track projects by milestones
Higher chance of success over the waterfall model due
to the development of test plans early on during the life
cycle.
Works well for small projects where requirements are
easily understood.
Prepared by: Mostafa Taher

Software Development Models


V-Model

Disadvantages:
Very rigid, like the waterfall model.
Little flexibility and adjusting scope is difficult and
expensive.
Software is developed during the implementation phase,
so no early prototypes of the software are produced.
Model doesnt provide a clear path for problems found
during testing phases

Prepared by: Mostafa Taher

Iterative and incremental development

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

The basic idea behind this method is to develop a


system through repeated cycles (iterative) and in smaller
portions at a time (incremental)
Allowing software developers to take advantage of what
was learned during development of earlier parts or
versions of the system.
Learning comes from both the development and use of
the system
At each iteration, design modifications are made and
new functional capabilities are added.

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Incremental delivery:
Rather than deliver the system as a single delivery, the
development and delivery is broken down into
increments with each increment delivering part of the
required functionality.
User requirements are prioritised and the highest priority
requirements are included in early increments.
Once the development of an increment is started, the
requirements are frozen though requirements for later
increments can continue to evolve.

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Contrast with Waterfall development:


Waterfall development completes the project-wide work-products of
each discipline in one step before moving on to the next discipline in
the next step.
Business value is delivered all at once, and only at the very end of
the project.
Backtracking is possible in an iterative approach.

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Advantages:
Generates working software quickly and early during the software
life cycle.
This model is more flexible - less costly to change scope and
requirements.
It is easier to test and debug during a smaller iteration.
In this model customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and
handled during its iteration.

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

Disadvantages:
Needs good planning and design.
Needs a clear and complete definition of the whole system before it
can be broken down and built incrementally.
Total cost is higher than waterfall.

Prepared by: Mostafa Taher

Software Development Models


Iterative and incremental development

When to use:
This model can be used when the requirements of the complete
system are clearly defined and understood but can be changed a lot.
Some details can evolve with time.
There is a need to get a product to the market early.
A new technology is being used
There are some high risk features and goals.

Prepared by: Mostafa Taher

Agile Software Development

Prepared by: Mostafa Taher

Software Development Models


Agile Software Development

Agile software development is a group of software


development methods based on iterative and
incremental development
Requirements & solutions evolve through collaboration
between teams members.
It encourages rapid and flexible response to change.

Prepared by: Mostafa Taher

Software Development Models


Agile Software Development

Prepared by: Mostafa Taher

Software Development Models


Agile Software Development

Prepared by: Mostafa Taher

Software Development Models


Agile Software Development

Problems with agile methods:


It can be difficult to keep the interest of customers who are involved
in the process.
Team members may be unsuited to the intense involvement that
characterizes agile methods.
Prioritizing changes can be difficult where there are multiple
requirements.
Maintaining simplicity requires extra work.

Prepared by: Mostafa Taher

More Software Development Models

Prepared by: Mostafa Taher

More Software Development Models

Rapid Application (Software) development (RAD)


IBM Rational Unified Process (RUP)
Spiral Model
Extreme programming (XP)

Prepared by: Mostafa Taher

Software Development Models


Software Engineering Costs

Software Engineering Costs:

Note: Maintenance costs much more than development


Prepared by: Mostafa Taher

Practices you should Know


Pair programming

Programmers work in pairs, sitting together to develop code.


This helps develop common ownership of code and spreads
knowledge across the team.
It serves as an informal review process as each line of code is
looked at by more than 1 person.
It encourages creativity as the whole team can benefit from this.

Prepared by: Mostafa Taher

Practices you should Know


Software prototyping

A prototype is an initial version of a system used to


demonstrate concepts and try out design options.
A prototype can be used in:
The requirements engineering process to help with requirements clarification
and validation
In design processes to explore options or features
In the testing process to run back-to-back tests.

Prepared by: Mostafa Taher

Practices you should Know


Benefits of prototyping

Improved system usability.


A closer match to users real needs.
Improved design quality.
Improved maintainability.
Reduced development effort.

Prepared by: Mostafa Taher

Practices you should Know


Process activities

Software specification
Software design and implementation
Software validation
Software Acceptance

Prepared by: Mostafa Taher

Problems with Software Engineering


Common Issues

Prepared by: Mostafa Taher

Problems with Software Engineering


Solutions

Prepared by: Mostafa Taher

THANK YOU!

Вам также может понравиться