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

Introduction

What is Software Development? It is a complex process to develop modern and professional


software today. This document tries to give a brief overview of Software Development. Normally
we use the terms System Engineering or Software Engineering.

System Engineering: The process of analyzing and designing an entire system, including the
hardware and the software.

Software Engineering: The discipline for creating software applications. A systematic approach to
the design, development, testing, and maintenance of software.

A lot of systems today have a mix of hardware and software that is tightly integrated, like modern
smartphones, tablets, etc. To create such systems, involve a lot of different disciplines.

Software is any set of machine-readable instructions that directs a computer's processor to


perform specific operations. The term is used to contrast with computer hardware, the physical
objects (processor and related devices) that carry out the instructions. Computer hardware and
software require each other, and neither can be realistically used without the other, see Figure 1-
1.

Figure 1-1: Hardware and Software working together


20 1 Introduction

In Figure 1-2 we see a typical network and infrastructure that the software relies on.

Figure 1-2: Typical Network and Infrastructure in Software Development

Figure 1-3 we see the complexity of software development and different components that are
involved.

Figure 1-3: The Complexity of modern Software

Part 1: Introduction
21 1 Introduction

In Figure 1-4 we see the different phases involved in the Software Development Lifecycle (SDLC).

Figure 1-4: The Software Development Lifecycle


The main parts or phases in the software development process are:

• Planning
• Requirements Analysis
• Design
• Implementation
• Testing
• Deployment and Maintenance

In Figure 1-5 we see examples of some of the different activities involved in the different phases of
software development.

Part 1: Introduction
22 1 Introduction

Figure 1-5: Activities involved in the different Software Phases

As you see, software development involves lot of phases the are executed by different disciplines
and different people. We will discuss and explain all these things later in this document.

Figure 1-6: Have Reviews at all levels in the Development Cycle

Part 1: Introduction
Software Development
In this chapter, we will give a short overview of software development, the challenges and what
kind of different software categories we have, what kind of documents that are needed and created
during the software development process, what kind of skills needed, etc.

Software Development (also known as application development, software design, designing


software, software application development, enterprise application development, or platform
development) is the development of a software product.

Software Engineering (SE) is the application of a systematic, disciplined, quantifiable approach to


the development, operation, and maintenance of software.

In Figure 3-1 we see how a software application typically interacts with users, the underlying
operating system and hardware.

Figure 3-1: Software Interaction with Hardware and Users

34
3.1 Challenges

In Figure 3-2 we see some of the challenges in software development.

Figure 3-2: Challenges with Software Development

Collaboration and communication within the team and with stakeholders, etc. is crucial when it comes
to creating good software.

Creating software is complicated. It is important to understand the customer’s needs! In some way,
you need to find out what the customer needs.

Market research, etc. is a good start, but in the end, you need to go much deeper to understand the
customer. Most of the time the customer doesn’t even know what they need.
Software Development Phases

In software development, we have the following phases:

 Requirements (e.g., from Customer)


 Analysis and Design
 Implementation, Coding

45
 Documentation
 Testing
 Deployment, Installation and Maintenance

This chapter introduces these phases. Figure 5-1 shows an overview of the different phases
involved in Software Development:

Figure 5-1: Phases in Software Development

45
46 5 Software Development Phases

Requirements

In the requirements, we describe what the system should do. The requirements include both
functional requirements and non-functional requirements [1].

Functional Requirements: Statements of services the system should provide, how the system
should react to inputs and how the system should behave in different situations. May state what the
system should not do.

Non-Functional Requirements: Constraints on the services or functions offered by the system


such as timing constraints, constraints on the development process, standards, etc. Often apply to
the system rather than individual features or services.

The requirements are often collected in a so-called “Software Requirements Specification (SRS)”
document.

The SRS could contain stuff like [2]:

 Introduction
o Purpose
o Definitions
o System overview
o References
 Overall description
o Product perspective
 System Interfaces
 User Interfaces
 Hardware interfaces
 Software interfaces
 Communication Interfaces
 Memory Constraints

Part 2: Software Engineering


47 5 Software Development Phases

 Operations
 Site Adaptation Requirements
o Product functions
o User characteristics
o Constraints, assumptions and dependencies
 Specific requirements
o External interface requirements
o Functional requirements
o Performance requirements
o Design constraints
 Standards Compliance
o Logical database requirement
o Software System attributes
 Reliability
 Availability
 Security
 Maintainability
 Portability

 Other requirements

