You are on page 1of 20

Object Oriented Analysis and Design

Unit 3

Unit 3

Object Oriented Systems Development


Life Cycle

Structure:
3.1 Introduction
Objectives
3.2 The Process of Software Development
Implementation, testing and documenting
Deployment and maintenance
3.3 Developing Good Quality Software
3.4 Use Case Driven Approach for Object Oriented Systems Development
Use case driven object oriented analysis
Object oriented design
Prototyping
Implementation: component based development
Incremental testing
3.5 Reusability
3.6 Summary
3.7 Glossary
3.8 Terminal Questions
3.9 Answers

3.1 Introduction
By now you should be familiar with the concepts of objects. In this unit we
will study about object oriented systems development life cycle and the
concepts associated with it.
Object oriented systems development life cycle deals with the task of
making program development faster and much more efficient, resulting in
lesser costs. Components are developed internally or can be obtained from
an external source. In Object Oriented Systems Development (OOSD), we
combine the concepts of systems development life cycle and object oriented
modeling.
The phases of the object oriented systems development life cycle involve
the following tasks:

Sikkim Manipal University

Page No.: 37

Object Oriented Analysis and Design

Unit 3

Identifying opportunities and possible problems that would suit the


OO approach The problems or opportunities should include programs
that can be developed by using the existing program segments.

Defining the user requirements for a system Here, we define all the
objects present in the system and the interactions within them. We
define a model of the objects that are part of the users business system
like suppliers, inventory levels, customers and so on.

Programming or altering modules This uses the object model that


was built in the analysis stage and refined in the design stage. It
develops the interactions among the objects. In this step, the
programmers use object oriented programming languages to define
classes for the objects of the actual business processes and write
programs to execute the tasks. For example a supplier class is created
for the supplier object.

User evaluation Users evaluate the created programs and any


necessary changes are implemented by adding scenarios and objects.
This is repeated iteratively until a final model is ready.

Timely review and modification The final operational system is


modified /updated at regular intervals.

This unit first defines the systems development life cycle and then explains
an object oriented approach for software development.This unit emphasizes
the importance of the analysis and design part of the software development
life cycle which helps to build high quality software.
Objectives:
After studying this unit you should be able to:
define object oriented systems development life cycle
explain the process of software development
describe the key aspects for building high-quality software
explain object oriented systems development and its associated
concepts
define reusability of software

Sikkim Manipal University

Page No.: 38

Object Oriented Analysis and Design

Unit 3

3.2 The Process of Software Development


A software development process or a life cycle is a disciplined approach to
develop a software product. There are various models that explain the
activities or tasks that happen during the process.
The software development process can be categorized into a number of
sub-processes. Each sub-process needs to have the following information:
A description about how the software works
Specification of the input needed for the process
Specification of the output to be generated
The software development process can also be looked upon as a series of
transformations where the output of a particular phase becomes the input
for the next phase as shown in figure 3.1.
System usage
identification

Design execution detail

Problem description
analysis
System
Software
Product
Figure 3.1: Process of Software Development

We can explain the series of transformations that takes place in three


different phases:
1) Analysis In this phase, the system analyst collects the details of the
problem, interacts with the user of the system to find out the user
requirements and analyzes the system to understand the functioning.
Based on this study, the analyst prepares a model of the desired
system. This model is purely based upon what the system is expected to
do. At this stage the implementation details are not considered. Only the
model of the system is prepared based on the idea that the system is
made up of a set of communicating objects. Importance is given to the
main building blocks of the system.
Sikkim Manipal University

Page No.: 39

Object Oriented Analysis and Design

Unit 3

2) Design This phase begins with the problem statement and concludes
with a detailed design that can be converted into a functional system.
This conversion covers the details of software development, description
of how the software is built, description of the software development and
also the testing phase.
3) Execution During this phase, the class objects and the interrelationships of these classes are translated and actually coded using
the programming language decided upon. The databases are
constructed and the complete system is given a functional shape with
adequate testing.
Execution phase has to consider how the system reacts to the program
which is written for the system to work.
One of the models used for the software development process is the water
fall approach which begins with requirements collection. Once the
requirements have been decided, we must decide as to how we can achieve
them. The waterfall approach is illustrated in figure 3.2.
Requirements

Analysis

Modeling

Coding

Testing

