You are on page 1of 40

Software Engineering

(GR20A3054)
UNIT-I
The Software Problem and Process: Software development Process
Models: Waterfall, Prototype, Iterative Development, Rational Unified
Process, Time boxing Model, Extreme Programming and Agile Process,
Unified Process Models, Software Management Process.
The term software specifies to the set of computer programs, procedures and
associated documents (Flowcharts, manuals, etc.) that describe the program
and how they are to be used.
A software process is the set of activities and associated outcome that produce
a software product. Software engineers mostly carry out these activities. These
are four key process activities, which are common to all software processes.
These activities are:
1.Software specifications: The functionality of the software and constraints on
its operation must be defined.
2.Software development: The software to meet the requirement must be
produced.
3.Software validation: The software must be validated to ensure that it does
what the customer wants.
4.Software evolution: The software must evolve to meet changing client
needs.
Program vs. Software

Software is more than programs. Any program is a subset of software, and it becomes
software only if documentation & operating procedures manuals are prepared.

There are three components of the software as shown in fig:


Software Crisis
The software crisis was due to using the same workforce, same methods, same
tools even though rapidly increasing in software demand, the complexity of
software, and software challenges.

Causes of Software Crisis:


•Project running over time
•Project running over budget
•Software was very inefficient
•The quality of the software was low quality
•Software was never delivered
The Problem of Scale

Figure 1.2: The problem of scale.


Software Quality Attributes
A quality product does exactly what the user want it to do.

Figure 1.1: Software quality attributes.


Software Engineering
Software engineering is defined as the systematic approach to the
development, operation, and maintenance of software.

Systematic approach must help achieve a high quality and productivity.

In software, the three main factors that influence Q&P are people,
processes, and technology.
Process and Project
• A process is a sequence of steps performed for a given purpose.

• A software project is instance of the problem, and the development


process is what is used to achieve this purpose.
Component Software Processes
• Product engineering processes, as their main objective is to
produce the desired product.
• The development process specifies all the engineering
activities that need to be performed, whereas the
management process specifies how to plan and control
these activities so that cost, schedule, quality, and other
objectives are met.
• As development processes generally do not focus on
evolution and changes, to handle them another process
called software configuration control process is often used.
The objective of this component process is to primarily
deal with managing change.
• The basic objective of the process management process is
to improve the software process.
Software Development
Process Models
Waterfall Model
• The simplest process model is the waterfall model, which states that the
phases are organized in a linear order.
• In this model, a project begins with feasibility analysis.
• Upon successfully demonstrating the feasibility of a project, the
requirements analysis and project planning begins.
• The design starts after the requirements analysis is complete, and coding
begins after the design is complete.
• Once the programming is completed, the code is integrated and testing is
done.
• Upon successful completion of testing, the system is installed.
• After this, the regular operation and maintenance of the system takes place.
Waterfall Model
Waterfall Model
• Set of documents that should be produced in a project is dependent
on how the process is implemented.
Requirements document

Project plan

Design documents (architecture, detailed)

Final code

Test plan and test reports

Software manuals (e.g., user, installation, etc.)


Waterfall Model- Advantages
• One of the main advantages of the waterfall model is its simplicity.

• It is conceptually straightforward and divides the task of building a


software system into a series of cleanly divided phases.

• Each phase dealing with a separate logical concern. It is also easy to


administer in a contractual setup.

• As each phase is completed and its work product produced.


Waterfall Model- Limitations
• It assumes that the requirements of a system can be frozen before the design begins.
This is possible for systems designed to automate an existing manual system.

• It follows the “big bang” approach—the entire software is delivered in one shot at
the end. This entails heavy risks, as the user does not know until the very end what
they are getting.

• All requirements must be specified at the start and only what is specified will be
delivered.

• It is a document-driven process that requires formal documents at the end of each


phase.
Prototype Model
• The goal of a prototyping-based development process is to counter the first
limitation of the waterfall model.
• The basic idea here is that instead of freezing the requirements before any
design or coding can proceed, a throwaway prototype is built to help
understand the requirements.
• This prototype is developed based on the currently known requirements.
• Development of the prototype obviously undergoes design, coding, and
testing, but each of these phases is not done very formally or thoroughly.
• By using this prototype, the client can get an actual feel of the system, which
can enable the client to better understand the requirements of the desired
system.
• Prototyping is an attractive idea for complicated and large systems for which
there is no manual process or existing system to help determine the
requirements.
Advantages of Prototype Model
1.Reduce the risk of incorrect user requirements
2.Support early product marketing
3.Errors can be detected much earlier as the system is made side by
side.
4.Reduce Maintenance cost.
Disadvantages of Prototype Model
5.Badly implemented prototype often becomes the final product.
6.Require extensive customer collaboration
7. Difficult to know how long the project will complete.
8.Prototyping tools are expensive.
9.Special tools & techniques are required to build a prototype.
Iterative Development
•The basic idea is that the software should be developed in increments.

•Each increment adding some functional capability to the system until the full system is
implemented.

•In the first step of this model, a simple initial implementation is done for a subset of the
overall problem.

•A project control list is created that contains all the tasks that must be performed to obtain
the final implementation in an order.

