0% found this document useful (0 votes)
38 views27 pages

Unit 1 - Oose

Uploaded by

funfor340
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views27 pages

Unit 1 - Oose

Uploaded by

funfor340
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

OBJECT ORIENTED SOFTWARE ENGINEERING

UNIT I - SOFTWARE DEVELOPMENT AND PROCESS MODELS

Software development:

Software development is the process of conceiving, specifying,


designing, programming, documenting, testing, and bug fixing involved in
creating and maintaining applications, frameworks, or other software
components. Software development involves writing and maintaining the source
code, but in a broader sense, it includes all processes from the conception of the
desired software through to the final manifestation of the software, typically in a
planned and structured process. Software development also includes research,
new development, prototyping, modification, reuse, re-engineering,
maintenance, or any other activities that result in software products.

Software Development is the collective process of some computer


science activities dedicated to the process of developing software applications.
The Software Development process proceeds according to Software
Development Life Cycle (SDLC). In simple, Software Development is the
process of building software applications or software products.

Examples of Software Development –

 Web Development
 Mobile Development
 Software Tool Development
 Application Development
 API Development
 Data Management Software Development
 Security Software Development
 Embedded Systems Development
 Cloud Computing Software Development

Software Developer :

The Creative minds who are behind this software development or those people
who are involved in the complete software development process and finally
bring amazing software applications/products are the Software Developers. In
simple, we can say the person who develops the computer software is called a
1

Software Developer.
Page

1
Different types of software developers –

 Web Developer
 Mobile App Developer
 Desktop Developer
 Graphics Developer
 Game Developer
 Big Data Developer
 Embedded Developer
 Security Developer

What are the Different Types of Software Development?

There are several different types. They can be grouped into four basic
categories:

 Application development that provides functionality for users to


perform tasks. Examples include office productivity suites, media
players, social media tools, and booking systems. Applications can run on
the user’s own personal computing equipment or on servers hosted in the
cloud or by an internal IT department. Media streaming development is
one example of application development for the cloud.
 System software development to provide the core functions such as
operating systems, storage systems, databases, networks, and hardware
management.
 Development tools that provide software developers with the tools to do
their job, including code editors, compilers, linkers, debuggers, and test
harnesses.
 Embedded software development that creates the software used to
control machines and devices, including automobiles, phones, and robots.

Challenges of Software Developers :

Here is the list of some top challenges every Software Product Developer
faces –

 Changing Requirements during the development process brings


challenges for the software developers. Sometimes they won’t be able to
2

deal with changing requirements.


Page

2
 Providing complete Security to the software applications is a major
challenge for developers as hackers are trying each moment there to hack
the software applications and steal the data.

 Sometimes Misinterpreted requirements to give rise to a problem as a


result the software product fails to give the actual result to the end-users.

 Many times software developers face problems during System and


Application integration leading to the failure of software projects also.

 Further Maintenance and Upgradation become a problem for software


developers for some software projects.

 Adapting to the latest Technology becomes a big challenge for software


developers when they don’t have sufficient experience with the latest
market trends.

 Sometimes when the developers don’t get the appropriate Project


infrastructure for the development and deployment of projects they face
problems in delivering the product.

 Getting Defects or Errors in the product during its last stage creates an
unwanted challenge for the software developers.

 Time limitations play a vital role in software development. When there


is not sufficient time for the development times the product doesn’t meet
the quality standards as the developers work under pressure and output
decreases.

 When a new developer lacks proper Communication and


coordination with the other developers of the same development team it
creates a problem at some point.

 It feels like a common problem when one developer Works with


another developer’s code this situation creates a problem for the
developer as it takes a lot of time for the new developer to understand the
code.

 In last, most software developer’s face this problem if they don’t get the
required support from the Project Manager/Leader, and sometimes it
gets difficult to handle the relationship between colleagues and managers
3

which in terms decreases productivity.


Page

3
10 Most Common Software Development Challenges & How to Solve Them

1. Lack of Guidance from Management

Developers need clear instructions to be able to do their job