Acceptance
Figure 3.2: Waterfall Approach to Software Development

Sikkim Manipal University

Page No.: 40

Object Oriented Analysis and Design

Unit 3

In real world scenarios, problems are not well specified. This is one of the
limitations of the waterfall approach. The waterfall model assumes that the
requirements are well known before the design phase commences. But we
need to understand that one needs to work with the product before the
requirements are fully analyzed. It also makes an assumption that the
requirements would continue to be stagnant during the development cycle.
Finally, even though the clear specification is there, it makes an assumption
that the design knowledge would be available to develop the product.
The waterfall model is suitable for a well known product. Generally the
approach is suitable for large projects.
The advantages of the water fall approach are:
It is easier to explain.
The stages and activities are well specified.
It helps to plan and schedule the project.
It includes verification at each stage which ensures early detection of
errors or assumptions.
There are also certain limitations associated with this approach. The
waterfall model assumes that the requirements of a system can be frozen
before the design commences. This is possible for systems which are
designed to automate an existing manual system. But for a newly conceived
system, establishing the requirement is difficult, as the user does not know
the requirements. Therefore, changing only a few requirements is unrealistic
for such a system.
The waterfall model demands that the requirements be completely specified
before the rest of the development can proceed. In some situations it might
be advisable to first develop a part of the system completely, and later
enhance the system in phases.
3.2.1 Implementation, testing and documenting
In the implementation phase, the designs are translated into code.
Computer programs are written using conventional programming techniques
or an application generator. Programming tools such as compilers,
interpreters, and debuggers are used for generating the code. Different high
level programming languages like C, C++, .NET and Java are used for

Sikkim Manipal University

Page No.: 41

Object Oriented Analysis and Design

Unit 3

coding. We choose the programming language according to the type of


application.
The testing phase employs quality control measures. Its basic function is to
detect errors in the software built. The output of the requirement analysis
and design phases is a document that is usually textual and non-executable.
After the coding phase, computer programs are available that can be
executed for testing phases. This implies that testing not only has to
uncover errors that occur during coding, but also the errors of the previous
phases. Thus, the goal of testing is to uncover requirement, design and
coding errors.
After the testing phase, it is important to document the system developed.
Since documentation involves writing procedures, people who are
specialized in this field develop these documents. The documents contain
all the details about the system being built, and the entire process that it
goes through before it becomes operational.
3.2.2 Deployment and maintenance
Deployment is nothing but a combination of all the activities that make a
system work. Deployment is always considered from the clients view as well
as the end-users view after the system has been delivered. After the system
has been delivered, deployment of the system will play a major role in
making the system functional. The end users will have to test the system
and check whether it has been built according to their needs.
Maintenance phase consists of all the activities that are performed to keep
the system operational after the installation of software. Removing errors is
one of the tasks involved in maintenance. Maintenance is also needed due
to changes in the requirements of the system. The introduction of a software
system affects the work environment. This change in environment often
changes what is required from the system. Furthermore, often after the
system is installed, and the users have had an opportunity to work with it for
some time, they come up with requirements that were not identified during
requirement analysis phase. This occurs since the experience with the
software helps the user to specify the needs more precisely. There might
also be changes in the input data, the system environment and output
formats. All these require modification of the software.

Sikkim Manipal University

Page No.: 42

Object Oriented Analysis and Design

Unit 3

Activity 1
Analyze a model used for software development and compare it with the
waterfall model.
Self Assessment Questions
1. The waterfall model assumes that the requirements are well known
before the _____________ commences.
2. Maintenance phase consists of all the activity after the
______________ of software.
3. After the testing phase, _________ for a system is developed.

3.3 Developing Good Quality Software


In the previous section we studied about the process of software
development. In this section we will discuss the process of developing good
quality software.
There are certain standards and models which specify how good software
has to be developed. They provide a good platform for evaluating and
improving the software code. Here, implementation and design details are
excluded. The standards and the models developed for the software serve
as an excellent medium between the developers and the end users.
Analyzing the software specification is very important and also cost
effective. Identifying and correcting bugs in the specification is much better
than doing it in the code.
High quality products that are free of errors satisfy user requirements. There
are basically two ways to perform system testing. We can actually test a
system according to how it is built or what the system has to do.
Correspondence, correctness; verification and validation define these
approaches.

Correspondence Correspondence defines how the system developed