The Requirements is normally given by the Customer if we deal with customized products. The
software requirements document is the official statement of what is required of the system. It
should include both a definition of user requirements and a specification of the system
requirements. It is NOT a design document. As far as possible, it should include a set of WHAT
the system should do rather than HOW it should do it [1].

Design

In the design phase, we use the specification and transform it into descriptions of how we should
do it.

In principle, requirements should state what the system should do and the design should describe
how it does this – but in practice this is not so easy! - In practice, requirements and design are
inseparable.

We can divide design into 2 main groups:

 Technical Design – Platform and Architecture Design, i.e., how to build the software.
 UX Design – Design of User eXperience (UX) and the Graphical User Interface (GUI),
sometimes also called Human Machine Interface (HMI). This is what the end user of the
software sees.

Part 2: Software Engineering


48 5 Software Development Phases

Technical Design

Technical Design is the Platform and Architecture Design, i.e., how to build the software.

This is typically done by a so-called Software Architect.

UX Design

UX Design is the Design of the User eXperience (UX) and the Graphical User Interface (GUI),
sometimes also called Human Machine Interface (HMI). This is what the end user of the software
sees.

This is typically done by a so-called UX Designer.

Implementation

Implementation = Coding.

Software is usually designed and created (coded/written/programmed) in integrated development


environments (IDE) like Eclipse, Xcode or Microsoft Visual Studio that can simplify the process
and compile the program to an executable unit. Software is usually created on top of existing
software and the application programming interface (API) that the underlying software frameworks
provide, e.g. Microsoft .NET, etc.

Most of the software has a Graphical User Interface (GUI). Normally you separate the GUI design
and code in different layers or files.