•The process is iterated until the project control list is empty, at which time the final
implementation of the system will be available.
Iterative Enhancement Model

The iterative enhancement model.


• 1. Requirement gathering & analysis: In this phase, requirements are gathered from
customers and check by an analyst whether requirements will fulfil or not. Analyst checks that
need will achieve within budget or not. After all of this, the software team skips to the next
phase.
• 2. Design: In the design phase, team design the software by the different diagrams like Data
Flow diagram, activity diagram, class diagram, state transition diagram, etc.
• 3. Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programmes which are called Software.
• 4. Testing: After completing the coding phase, software testing starts using different test
methods. There are many test methods, but the most common are white box, and black box
testing.
• 5. Deployment: After completing all the phases, software is deployed to its work environment.
• 6. Review: In this phase, after the product deployment, review phase is performed to check the
behavior and validity of the developed product. And if there are any error found then the
process starts again from the requirement gathering.
• 7. Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options
Advantage(Pros) of Iterative Model:
1.Testing and debugging during smaller iteration is easy.
2.Risks are identified and resolved during iteration.
3.Limited time spent on documentation and extra time on designing.
Disadvantage(Cons) of Iterative Model:
4.It is not suitable for smaller projects.
5.More Resources may be required.
6.Design can be changed again and again because of imperfect requirements.
7.Requirement changes can cause over budget.
8.Project completion date not confirmed because of changing requirements.
Iterative Model - Delivery approach

Iterative delivery approach.


Advantage(Pros) of Iterative Delivery Approach:

The value to the end customer is delivered iteratively.


Each iteration provides a working system for feedback.
Changes are easy to implement.

Disadvantage(Cons) of Iterative Approach:

A good team and proper planned execution are required.


Because of its continuous iterations the cost increases.
Time boxing Model
• In time boxing model, development is done iteratively.
• To speed up development, parallelism between the different iterations
can be employed.
• Reduce the average delivery time for iterations.
• Support parallel execution.
• In the timeboxing model, the basic unit of development is a time box,
which is of fixed duration.
• Each time box is divided into a sequence of stages, like in the waterfall
model.
• There are three teams working on the project—the requirements team,
the build team, and the deployment team.
Time boxing Model
Time boxing Model
Rational Unified Process (RUP)
• Rational Unified Process (RUP) is another iterative process model.
• Designed for object-oriented development using the Unified
Modeling Language (UML).
• RUP proposes that development of software be divided into cycles,
each cycle delivering a fully working system.
• Each cycle itself is broken into four consecutive phases:
– Inception phase
– Elaboration phase
– Construction phase
– Transition phase
Rational Unified Process (RUP)
Rational Unified Process (RUP) is a software development process for
object-oriented models. It is also known as the Unified Process Model.
Advantages:
1.It provides good documentation.
2.It provides risk-management support.
3.It reuses the components, and hence total time duration is less.

Disadvantages:
4.Team of expert professional is required
5.Complex and not properly organized process.
6.More dependency on risk management.
Agile process
• Agility

• Agile process models


• Extreme Programming (XP)
• Adaptive Software Development (ASD)
• Dynamic Systems Development Method (DSDM)
• Scrum.

• Crystal.

• Feature Driven Development (FDD)


Agile Processes Principles
• Satisfy the customer
• Even late changes in the requirements should be entertained.
• Working software is the key measure of progress in a project.
• For progress in a project, therefore, software should be developed and
delivered rapidly in small increments.
• Face-to-face communication is preferred over documentation.
• Continuous feedback and involvement of customer is necessary for developing
good-quality software.
• Simple design which evolves and improves with time is a better approach than
doing an elaborate design up front for handling all possible scenarios.
• The delivery dates are decided by empowered teams of talented individuals.
Extreme Programming
Extreme Programming
• Pair programming

• Refactoring

• Test Driven Development

• Spike solutions

• Stand-up meetings

• XP team -20 members (max)


Advantage(Pros) of Agile Method:
1.Frequent Delivery
2.Face-to-Face Communication with clients.
3.Efficient design and fulfils the requirement.
4.Anytime changes are acceptable.
5.It reduces total development time.
Disadvantages(Cons) of Agile Model:
6.Due to the shortage of formal documents, it creates confusion and crucial
decisions taken throughout various phases can be misinterpreted at any time
by different team members.
7.Due to the lack of proper documentation, once the project completes and the
developers allotted to another project, maintenance of the finished project
can become a difficulty.
Software Management Process
• Software management process specifies how to plan and control the
activities so that cost, schedule, quality, and other objectives are met.

• Its basic task is to ensure that, once a development process is chosen,


it is implemented optimally.

• For a large project, a proper management process is essential for


success.
Software Management Process
The activities in the management process

• Planning

• Monitoring and control

• Termination analysis.
Software Management Process
• A software plan is usually produced before the development activity begins.
• Major activities are cost estimation, schedule and project staffing, quality
control plans, and controlling and monitoring plans.
• Project monitoring and control phase includes all activities the project
management has to perform while the development is going on to ensure
that project objectives are met and the development proceeds according to
the developed plan
• Termination analysis—is performed when the development process is over.
The basic reason for performing termination analysis is to provide
information about the development process.
Software Management Process

Figure 2.12: Temporal relationship between development and management process.

You might also like