can adapt to its functioning environment.

Correctness Correctness determines if the product requirements are


consistent with respect to the system specifications.

Verification Verification is a process which determines whether a


system is functioning according to the requirements specified and

Sikkim Manipal University

Page No.: 43

Object Oriented Analysis and Design

Unit 3

meeting the organizations goal Verification is usually performed at the


end of the project.

Validation Validation is a process in which all the technical


specifications, consistency and the adherence to standards of the
system are checked. Validation is done when the project commences
but verification can be done only after the acceptance of the
specifications. Validation ensures that the right product is developed
whereas verification ensures that the product is developed in the right
manner.

Figure 3.3 shows the quality measures taken for software evaluation.

Figure 3.3: Evaluation of software standards

Verification and validation are very much different from each other and are
independent as well. We can definitely create a product according to the
specification. But if the specification is itself inaccurate, we cannot develop
the correct product. A product may also be definite in its form but may not
satisfy the users needs. After many years a product may be developed that
corresponds to the original design statement but may not match with the
current technology trends and the way the system operates.
Self Assessment Questions
4. The final agenda of building high quality software is to
______________ the user.
5. There are basically __________ ways to perform system testing by
which we can actually test a system.
6. Validation is always __________________ in its approach.

Sikkim Manipal University

Page No.: 44

Object Oriented Analysis and Design

Unit 3

3.4 Use Case Driven Approach for Object Oriented Systems


Development
In the previous section, we studied about the process of building high quality
software. In this section we will study about the use case driven approach
involved in building systems development by object oriented methodology.
The object oriented software development life cycle (OOSDLC) contains the
following three macro processes which are shown in figure 3.4:
Object Oriented Analysis
Object Oriented Design
Object Oriented Implementation
The use-case model can be implemented almost at every stage of software
development. Further, by implementing the life cycle model of Jacobson
Ericsson; we can insert designs that are traceable through requirements.
Making
use of OO
languages
and usecases

QA tests
and user
satisfaction
usability

Construct
object and
dynamic
model

User interface
and prototype
construction

Constructing use
case model

Object
analysis

Methods and
attribute
definition, class
design

Tests and
Validation

Assurance test, user satisfaction


test & usability test

Figure 3.4: Object Oriented Analysis System Development

The important advantage here is that all the design decisions can be traced
back directly to the user requirements.
Object oriented software development methodology enables us to look at
the problem as a whole. It also encourages incremental development.

Sikkim Manipal University

Page No.: 45

Object Oriented Analysis and Design

Unit 3

3.4.1 Use case driven object oriented analysis


The use case driven approach means making use of use cases which are
the main modeling source for the functioning of the system. A use case
defines how the user interacts with the system to perform some activity such
as searching for information, making reservations etc. Use cases are used
to identify and communicate with the system requirements. To analyze the
system requirements we need to recognize users and identify how the users
use the system. In object oriented approach, or the traditional development
approach, scenarios are used for helping analysts to understand the
requirements. However, these scenarios may be treated casually or not
documented to the fullest. Ivar Jacobson came up with the concept of use
case which describes the user-system interaction. The concept worked so
exceptionally well that it became a very important entity in system
development. The object oriented environment has adopted use cases to a
very high degree.
Projecting these high level processes and interactions with customers in a
scenario and analyzing them is called as use-case modeling. The use-case
model defines the way users look at a system and their needs.
Identifying classes is one of the major tasks associated with the users. Here
use case scenarios play a very prominent role in identifying system
requirements and the tasks to be achieved.
Physical objects in the system are very important for identifying real world
scenarios. For example, the objects in the library system might look like this:
Books taken from the library
Books in the library.
Book issuing process
Documentation is also one of the most significant activity, which will not
conclude with object oriented analysis but should be performed throughout
the system development process The document should be made as short
as possible and 80 percent of the document should be available only to
users who require it and the rest must be available to all class of users.
Good modeling means good documentation has been performed for the
system.
Sikkim Manipal University

Page No.: 46

Object Oriented Analysis and Design

Unit 3

3.4.2 Object-Oriented design