effectively, and if they’re left in the dark, it can lead to chaos and
confusion. This can cause delays in the project and affect its overall
software quality.
The best method to overcome this challenge is to establish a clear and
concise project plan.
2. Difficulty Estimating Time and Resources

The difficulty of estimating time and resources for software


development projects is another common problem. It’s important to have
a realistic timeline, given the constraints of budgets and timelines. This
way, developers know how much time they can spend on enhancing a
certain feature or working on software testing and bug fixes, for instance.
One way to avoid this common challenge is to break larger tasks into
smaller chunks so they’re more manageable.

3. Lack of Resources for the Software Development Process

Lack of budget and resources is another common software


development challenge. Part of it is due to the increased complexity of
software projects, which takes a lot more time and money to complete.

The best way to work through these software development


challenges is by leveraging free assets from the web.

One more solution for this problem is not to request too many
features or enhancements at once. The project teams should also seek out
areas where they can cut costs and save time and use those funds and
hours on other aspects of the project.

4. Defining the Requirements of the Software Development Projects

One of the most time-consuming challenges for software


developers is to define the requirements. Simply, this means figuring out
what the product should do and how it should work.
4
Page

4
One useful way to address this problem is by holding discussions
with customers or clients when there are any questions or unclear
requirements during the project cycle.

5. Miscommunication with Customers/Stakeholders