[http://geek-and-poke.com]

Part 2: Software Engineering


51 6 Software Development Process

More about implementation later in this document.

Testing

Testing can be performed on different levels and by different persons. Testing is a very important
part of software development. About 50% of the software development is about testing your
software.

Creating User-friendly Software is Crucial!

More about Testing later in this document.

Deployment

What is Deployment?

Software deployment is all the activities that make a software system available for use.

Examples:

 Get the software out to the customers

 Creating Installation Packages

 Documentation, e.g., Installation Guide, etc.

 Installation

Deployment strategies may vary depending of what kind of software we create, etc.

More about Deployment later in this document.

When the software is deployed, or installed, you normally go into a Maintenance phase. The
maintenance of software involves bug fixes of the software after the software is released, etc. At
some time, you also need to start planning new releases of the software.
Software development process:

These processes or models may be divided in 2 main categories; Plan-driven models and
Agile methods. The Waterfall model, V-model and the Spiral model is so-called plan-driven
models, while Scrum and eXtreme Programming are so-called Agile methods.
Traditionally plan-driven methods where used in software development, while today Agile
methods such as Scrum have become very popular, especially in smaller development teams.

Plan-driven models (e.g., Waterfall) generally produce more documentation than Agile models.

Part 2: Software Engineering


52 6 Software Development Process
In Figure 6-1 we see an overview of some of the most used methods.

Figure 6-1: Software Development Methods

In Figure 6-2 we see the main difference between Agile development and ordinary plan-driven
development.

Figure 6-2: Plan-driven vs. Agile Development [1]

Part 2: Software Engineering


53 6 Software Development Process

[http://geek-and-poke.com]

Plan-driven models

We have different plan-driven models such as the Waterfall model, V-model, Spiral model which
we will discuss in more details.

Waterfall model

The Waterfall model [4] consists of the following phases:

 Requirements specification (Requirements analysis)


 Software design
 Implementation and Integration
 Testing (or Validation)
 Deployment (or Installation)
 Maintenance

Traditionally with the Waterfall model, you can only start on the next phase when the previous
phase is finished. Therefore, it is called the Waterfall method, see Figure 6-3.

Part 2: Software Engineering


54 6 Software Development Process

Figure 6-3: Waterfall model [4]

In practice, there is impossible to create perfect requirements and design before you start
implementing the code, so it is common to go back and update these phases iteratively.
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the
project. In "The Waterfall" approach, the whole process of software development is divided into separate phases.
In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.
The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape. It is
also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each
corresponding development stage. This means that for every single phase in the development cycle, there is a
directly associated testing phase. This is a highly-disciplined model and the next phase starts only after
completion of the previous phase.

V-Model - Design
Under the V-Model, the corresponding testing phase of the development phase is planned in parallel. So, there are
Verification phases on one side of the ‘V’ and Validation phases on the other side. The Coding Phase joins the
two sides of the V-Model.

Part 2: Software Engineering


55 6 Software Development Process

The following illustration depicts the different phases in a V-Model of the SDLC.

V-Model - Verification Phases


There are several Verification phases in the V-Model, each of these are explained in detail below.

Business Requirement Analysis


This is the first phase in the development cycle where the product requirements are understood from the
customer’s perspective. This phase involves detailed communication with the customer to understand his
expectations and exact requirement. This is a very important activity and needs to be managed well, as most of the
customers are not sure about what exactly they need. The acceptance test design planning is done at this stage as
business requirements can be used as an input for acceptance testing.

System Design
Once you have the clear and detailed product requirements, it is time to design the complete system. The system
design will have the understanding and detailing the complete hardware and communication setup for the product

Part 2: Software Engineering


56 6 Software Development Process

under development. The system test plan is developed based on the system design. Doing this at an earlier stage
leaves more time for the actual test execution later.

Architectural Design
Architectural specifications are understood and designed in this phase. Usually more than one technical approach
is proposed and based on the technical and financial feasibility the final decision is taken. The system design is
broken down further into modules taking up different functionality. This is also referred to as High Level Design
(HLD).
The data transfer and communication between the internal modules and with the outside world (other systems) is
clearly understood and defined in this stage. With this information, integration tests can be designed and
documented during this stage.

Module Design
In this phase, the detailed internal design for all the system modules is specified, referred to as Low Level Design
(LLD). It is important that the design is compatible with the other modules in the system architecture and the
other external systems. The unit tests are an essential part of any development process and helps eliminate the
maximum faults and errors at a very early stage. These unit tests can be designed at this stage based on the
internal module designs.

Coding Phase
The actual coding of the system modules designed in the design phase is taken up in the Coding phase. The best
suitable programming language is decided based on the system and architectural requirements.
The coding is performed based on the coding guidelines and standards. The code goes through numerous code
reviews and is optimized for best performance before the final build is checked into the repository.

Validation Phases
The different Validation Phases in a V-Model are explained in detail below.

Unit Testing
Unit tests designed in the module design phase are executed on the code during this validation phase. Unit testing
is the testing at code level and helps eliminate bugs at an early stage, though all defects cannot be uncovered by
unit testing.

Integration Testing
Integration testing is associated with the architectural design phase. Integration tests are performed to test the
coexistence and communication of the internal modules within the system.

System Testing
System testing is directly associated with the system design phase. System tests check the entire system

Part 2: Software Engineering


57 6 Software Development Process

functionality and the communication of the system under development with external systems. Most of the
software and hardware compatibility issues can be uncovered during this system test execution.

Acceptance Testing
Acceptance testing is associated with the business requirement analysis phase and involves testing the product in
user environment. Acceptance tests uncover the compatibility issues with the other systems available in the user
environment. It also discovers the non-functional issues such as load and performance defects in the actual user
environment.

V- Model ─ Application
V- Model application is almost the same as the waterfall model, as both the models are of sequential type.
Requirements have to be very clear before the project starts, because it is usually expensive to go back and make
changes. This model is used in the medical development field, as it is strictly a disciplined domain.
The following pointers are some of the most suitable scenarios to use the V-Model application.
 Requirements are well defined, clearly documented and fixed.
 Product definition is stable.
 Technology is not dynamic and is well understood by the project team.
 There are no ambiguous or undefined requirements.
 The project is short.

V-Model - Pros and Cons


The advantage of the V-Model method is that it is very easy to understand and apply. The simplicity of this model
also makes it easier to manage. The disadvantage is that the model is not flexible to changes and just in case there
is a requirement change, which is very common in today’s dynamic world, it becomes very expensive to make the
change.
The advantages of the V-Model method are as follows −
 This is a highly-disciplined model and Phases are completed one at a time.
 Works well for smaller projects where requirements are very well understood.
 Simple and easy to understand and use.
 Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
The disadvantages of the V-Model method are as follows −
 High risk and uncertainty.
 Not a good model for complex and object-oriented projects.
 Poor model for long and ongoing projects.
 Not suitable for the projects where requirements are at a moderate to high risk of changing.

Part 2: Software Engineering


58 6 Software Development Process

 Once an application is in the testing stage, it is difficult to go back and change a functionality.
 No working software is produced until late during the life cycle.

Spiral Model:
The spiral model combines the idea of iterative development with the systematic, controlled aspects of the
waterfall model. This Spiral model is a combination of iterative development process model and sequential linear
development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental
releases of the product or incremental refinement through each iteration around the spiral.

Spiral Model - Design


The spiral model has four phases. A software project repeatedly passes through these phases in iterations called
Spirals.

Identification
This phase starts with gathering the business requirements in the baseline spiral. In the subsequent spirals as the
product matures, identification of system requirements, subsystem requirements and unit requirements are all
done in this phase.
This phase also includes understanding the system requirements by continuous communication between the
customer and the system analyst. At the end of the spiral, the product is deployed in the identified market.

Design
The Design phase starts with the conceptual design in the baseline spiral and involves architectural design, logical
design of modules, physical product design and the final design in the subsequent spirals.

Construct or Build
The Construct phase refers to production of the actual software product at every spiral. In the baseline spiral,
when the product is just thought of and the design is being developed a POC (Proof of Concept) is developed in
this phase to get customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design details a working model of the
software called build is produced with a version number. These builds are sent to the customer for feedback.

Evaluation and Risk Analysis


Risk Analysis includes identifying, estimating and monitoring the technical feasibility and management risks,
such as schedule slippage and cost overrun. After testing the build, at the end of first iteration, the customer
evaluates the software and provides feedback.
The following illustration is a representation of the Spiral Model, listing the activities in each phase.

Part 2: Software Engineering


59 6 Software Development Process

Based on the customer evaluation, the software development process enters the next iteration and subsequently
follows the linear approach to implement the feedback suggested by the customer. The process of iterations along
the spiral continues throughout the life of the software.

Spiral Model Application


The Spiral Model is widely used in the software industry as it is in sync with the natural development process of
any product, i.e. learning with maturity which involves minimum risk for the customer as well as the development
firms.
The following pointers explain the typical uses of a Spiral Model −
 When there is a budget constraint and risk evaluation is important.
 For medium to high-risk projects.
 Long-term project commitment because of potential changes to economic priorities as the requirements
change with time.
 Customer is not sure of their requirements which is usually the case.
 Requirements are complex and need evaluation to get clarity.
 New product line which should be released in phases to get enough customer feedback.
 Significant changes are expected in the product during the development cycle.

Part 2: Software Engineering


60 6 Software Development Process

Spiral Model - Pros and Cons


The advantage of spiral lifecycle model is that it allows elements of the product to be added in, when they become
available or known. This assures that there is no conflict with previous requirements and design.
This method is consistent with approaches that have multiple software builds and releases which allows making
an orderly transition to a maintenance activity. Another positive aspect of this method is that the spiral model
forces an early user involvement in the system development effort.
On the other side, it takes a very strict management to complete such products and there is a risk of running the
spiral in an indefinite loop. So, the discipline of change and the extent of taking change requests is very important
to develop and deploy the product successfully.
The advantages of the Spiral SDLC Model are as follows −
 Changing requirements can be accommodated.
 Allows extensive use of prototypes.
 Requirements can be captured more accurately.
 Users see the system early.
 Development can be divided into smaller parts and the risky parts can be developed earlier which helps in
better risk management.
The disadvantages of the Spiral SDLC Model are as follows −
 Management is more complex.
 End of the project may not be known early.
 Not suitable for small or low risk projects and could be expensive for small projects.
 Process is complex
 Spiral may go on indefinitely.
 Large number of intermediate stages requires excessive documentation.

Agile Software Development

Agile software development is a group of software development methods based on iterative and incremental
development.

Part 2: Software Engineering


61 6 Software Development Process

So, what is Agile development? – Here is a short summary:

 A group of software development methods


 Iterative approach
 Incremental: Software available to Customers every 2-4 weeks
 Self-organizing and cross-functional Teams
 Refactoring

Part 2: Software Engineering


62 6 Software Development Process

In Figure 6-5 we see some important Agile features and principles.

Figure 6-5: Agile Features and Principles

Examples of popular Agile methods:

 Scrum
 eXtreme Programming (XP)

In Figure 6-6 we see the key features with Agile Software Development.

Figure 6-6: Agile Software Development


The Manifesto for Agile Software Development:

In 2001, some software developers met to discuss development methods. They published the
Manifesto for Agile Software Development to define the approach now known as agile software
development.

The Manifesto for Agile Software Development is as follows [7]:

We are uncovering better ways of developingsoftware by doing it and helping others do it.
Through this work, we have come to value:

 Individuals and interactions over processes and tools


 Working software over comprehensive documentation
 Customer collaboration over contract negotiation
 Responding to change over following a plan
That is, while there is value in the items onthe right, we value the items on the left more.

Part 2: Software Engineering


63 6 Software Development Process

eXtreme Programming (XP)

eXtreme Programming or shorted XP is a popular Agile method. Typical features in XP are as


follows:

 Pair Programming
 Code Reviews
 Refactoring
 Unit Testing - In XP you start by writing Unit Tests before you start coding
 Standup Meetings

In Figure 6-10 we see how XP works in practice.

Figure 6-10: eXtreme Programming

In XP, they practice so-called “Pair Programming” (Figure 6-11), meaning 2 developers working
together.

Part 2: Software Engineering


64 6 Software Development Process

Figure 6-11: Pair Programming [8]

So, is Pair Programming Good or Bad? There exists various studies of the productivity of Pair
Programming [1]:

 Study 1: Comparable with that of 2 developers work independently


 Study 2: A significant loss in productivity compared with 2 developers working alone

A reasonable question is: Should the 2 developers have the same skills or not?

Newer less, there are benefits with XP:

 Collective Ownership for the code created and the results of the project.
Scrum

Scrum [9] is a so-called Agile method, and it has become very popular today. In Figure 6-12 we see
an overview of the Scrum method.
Scrum is simple and easy to understand. The method is more flexible and more informal than plan- driven methods

Figure 6-12: Scrum Overview

Part 2: Software Engineering


65 6 Software Development Process

In short, Scrum is a Framework for Software Development.

 Agile Software Development method


 Simple to understand
 Flexible
 Extremely difficult to master!
 Self-organizing Teams (3-9 persons)
 Scrum Team:
o Product Owner
o Scrum Master
o Development Team

Some important Scrum Events are:

• The Sprint (duration between 14-30 days)

• Sprint Planning Meeting (8 hours if 30 days’ sprint)

• Daily Scrum Meeting (Max 15 min, every day at the same time) (also called
Standup Meeting)

• Sprint Review (4 hours if 30 days’ sprint)

An example of a Daily Scrum Meeting is shown in Figure 6-13. It is normal to held this meeting as a
“standup meeting”, where participants standing during the meeting.

Part 2: Software Engineering


66 6 Software Development Process

Figure 6-13: Daily Scrum Meeting (Standup Meeting) [9]

Daily Scrum Meeting:

Important features with the Daily Scrum Meeting are as follows:

• Max 15 min.

• The meeting is held at the same time and place every day

• “Stand Up” Meeting

• Purpose:

– Synchronize activities and create a plan for next 24 hours.

– Track Progress

• Agenda – Each Team member explains:

– What has been accomplished since last meeting?

– What will be done before the next meeting?

– What obstacles are in the way?

Part 2: Software Engineering


67 6 Software Development Process

Waterfall vs. Agile

Agile is more flexible than traditional methods (like the waterfall).

Here are some key factors that separates the traditional waterfall method versus the more flexible
Agile methods, such as Scrum:

 Agile and Scrum is based on Iterations while Waterfall is Sequential


 Agile and Scrum focus on less documentation
 Agile is good for small projects – not so good for larger projects?
 If the Customer don’t know what he wants in detail – Scrum is a good approach

Figure 6-9: Waterfall vs. Agile Development

 Continuous informal Review process because each code line is looked at by at least 2
people
 It supports Refactoring, which is a continuous process of software improvement
 Less time is spent on repairing bugs.
 Improved Code Quality
 It reduces the overall risk

Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a software development approach based
on iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long
term planning. The project scope and requirements are laid down at the beginning of the development process.

Part 2: Software Engineering


68 6 Software Development Process

Plans regarding the number of iterations, the duration and the scope of each iteration are clearly defined in
advance.

Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts from one to
four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the

overall project delivery time requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and testing before a working
product is demonstrated to the client.

Phases of Agile Model:


Following are the phases in the Agile model are as follows:

1. Requirements gathering
2. Design the requirements
3. Construction/ iteration

Part 2: Software Engineering


69 6 Software Development Process

4. Testing/ Quality assurance


5. Deployment
6. Feedback

1. Requirements gathering: In this phase, you must define the requirements. You should explain business
opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate
technical and economic feasibility.C++ vs Java

2. Design the requirements: When you have identified the project, work with stakeholders to define requirements.
You can use the user flow diagram or the high-level UML diagram to show the work of new features and show
how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers
start working on their project, which aims to deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's work environment.

6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the
product and works through the feedback.

Agile Testing Methods:


o Scrum
o Crystal
o Dynamic Software Development Method(DSDM)
o Feature Driven Development(FDD)
o Lean Software Development
o eXtreme Programming(XP)

Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-based development
conditions.

Part 2: Software Engineering


70 6 Software Development Process

There are three roles in it, and their responsibilities are:

o Scrum Master: The scrum can set up the master team, arrange the meeting and remove obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay and is responsible for the
distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the sprint or cycle.

eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or requirements, or when they
are not sure about the system's performance.

Iterative Model

In this Model, you can start with some of the software specifications and develop the first version of the software.
After the first version if there is a need to change the software, then a new version of the software is created with a
new iteration. Every release of the Iterative Model finishes in an exact and fixed period that is called iteration.

The Iterative Model allows the accessing earlier phases, in which the variations made respectively. The final output
of the project renewed at the end of the Software Development Life Cycle (SDLC) process.

Part 2: Software Engineering


71 6 Software Development Process

The various phases of Iterative model are as follows:

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, black box, and grey box test methods.

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 behaviour 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.

When to use the Iterative Model?

1.When requirements are defined clearly and easy to understand.

2. When the software application is large.

3.When there is a requirement of changes in future.

Advantage(Pros) of Iterative Model:

1. Testing and debugging during smaller iteration is easy.


2. A Parallel development can plan.
3. It is easily acceptable to ever-changing needs of the project.
4. Risks are identified and resolved during iteration.
5. Limited time spent on documentation and extra time on designing.

Part 2: Software Engineering


72 6 Software Development Process

Disadvantage(Cons) of Iterative Model:

1. It is not suitable for smaller projects.


2. More Resources may be required.
3. Design can be changed again and again because of imperfect requirements.
4. Requirement changes can cause over budget.
5. Project completion date not confirmed because of changing requirements.

UNIFIED PROCESS (UP):

The Unified Process has emerged as a popular iterative software development process for building
object oriented systems. The Unified Process (UP) combines commonly accepted best practices, such
as an iterative lifecycle and risk-driven development, into a cohesive and welldocumented
description. The best-known and extensively documented refinement of the Unified Process is the
Rational Unified Process(RUP).

Reasons to use UP:

UP is an iterative process

• UP practices provide an example structure to talk about how to do, and how to learn OOA/D.

Best Practices and Key Concepts in UP:

• Tackle high-risk and high-value issues in early iterations

• Engage users continuously for evaluation, feedback, and requirements

• Build a cohesive, core architecture in early iterations

• Apply use cases

• Provides visual modeling using UML

• Practice change request and configuration management.

UP PHASES:

There are 4 phases in Unified Process,

1. Inception

2. Elaboration

3. Construction

4. Transition

Part 2: Software Engineering


73 6 Software Development Process

INCEPTION:

Inception is the initial stage of the project. Inception is not a requirements phase but it is a
feasibility phase where complete investigation takes place to support a decision to continue or
stop .It deals with

• Approximate vision

• Business case

• Scope

• Vague estimates

ELABORATION:

In Elaboration phase the project team is expected to capture a healthy majority of the system
requirements It deals with

• Refined vision,

• Iterative implementation of the core architecture,

• Resolution of high risks,

• Identification of most requirements and scope,

• Realistic estimate

CONSTRUCTION :

Construction phase encompasses on iterative implementation of the remaining lower risk and easier
elements, and preparation for deployment.

Part 2: Software Engineering


74 6 Software Development Process

TRANSITION:

Transition phase focus on releasing the final product to the customers for usability.

UP DISCIPLINES:
UP describes work activities such as writing a use case within disciplines a set of activities and related artifacts in
one subject area within requirement analysis.
Artifact-any work such as code, web graphics, database schema, text documents, diagrams, models etc.

Several UP Disciplines:
1. Business Modeling- Domain Model artifact to visualize concepts in the application domain.
2. Requirements- use case model and specification artifacts to capture functional and non-functional
requirements.
3. Design- All aspects of design, including overall architecture, objects, databases, networking.

Part 2: Software Engineering


75 6 Software Development Process

Part 2: Software Engineering


76 6 Software Development Process

Part 2: Software Engineering


77 6 Software Development Process

Part 2: Software Engineering

You might also like