Object oriented design is a strategy where designers work based upon
objects rather than operations or functions. The operational system which is
designed is made up of objects which have their own state of functioning.
The information about the functioning is hidden here and hence offers
security for other parts of the system. Object oriented design is an essential
part of object oriented development.
Object oriented design and object oriented analysis are separate entities.
Object oriented design is concerned with developing object oriented model
of a software system to identify the desired requirements.
The guidelines given below tell us how to develop a good object-oriented
design:
Study and have knowledge about the existing class library
Current system reusage must be known
If existing classes are not suitable, create new ones so that they can be
reused often.
Ensure that classes are very simple even if their number increases
Ensure that the developed attributes and methods are reusable
3.4.3 Prototyping
The system characteristics are clearly explained in object-oriented analysis
and design, but constructing a prototype for the key elements is very much
essential after the products are chosen.
Prototyping is an approach to the development of a system where software
simulates the aspects of an actual processing system. In simple words,
prototyping can be called as a shorter version of a working system. Iterative
approaches are followed here to implement prototypes. Prototypes help
system designers to build information systems that are easy to manipulate
for end users. Prototyping is an active part of the analysis phase in the
systems development life cycle. A prototype which satisfies the user can be
used to identify the actions for the use cases of the prototype. A prototype
must be built keeping the user in mind.
Prototyping occurs in many forms, it may vary from basic sketch designs to
paper screens from which users and developers can gain large amount of
Sikkim Manipal University

Page No.: 47

Object Oriented Analysis and Design

Unit 3

information. Prototyping is also used to collect user feedbacks in certain


computer systems. As the initial prototype is refined in stages and becomes
more aligned with the application requirements, additional details can be
added to the application. With further testing, and rebuilding we can ensure
that the application is within the framework of the prototype. Prototyping
helps the developer to test and refine the user interface and specifications
and enhance the usability of the system.
Prototypes are classified into the following categories:

Analysis prototype This kind of a prototype helps the user to interact


with a partial developed part of the system. It helps in clarifying users
requirements and may simulate the proposed interface. For designing
system requirements, prototypes can be considered as documents.

Design prototype This kind of a prototype explores the architecture of


the system during the elaboration phase of development. This prototype
helps in finding out flaws in the system. It proves that the implementation
is feasible and will be successful in producing a deliverable product.
System performance is also focused here.

Vertical prototype This kind of a prototype examines smaller parts


and identifies problems in a system. This is necessary when the
complete implementation of a portion of the system is required.

Feasibility prototype Successful implementation of a portion of the


system can be identified using this prototype.

Prototypes are very essential in defining users requirements for a


processing system.
The time required to create a prototype might be several weeks, depending
on the complexity of the prototype to be created. Prototyping should involve
every person concerned with the project and must consist of all the user
groups. End users and people from the management group must review the
prototype to ensure that it meets the requirements specified for the final
design. The purpose of this review is as follows:
1. To demonstrate that the prototype has been created in accordance with
the specifications and that the final specification is appropriate

Sikkim Manipal University

Page No.: 48

Object Oriented Analysis and Design

Unit 3

2. To collect information about the mistakes and other problems


encountered during the development in the intermediate prototype
stages
3. To provide the management an initial idea of what the system can do.
Prototyping is always a very dependable method at any stage of
development. Prototyping must be performed simultaneously when
functional specifications are prepared. When the key features of the system
are prototyped, we can identify the modifications required. This will also
uncover additional features or problems which were not identified before
building the prototype.
Some advantages of prototyping are:
Reduces development time
Reduces development costs
Encourages user involvement
Developers receive user feedback
Facilitates system implementation since users know what to expect
Results in higher user satisfaction
Exposes developers to potential future system enhancements
3.4.4 Implementation: Component Based Development
Component Based Development (CBD) offers a radically new approach to
the design, construction, implementation and evolution of software
applications. Software applications are built by gathering components from a
variety of sources. The components themselves may be written in several
programming languages and executed on different platforms.
Component based software development (CBD) mainly deals with building
large software systems by integrating previously existing components. By
enhancing the flexibility and maintainability of these systems, this idea can
potentially be used to reduce software development costs, assemble
systems rapidly, and reduce the maintenance burden associated with the
support and upgrade of large systems.
Today, software components are designed and tested in-house. Component
based manufacturing makes all products visible for the market. For example
the CAD application helps mechanical engineers to develop several
prototype models for cars which can be manufactured. Every operation and
Sikkim Manipal University

Page No.: 49

Object Oriented Analysis and Design

Unit 3

modification can be done by a single click of the mouse. Similarly,