` Another major challenge for software developers is


miscommunication with customers and stakeholders. This can happen for
many reasons, such as a lack of communication channels,
misunderstandings about the requirements, or failures to document the
project properly.
To prevent these problems from occurring, we should have an open line
of communication with customers and stakeholders.

6. Strict Time Constrains

The other challenge for software developers is dealing with strict


time constraints. In many cases, deadlines are agreed upon before they
even know what work needs to be done, leading to a lot of pressure and
frustration.
To deal with this challenge, companies better put an emphasis on
good time management. Developers and project managers should set
realistic deadlines and clear expectations from the start.
7. The Complexity of Software Projects

The parts of the software system.

To address this challenge, developers need to understand the system they are
working on clearly. complexity of projects is another common challenge that
developers commonly face. This is often due to a large number of
dependencies and interactions between different.

8. Finding Qualified Talents

Finding qualified talents is one of the most significant challenges in


software development for enterprises. This can be difficult for a number of
reasons, such as a shortage of qualified workers, the high cost of hiring, or
the difficulty of finding the right person for the job.
5
Page

5
To overcome this challenge, companies need to be more proactive in their
search for talent. They should identify the skills they need and target
candidates who have those skills.

9. Testing and Debugging

Last but not least, testing and debugging is one of the major challenges in
software development that software testing teams often encounter. This
usually involves identifying and fixing the errors in the code.

To address this challenge, developers need to be meticulous in their work.


They ought to understand the system they are working on and the code they
are writing

10. Maintaining the Competitive Edge

One of the increasing software development challenges in the software


industry is maintaining the competitive edge. This is often due to the fast-
paced and ever-changing technology landscape.

To stay ahead of the competition, software development companies need to


continually innovate and improve their products and services.

Steps in the software development process

Developing software typically involves the following steps:

 Selecting a methodology to establish a framework in which the steps of


software development are applied. It describes an overall work process or
roadmap for the project. Methodologies can include Agile
development, DevOps, Rapid Application Development (RAD), Scaled
Agile Framework (SAFe), Waterfall and others. (See the glossary.)
 Gathering requirements to understand and document what is required by
users and other stakeholders.
 Choosing or building an architecture as the underlying structure within
which the software will operate.
 Developing a design around solutions to the problems presented by
requirements, often involving process models and storyboards.
 Building a model with a modeling tool that uses a modeling language
like SysML or UML to conduct early validation, prototyping and
simulation of the design.
6
Page

6
 Constructing code in the appropriate programming language. Involves
peer and team review to eliminate problems early and produce quality
software faster.
 Testing with pre-planned scenarios as part of software design and coding
— and conducting performance testing to simulate load testing on the
applicatio.
 Managing configuration and defects to understand all the software
artifacts (requirements, design, code, test) and build distinct versions of
the software. Establish quality assurance priorities and release criteria to
address and track defects.
 Deploying the software for use and responding to and resolving user
problems.
 Migrating data to the new or updated software from existing
applications or data sources if necessary.
 Managing and measuring the project to maintain quality and delivery
over the application lifecycle, and to evaluate the development process
with models such as the Capability Maturity Model (CMM).

The steps of the software development process fit into application lifecycle
management (ALM). The IBM Engineering Management solution is a superset
of ALM that enables the management of parallel mechanical, electrical and
software development.

 Requirements analysis and specification


 Design and development
 Testing
 Deployment
 Maintenance and support

An Engineering Perspective (approach):


1. One of the basic software Engineering principles is Better Requirement
analysis which gives a clear vision of the project. At last, a good
understanding of user requirements provides value to its users by delivering
a good software product that meets users’ requirements.

2. All designs and implementations should be as simple as possible mean the


KISS (Keep it Simple, Stupid) principle should be followed. It makes code
so simple as a result debugging and further maintenance become simple.

3. Maintaining the vision of the project is the most important thing throughout
complete development process for the success of a software project. A clear
7

vision of the project leads to the development of the project in the right
Page

7
way.

4. Software projects include a number of functionalities, all functionalities


should be developed in a modular approach so that development will be
faster and easier. This modularity makes functions or system components
independent.

5. Another specialization of the principle of separation of concerns is


Abstraction for suppressing complex things and delivering simplicity to the
customer/user means it gives what the actual user needs and hides
unnecessary things.

6. Think then Act is a must-required principle for software engineering means


before starting developing functionality first it requires to think about
application architecture, as good planning on the flow of project
development produces better results.

7. Sometimes developer adds up all functionalities together but later find no


use of that. So following the Never add extra principle is important as it
implements what actually needed and later implements what are required
which saves effort and time.

8. When other developers work with another’s code they should not be
surprised and should not waste their time in getting code. So providing
better Documentation at required steps is a good way of developing
software projects.

9. Law of Demeter should be followed as it makes classes independent on


their functionalities and reduces connections and inter dependability
between classes which is called coupling.

10. The developers should develop the project in such a way that it should
satisfy the principle of Generality means it should not be limited or
restricted to some of cases/functions rather it should be free from unnatural
restrictions and should be able to provide service to customers what
actually they need or general needs in an extensive manner.

Object Orientation :
In the object-oriented approach, the focus is on capturing the structure and
behavior of information systems into small modules that combines both data
8

and process. The main aim of Object Oriented Design (OOD) is to improve the
Page

8
quality and productivity of system analysis and design by making it more
usable.
In analysis phase, OO models are used to fill the gap between problem and
solution. It performs well in situation where systems are undergoing continuous
design, adaption, and maintenance. It identifies the objects in problem domain,
classifying them in terms of data and behavior.
The OO model is beneficial in the following ways −
 It facilitates changes in the system at low cost.
 It promotes the reuse of components.
 It simplifies the problem of integrating components to configure large
system.
 It simplifies the design of distributed systems.

Elements of Object-Oriented System

Let us go through the characteristics of OO System −


 Objects − An object is something that is exists within problem domain
and can be identified by data (attribute) or behavior. All tangible entities
(student, patient) and some intangible entities (bank account) are modeled
as object.
 Attributes − They describe information about the object.
 Behavior − It specifies what the object can do. It defines the operation
performed on objects.
 Class − A class encapsulates the data and its behavior. Objects with
similar meaning and purpose grouped together as class.
 Methods − Methods determine the behavior of a class. They are nothing
more than an action that an object can perform.
 Message − A message is a function or procedure call from one object to
another. They are information sent to objects to trigger methods.
Essentially, a message is a function or procedure call from one object to
another.

Features of Object-Oriented System

An object-oriented system comes with several great features which are


discussed below.
Encapsulation
Encapsulation is a process of information hiding. It is simply the combination of
process and data into a single entity. Data of an object is hidden from the rest of
9

the system and available only through the services of the class. It allows
Page

9
improvement or modification of methods used by objects without affecting
other parts of a system.
Abstraction
It is a process of taking or selecting necessary method and attributes to specify
the object. It focuses on essential characteristics of an object relative to
perspective of user.
Relationships
All the classes in the system are related with each other. The objects do not exist
in isolation, they exist in relationship with other objects.
There are three types of object relationships −
 Aggregation − It indicates relationship between a whole and its parts.
 Association − In this, two classes are related or connected in some way
such as one class works with another to perform a task or one class acts
upon other class.
 Generalization − The child class is based on parent class. It indicates that
two classes are similar but have some differences.
Inheritance
 Inheritance is a great feature that allows to create sub-classes from an
existing class by inheriting the attributes and/or operations of existing
classes.
 Polymorphism and Dynamic Binding
 Polymorphism is the ability to take on many different forms. It applies to
both objects and operations. A polymorphic object is one who true type
hides within a super or parent class.
 In polymorphic operation, the operation may be carried out differently by
different classes of objects. It allows us to manipulate objects of different
classes by knowing only their common properties.

Software Development Life Cycle (SDLC)

Software Development Life Cycle (SDLC) is a process used by the software


industry to design, develop and test high quality softwares. The SDLC aims to
produce a high-quality software that meets or exceeds customer expectations,
reaches completion within times and cost estimates.
10

 SDLC is the acronym of Software Development Life Cycle.


 It is also called as Software Development Process.
Page

10
 SDLC is a framework defining tasks performed at each step in the
software development process.
 ISO/IEC 12207 is an international standard for software life-cycle
processes. It aims to be the standard that defines all the tasks required for
developing and maintaining software.

A software life cycle model (also termed process model) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model
represents all the methods required to make a software product transit through
its life cycle stages. It also captures the structure in which these methods are to
be undertaken.

In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models
may plan the necessary development activities to phases in different ways.
Thus, no element which life cycle model is followed, the essential activities are
contained in all life cycle models though the action may be carried out in
distinct orders in different life cycle models. During any life cycle stage, more
than one activity may also be carried out.

Need of SDLC

The development team must determine a suitable life cycle model for a
particular plan and then observe to it.

Without using an exact life cycle model, the development of a software product
would not be in a systematic and disciplined manner. When a team is
developing a software product, there must be a clear understanding among team
representative about when and what to do. Otherwise, it would point to chaos
and project failure. This problem can be defined by using an example. Suppose
a software development issue is divided into various parts and the parts are
assigned to the team members. From then on, suppose the team representative is
allowed the freedom to develop the roles assigned to them in whatever way they
like. It is possible that one representative might start writing the code for his
part, another might choose to prepare the test documents first, and some other
engineer might begin with the design phase of the roles assigned to him. This
would be one of the perfect methods for project failure.
11
Page

11
The stages of SDLC are as follows:

Stage1: Planning and requirement analysis

Requirement Analysis is the most important and necessary stage in SDLC.

The senior members of the team perform it with inputs from all the stakeholders
and domain experts or SMEs in the industry.

Planning for the quality assurance requirements and identifications of the risks
associated with the projects is also done at this stage.

Business analyst and Project organizer set up a meeting with the client to gather
all the data like what the customer wants to build, who will be the end user,
what is the objective of the product. Before creating a product, a core
understanding or knowledge of the product is very necessary.

For Example, A client wants to have an application which concerns money


transactions. In this method, the requirement has to be precise like what kind of
operations will be done, how it will be done, in which currency it will be done,
etc.

Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set up
for further discussion.

Once the requirement is understood, the SRS (Software Requirement


12

Specification) document is created. The developers should thoroughly follow


Page

this document and also should be reviewed by the customer for future reference.

12
Stage2: Defining Requirements

Once the requirement analysis is done, the next stage is to certainly represent
and document the software requirements and get them accepted from the project
stakeholders.

This is accomplished through "SRS"- Software Requirement Specification


document which contains all the product requirements to be constructed and
developed during the project life cycle.

Stage3: Designing the Software

The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project. This phase is the product of the last
two, like inputs from the customer and requirement gathering.

Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming is
built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their management
and programming tools like compilers, interpreters, debuggers, etc. are used to
develop and implement the code.

Stage5: Testing

After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage.

During this stage, unit testing, integration testing, system testing, acceptance
testing are done.

Stage6: Deployment

Once the software is certified, and no bugs or errors are stated, then it is
deployed.

Then based on the assessment, the software may be released as it is or with


suggested enhancement in the object segment.

After the software is deployed, then its maintenance begins.


13

Stage7: Maintenance
Page

13
Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.

This procedure where the care is taken for the developed product is known as
maintenance.

Waterfall model:
Winston Royce introduced the Waterfall Model in 1970.This model has five
phases: Requirements analysis and specification, design, implementation, and
unit testing, integration and system testing, and operation and maintenance. The
steps always follow in this order and do not overlap. The developer must
complete every phase before the next phase begins. This model is named
"Waterfall Model", because its diagrammatic representation resembles a
cascade of waterfalls.

1. Requirements analysis and specification phase: The aim of this phase is to


understand the exact requirements of the customer and to document them
properly. Both the customer and the software developer work together so as to
document all the functions, performance, and interfacing requirement of the
software. It describes the "what" of the system to be produced and not "how."In
this phase, a large document called Software Requirement Specification
(SRS) document is created which contained a detailed description of what the
system will do in the common language.

14

2. Design Phase: This phase aims to transform the requirements gathered


in the SRS into a suitable form which permits further coding in a programming
Page

language. It defines the overall software architecture together with high level
14
and detailed design. All this work is documented as a Software Design
Document (SDD).

3. Implementation and unit testing: During this phase, design is implemented.


If the SDD is complete, the implementation or coding phase proceeds smoothly,
because all the information needed by software developers is contained in the
SDD.

During testing, the code is thoroughly examined and modified. Small modules
are tested in isolation initially. After that these modules are tested by writing
some overhead code to check the interaction between these modules and the
flow of intermediate output.

4. Integration and System Testing: This phase is highly crucial as the quality
of the end product is determined by the effectiveness of the testing carried out.
The better output will lead to satisfied customers, lower maintenance costs, and
accurate results. Unit testing determines the efficiency of individual modules.
However, in this phase, the modules are tested for their interactions with each
other and with the system.

5. Operation and maintenance phase: Maintenance is the task performed by


every user once the software has been delivered to the customer, installed, and
operational.

When to use SDLC Waterfall Model?

Some Circumstances where the use of the Waterfall model is most suited are:

o When the requirements are constant and not changed regularly.


o A project is short
o The situation is calm
o Where the tools and technology used is consistent and is not changing
o When resources are well prepared and are available to use.

Advantages of Waterfall model

o This model is simple to implement also the number of resources that are
required for it is minimal.
o The requirements are simple and explicitly declared; they remain
15

unchanged during the entire project development.


Page

15
o The start and end points for each phase is fixed, which makes it easy to
cover progress.
o The release date for the complete product, as well as its final cost, can be
determined before development.
o It gives easy to control and clarity for the customer due to a strict
reporting system.

Disadvantages of Waterfall model

o In this model, the risk factor is higher, so this model is not suitable for
more significant and complex projects.
o This model cannot accept the changes in requirements during
development.
o It becomes tough to go back to the phase. For example, if the application
has now shifted to the coding phase, and there is a change in requirement,
It becomes tough to go back and change it.
o Since the testing done at a later stage, it does not allow identifying the
challenges and risks in the earlier phase, so the risk reduction strategy is
difficult to prepare.

Spiral Model:

The spiral model, initially proposed by Boehm, is an evolutionary software


process model that couples the iterative feature of prototyping with the
controlled and systematic aspects of the linear sequential model. It implements
the potential for rapid development of new versions of the software. Using the
spiral model, the software is developed in a series of incremental releases.
During the early iterations, the additional release may be a paper model or
prototype. During later iterations, more and more complete versions of the
engineered system are produced.

The Spiral Model is shown in fig:


16
Page

16
Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of
purpose for that cycle, the various alternatives that are possible for achieving the
targets, and the constraints that exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate
these various alternatives based on the goals and constraints. The focus of
evaluation in this stage is located on the risk perception for the project.

Development and validation: The next phase is to develop strategies that


resolve uncertainties and risks. This process may include activities such as
benchmarking, simulation, and prototyping.

Planning: Finally, the next step is planned. The project is reviewed, and a
choice made whether to continue with a further period of the spiral. If it is
determined to keep, plans are drawn up for the next step of the project.

The development phase depends on the remaining risks. For example, if


performance or user-interface risks are treated more essential than the program
development risks, the next phase may be an evolutionary development that
includes developing a more detailed prototype for solving the risks.
17
Page

17
The risk-driven feature of the spiral model allows it to accommodate any
mixture of a specification-oriented, prototype-oriented, simulation-oriented, or
another type of approach. An essential element of the model is that each period
of the spiral is completed by a review that includes all the products developed
during that cycle, including plans for the next cycle. The spiral model works for
development as well as enhancement projects.

When to use Spiral Model?

o When deliverance is required to be frequent.


o When the project is large
o When requirements are unclear and complex
o When changes may require at any time
o Large and high budget projects

Advantages

o High amount of risk analysis


o Useful for large and mission-critical projects.

Disadvantages

o Can be a costly model to use.


o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.

Incremental Model:

Incremental Model is a process of software development where requirements


divided into multiple standalone modules of the software development cycle. In
this model, each module goes through the requirements, design, implementation
and testing phases. Every subsequent release of the module adds function to the
previous release. The process continues until the complete system achieved.
18
Page

18
The various phases of incremental model are as follows:

1. Requirement analysis: In the first phase of the incremental model, the


product analysis expertise identifies the requirements. And the system
functional requirements are understood by the requirement analysis team. To
develop the software under the incremental model, this phase performs a crucial
role.

2. Design & Development: In this phase of the Incremental model of SDLC,


the design of the system functionality and the development method are finished
with success. When software develops new practicality, the incremental model
uses style and development phase.

3. Testing: In the incremental model, the testing phase checks the performance
of each existing function as well as additional functionality. In the testing phase,
the various methods are used to test the behavior of each task.

4. Implementation: Implementation phase enables the coding phase of the


development system. It involves the final coding that design in the designing
and development phase and tests the functionality in the testing phase. After
19

completion of this phase, the number of the product working is enhanced and
Page

upgraded up to the final system product

19
When we use the Incremental Model?

o When the requirements are superior.


o A project has a lengthy development schedule.
o When Software team are not very well skilled or trained.
o When the customer demands a quick release of the product.
o You can develop prioritized requirements first.

Advantage of Incremental Model

o Errors are easy to be recognized.


o Easier to test and debug
o More flexible.
o Simple to manage risk because it handled during its iteration.
o The Client gets important functionality early.

Disadvantage of Incremental Model

o Need for good planning


o Total Cost is high.
o Well defined module interfaces are needed.

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.
20
Page

20
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.
21

6. Review: In this phase, after the product deployment, review phase is


Page

performed to check the behaviour and validity of the developed product. And if

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

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.

V-Model:

V-Model also referred to as the Verification and Validation Model. In this, each
phase of SDLC must complete before the next phase starts. It follows a
sequential design process same as the waterfall model. Testing of the device is
planned in parallel with a corresponding stage of development.
22
Page

22
Verification: It involves a static analysis method (review) done without
executing code. It is the process of evaluation of the product development
process to find whether specified requirements meet.

Validation: It involves dynamic analysis method (functional, non-functional),


testing is done by executing code. Validation is the process to classify the
software after the completion of the development process to determine whether
the software meets the customer expectations and requirements.

So V-Model contains Verification phases on one side of the Validation phases


on the other side. Verification and Validation process is joined by coding phase
in V-shape. Thus it is known as V-Model.

There are the various phases of Verification Phase of V-model:

1. Business requirement analysis: This is the first step where product


requirements understood from the customer's side. This phase contains
detailed communication to understand customer's expectations and exact
requirements.
2. System Design: In this stage system engineers analyze and interpret the
23

business of the proposed system by studying the user requirements


document.
Page

23
3. Architecture Design: The baseline in selecting the architecture is that it
should understand all which typically consists of the list of modules, brief
functionality of each module, their interface relationships, dependencies,
database tables, architecture diagrams, technology detail, etc. The
integration testing model is carried out in a particular phase.
4. Module Design: In the module design phase, the system breaks down
into small modules. The detailed design of the modules is specified,
which is known as Low-Level Design
5. Coding Phase: After designing, the coding phase is started. Based on the
requirements, a suitable programming language is decided. There are
some guidelines and standards for coding. Before checking in the
repository, the final build is optimized for better performance, and the
code goes through many code reviews to check the performance.

There are the various phases of Validation Phase of V-model:

1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed
during the module design phase. These UTPs are executed to eliminate
errors at code level or unit level. A unit is the smallest entity which can
independently exist, e.g., a program module. Unit testing verifies that the
smallest entity can function correctly when isolated from the rest of the
codes/ units.
2. Integration Testing: Integration Test Plans are developed during the
Architectural Design Phase. These tests verify that groups created and
tested independently can coexist and communicate among themselves.
3. System Testing: System Tests Plans are developed during System
Design Phase. Unlike Unit and Integration Test Plans, System Tests Plans
are composed by the client?s business team. System Test ensures that
expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business
requirement analysis part. It includes testing the software product in user
atmosphere. Acceptance tests reveal the compatibility problems with the
different systems, which is available within the user atmosphere. It
conjointly discovers the non-functional problems like load and
performance defects within the real user atmosphere.
24
Page

When to use V-Model?

24
o When the requirement is well defined and not ambiguous.
o The V-shaped model should be used for small to medium-sized projects
where requirements are clearly defined and fixed.
o The V-shaped model should be chosen when sample technical resources
are available with essential technical expertise.

Advantage (Pros) of V-Model:

1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before
coding.
3. This saves a lot of time. Hence a higher chance of success over the
waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.

Disadvantage (Cons) of V-Model:

1. Very rigid and least flexible.


2. Not a good for a complex project.
3. Software is developed during the implementation stage, so no early
prototypes of the software are produced.
4. If any changes happen in the midway, then the test documents along with
the required documents, has to be updated.

RAD (Rapid Application Development) Model:

RAD is a linear sequential software development process model that


emphasizes a concise development cycle using an element based construction
approach. If the requirements are well understood and described, and the project
scope is a constraint, the RAD process enables a development team to create a
fully functional system within a concise time period.

RAD (Rapid Application Development) is a concept that products can be


developed faster and of higher quality through:

o Gathering requirements using workshops or focus groups


25

o Prototyping and early, reiterative user testing of designs


Page

25
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next
product version
o Less formality in reviews and other team communication

The various phases of RAD are as follows:

1.Business Modelling: The information flow among business functions is


defined by answering questions like what data drives the business process, what
data is generated, who generates it, where does the information go, who process
it and so on.

2. Data Modelling: The data collected from business modeling is refined into a
set of data objects (entities) that are needed to support the business. The
attributes (character of each entity) are identified, and the relation between these
data objects (entities) is defined.

3. Process Modelling: The information object defined in the data modeling


phase are transformed to achieve the data flow necessary to implement a
business function. Processing descriptions are created for adding, modifying,
deleting, or retrieving a data object.

4. Application Generation: Automated tools are used to facilitate construction


of the software; even they use the 4th GL techniques.
26
Page

26
5. Testing & Turnover: Many of the programming components have already
been tested since RAD emphasis reuse. This reduces the overall testing time.
But the new part must be tested, and all interfaces must be fully exercised.

When to use RAD Model?

o When the system should need to create the project that modularizes in a
short span time (2-3 months).
o When the requirements are well-known.
o When the technical risk is limited.
o When there's a necessity to make a system, which modularized in 2-3
months of period.
o It should be used only if the budget allows the use of automatic code
generating tools.

Advantage of RAD Model

o This model is flexible for change.


o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer.
o It reduced development time.
o It increases the reusability of features.

Disadvantage of RAD Model

o It required highly skilled designers.


o All application is not compatible with RAD.
o For smaller projects, we cannot use the RAD model.
o On the high technical risk, it's not suitable.
o Required user involvement.

******************
27
Page

27

You might also like