Component based development (CBD) is a mechanized approach to the
software development process. We can customize application development
by the integration of pre-built, reusable, pre-tested software elements that
function with each other. The two basic ideologies of component based
development are as follows:
1. The application development can be improvised consistently if
applications are assembled quickly from pre-fabricated software
elements.
2. A huge collection of interpretable software must be made available to
developers.
Both these ideas put together create an activity for an industrial process that
is fit to meet the high standards in global business development.
CBD developers can integrate elements to develop complete software
application. Components may be constructed from other elements or can be
built using pre-built components. Visual code can be used to bind the
components together.
Users benefit by using CBD as it results in faster development cycles,
improved customization and increased flexibility. CBD allows applications to
work faster and together. The resultant output is good and requires less
development effort.
Software elements are the working units of a program. They are the building
blocks which offer reusable services. A software element can request a
service from another element or perform its own services on a request. The
delivery of services is independent, which means that the elements work
together to achieve a task. Each element would be unaware of how the
other element would be working meaning that nothing would be transparent
here.
In simple words, we can say that object oriented concept relates to analysis,
design and programming, where as component based development is
related to the implementation and the system integration phase of software
development.
Rapid application development (RAD) is a combination of tools and
techniques that are used to develop an application faster when compared to
Sikkim Manipal University

Page No.: 50

Object Oriented Analysis and Design

Unit 3

using the conventional methods. This term is used commonly in software


prototyping.
We can develop products faster and of higher quality through RAD by
adopting the following measures:
Gathering requirements by making use of workshops or focus groups
Prototyping and user testing of designs
Re-using software elements
Having less formal reviews and team communication
RAD cannot replace the system development life cycle. It concentrates
more on process description and can be integrated with object oriented
approach. The main task of RAD is to develop an application quickly and
efficiently through tools such as Visual Basic, Delphi, and Powerbuilder etc.
RAD commences after the complete design for an application has been
completed. The main goal of RAD is to build a version of the application to
check whether we have actually understood the application or not. Further, it
also indicates whether the application is performing as per the requirement
specified or not. In RAD a large number of iterations are involved. At the end
of all iterations, we can understand the problem to a better extent and this
helps in making improvements. RAD promotes the incremental development
of software.
Prototyping and RAD cannot be used instead of the object oriented software
development model. Instead, we go through these phases in a rapid
manner, completing a bit more in every phase of the prototype. We can give
very impressive demos using RAD tools. However, we have to develop the
prototype features within specific timelines.
3.4.5 Incremental testing
Incremental testing is a form of iterative test model. Here the test is
performed by using a series of increments. A final tool is developed after a
series of increments. Information is gathered from users of software and
increments are done based on this.
We can perform incremental testing in the following two ways:
1) Top-Down approach In this approach, the main module is connected
to the sub-modules and the stubs are used to replace the coordinated
Sikkim Manipal University

Page No.: 51

Object Oriented Analysis and Design

Unit 3

modules. Testing is done for each sub-module in an incremental


manner.
2) Bottom-Up approach Here the low level components are connected
as clusters. The test driver (which is a program code) is used and testing
is done on the clusters one by one.
Activity 2
Analyze how a prototype works by visiting a software company.
Self Assessment Questions
7. A prototype is a ___________ of a description of a software product
developed.
8. Component based software development (CBD) mainly deals with
building ___________ software systems.
9. Incremental testing is a form of ___________ test model.

3.5 Reusability
In the previous section, we studied about object oriented system
development and the concepts associated with it. In this section we will
study about the concept of re-usability and its benefits.
Reusability is one of the major benefits associated with object oriented
system development. It is also one of the most difficult tasks to deliver. If an
object has to be made reusable, more efforts are required to design it. For
the object to be delivered, development team must have up-front time to
plan reusability into the project. Reusability makes the job of development
clear, more reliable, reduces time and cost, and improves consistency.
Existing software elements can be effectively evaluated if the following
questions are answered for the intended applications:
Has my problem partially been solved?
Has my problem completely solved?
How have similar problems been addressed before?
For these questions to be answered, detailed information about the software
components is required. The reuse strategy can be promoted by the
following measures:
Re-usable objects and codes must have a standard for naming and
storing attributes
Sikkim Manipal University

Page No.: 52

Object Oriented Analysis and Design

Unit 3

Object repository must be present to store objects with suitable security


measures
Management must encourage a reuse philosophy
Analysts and developers must identify reusable objects in the current
systems. They must also design or develop objects so that they can be
reused in the long run.

The common reuse principle helps in deciding the classes that must be
placed in a package. The classes in a package are always reused together.
Reusable classes work with other classes that are a part of reusable
abstraction.
The enhanced reusability of object-oriented code also increases its
reliability. A class taken from a library is likely to have explored its way into a
variety of different applications and programs. The more the code is being
used, the more likely that the problems will be encountered and fixed. Bugs
that appear to be strange and difficult to find in our program might already
have been located and eliminated.
Self Assessment Questions
10. If an object has to be reusable, more efforts are required to
______________ it.
11. Reusability makes the job of ______________clear.
12. Reusability is one of the major benefits associated with ___________.

3.6 Summary
This chapter discussed system development life cycle (SDLC) in general
and object oriented and use-case driven SDLC in particular. The main idea
involved in software process is the conversion of users requirements
through the application domain. Use case or a set of scenarios can be of
great use for analyzing the users needs. Here, promoting and developing
high quality software is given great importance.
High quality software provides users with an application that satisfies their
requirements. We discussed quality measures like correspondence,
correctness, verification and validation. Correspondence informs us how
well the system responds to the users needs. Correction tells whether the
system is performing correctly and if it is producing the desired results.
Sikkim Manipal University

Page No.: 53

Object Oriented Analysis and Design

Unit 3

Verification checks for correctness and validation is a task that predicts


correspondence.
In object oriented design, we spend more time for gathering requirements,
constructing the development and analysis model and in turning it into a
design model. Object oriented systems development contains three macro
processes: Object oriented analysis, Object oriented design and Object
oriented implementation.
Object oriented analysis makes use of a use case model and interaction
figures to ascertain users needs and the responsibility of system classes.
Then, validation and testing of the model takes place. We also need to
document it simultaneously.
Object oriented design mainly concentrates on the following:
Specifying design classes and their protocols
Developing class diagrams, user interfaces and prototypes
Testing usability and user satisfaction which is based on use cases and
usage
Use case concept is adapted through almost all activities of software
development.
Component based development is a mechanized approach to software
development. Software elements are viewed as functional units which
promote reusable services. A CBD developer can assemble elements into a
collection of reusable services.
The rapid application development (RAD) methodology develops systems
rapidly to implement software tools.
Reusability is an important advantage of object oriented systems
development and it is also very difficult to implement. Upfront design is used
to develop re-usable objects.

3.7 Glossary
Term

Description

Non Executable
Domain
Repository

Something which cannot produce a finite output


Platform on which a user works
Centralized place where data is stored

Sikkim Manipal University

Page No.: 54

Object Oriented Analysis and Design

Unit 3

3.8 Terminal Questions


1.
2.
3.
4.
5.
6.
7.

Explain the process of software development.


How is high quality software built?
Explain the method of object oriented design.
Explain the concept of prototyping.
What is component based development?
What is incremental testing?
What is reusability? How is it useful?

3.9 Answers
Self Assessment Questions
1. Requirements
2. Installation
3. Documentation
4. Satisfy
5. Two
6. One Sided
7. Version
8. Large
9. Iterative
10. Design
11. Development
12. Object Oriented systems development
Terminal Questions
1. Refer Section 3.2 The process of software development
2. Refer section 3.3 Building good quality software
3. Refer section 3.4.2 Object oriented design
4. Refer section 3.4.3 Prototyping
5. Refer Section 3.4.4 Component based development
6. Refer section 3.4.5 Incremental Testing
7. Refer section 3.5 Reusability
References

Sikkim Manipal University

Page No.: 55

Object Oriented Analysis and Design

Unit 3

Ali Bahrami (2008). Object Oriented Systems Development. Mc Graw


Hill, New Delhi
Booch Grady (1987). Software Engineering with ADA. Pearson
publications, New Jersey
Jawadekar W S, Waman S Jawadekar (2004). Software Engineering:
Principles and Practice. Mc Graw Hill, New Delhi

E-References
www.objectmentor.com/resources/articles/granularity.pdf
http://qwickstep.com/search/waterfall-sdlc.html

Sikkim Manipal University

Page No.: 56

You might also like