Oose Unit 1
Oose Unit 1
Oose Unit 1
3 types of software:
1. system software(Operating system-MAC os, Windows, Linux, Android)
2. utility software (Anti-virus, File management system, Disk management tools, Data mining tool, Disk
cleanup tool)
3. application software(MS Office, Internet browsers, Music software, Communication software[skype,
zoom, team])
Engineering
Engineering is the designing, testing and building of machines, structures and processes using maths and
science.
Software engineering
Software engineering is an engineering branch associated with development of software product using
well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient
and reliable software product.
Software engineering refer to the methods and techniques used to develop and maintain software.
OOSE(Object Oriented Software Engineering)
Object-Oriented Software Engineering (OOSE) is a software design technique that is used in software design
in object-oriented programming.
OOSE is developed by Ivar Jacobson in 1992. OOSE is the first object-oriented design methodology that
employs use cases in software design.
OOSE is one of the precursors of the Unified Modeling Language (UML), such as Booch and OMT.
It includes a requirements, an analysis, a design, an implementation and a testing model.
Interaction diagrams are similar to UML's sequence diagrams. State transition diagrams are like UML
statechart diagrams.
1
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Below, we'll take a look at the biggest challenges for software developers in 2021 and what they can do to
overcome them.
1. Keeping Pace with Innovation. ... 2. Cultural Change. ... 3. Customer Experience. ...
4. Data Privacy. ... 5. Cybersecurity. ... 6. AI and Automation. ...
7. Data Literacy. ... 8. Cross-Platform Functionality. 9. Budgeting 10. .Talent
2
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
SDLC
Software Development Life Cycle, SDLC for short, is a well-defined, structured sequence of stages
in software engineering to develop the intended software product.
SDLC Activities
SDLC provides a series of steps to be followed to design and develop a software product efficiently. SDLC
framework includes the following steps:
3
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Communication
This is the first step where the user initiates the request for a desired software product. He contacts the service
provider and tries to negotiate the terms. He submits his request to the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the project. The team holds discussions with
various stakeholders from problem domain and tries to bring out as much information as possible on their
requirements. The requirements are contemplated and segregated into user requirements, system requirements
and functional requirements. The requirements are collected using a number of practices as given -
After requirement gathering, the team comes up with a rough plan of software process. At this step the team
analyzes if a software can be made to fulfill all requirements of the user and if there is any possibility of software
being no more useful. It is found out, if the project is financially, practically and technologically feasible for the
organization to take up. There are many algorithms available, which help the developers to conclude the
feasibility of a software project.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring up the best software model suitable for
the project. System analysis includes Understanding of software product limitations, learning system related
problems or changes to be done in existing systems beforehand, identifying and addressing the impact of project
on organization and personnel etc. The project team analyzes the scope of the project and plans the schedule and
resources accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the desk and design the software
product. The inputs from users and information gathered in requirement gathering phase are the inputs of this
step. The output of this step comes in the form of two designs; logical design and physical design. Engineers
produce meta-data and data dictionaries, logical diagrams, data-flow diagrams and in some cases pseudo codes.
Coding
This step is also known as programming phase. The implementation of software design starts in terms of writing
program code in the suitable programming language and developing error-free executable programs efficiently.
4
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Testing
An estimate says that 50% of whole software development process should be tested. Errors may ruin the
software from critical level to its own removal. Software testing is done while coding by the developers and
thorough testing is conducted by testing experts at various levels of code such as module testing, program
testing, product testing, in-house testing and testing the product at user’s end. Early discovery of errors and their
remedy is the key to reliable software.
Integration
Software may need to be integrated with the libraries, databases and other program(s). This stage of SDLC is
involved in the integration of software with outer world entities.
Implementation
This means installing the software on user machines. At times, software needs post-installation configurations at
user end. Software is tested for portability and adaptability and integration related issues are solved during
implementation.
This phase confirms the software operation in terms of more efficiency and less errors. If required, the users are
trained on, or aided with the documentation on how to operate the software and how to keep the software
operational. The software is maintained timely by updating the code according to the changes taking place in
user end environment or technology. This phase may face challenges from hidden bugs and real-world
unidentified problems.
Disposition
As time elapses, the software may decline on the performance front. It may go completely obsolete or may need
intense upgradation. Hence a pressing need to eliminate a major portion of the system arises. This phase includes
archiving data and required software components, closing down the system, planning disposition activity and
terminating system at appropriate end-of-system time.
Software process
Software processes in software engineering refer to the methods and techniques used to develop and
maintain software. Software processes provides a framework for building high quality software.
The process that deals with the technical and management issues of software development is called a
software process.
5
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
6
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
7
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
1. Waterfall Model (Also called Classical life cycle model or Linear Sequential Model)
The waterfall model is a breakdown of project activities into linear sequential phases, where each phase
depends on the deliverables of the previous one and corresponds to a specialization of tasks. The approach is
typical for certain areas of engineering design.
8
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
There are some issues which come up in the client environment. To fix those issues, patches are
released. Also to enhance the product some better versions are released. Maintenance is done to deliver
these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like
a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for
previous phase and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap.
The advantages of waterfall development are that it allows for departmentalization and control. A
schedule can be set with deadlines for each stage of development and a product can proceed through the
development process model phases one by one.
Development moves from concept, through design, implementation, testing, installation, troubleshooting,
and ends up at operation and maintenance. Each phase of development proceeds in strict order.
The disadvantage of waterfall development is that it does not allow much reflection or revision. Once
an application is in the testing stage, it is very difficult to go back and change something that was not well-
documented or thought upon in the concept stage.
9
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
The major disadvantages of the Waterfall Model are as follows −
2.V Model
The V-model represents a development process that may be considered an extension of the waterfall
model and is an example of the more general V-model. Instead of moving down in a linear way, the process
steps are bent upwards after the coding phase, to form the typical V shape.
The V-Model demonstrates the relationships between each phase of the development life cycle and its
associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-
right) and level of abstraction (coarsest-grain abstraction uppermost), respectively.
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.
10
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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.
The following illustration depicts the different phases in a V-Model of the SDLC.
11
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
There are several Verification phases in the V-Model, each of these are explained in detail below.
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 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.
12
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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
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
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.
13
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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.
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.
3. Incremental model
The incremental build model is a method of software development where the model is designed,
implemented and tested incrementally (a little more is added each time) until the product is finished. It
involves both development and maintenance. The product is defined as finished when it satisfies all of its
requirements. Each iteration passes through the requirements, design, coding and testing phases. And each
14
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
subsequent release of the system adds function to the previous release until all designed functionally has been
implemented. This model combines the elements of the waterfall model with the iterative philosophy of
prototyping.
4.Iterative Model
An iterative life cycle model does not attempt to start with a full specification of requirements by first
focusing on an initial, simplified set user features, which then progressively gains more complexity and a
broader set of features until the targeted system is complete.
When adopting the iterative approach, the philosophy of incremental development will also often be
used liberally and interchangeably.
In other words, the iterative approach begins by specifying and implementing just part of the software,
which can then be reviewed and prioritized in order to identify further requirements.
This iterative process is then repeated by delivering a new version of the software for each iteration. In
a light-weight iterative project the code may represent the major source of documentation of the system;
however, in a critical iterative project a formal software specification may also be required.
15
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
In the Iterative model, iterative process starts with a simple implementation of a small set of the software
requirements and iteratively enhances the evolving versions until the complete system is implemented and ready
to be deployed.
An iterative life cycle model does not attempt to start with a full specification of requirements. Instead,
development begins by specifying and implementing just part of the software, which is then reviewed to identify
further requirements.
This process is then repeated, producing a new version of the software at the end of each iteration of the
model.
Iterative process starts with a simple implementation of a subset of the software requirements and
iteratively enhances the evolving versions until the full system is implemented. At each iteration, design
modifications are made and new functional capabilities are added.
The basic idea behind this method is to develop a system through repeated cycles (iterative) and in
smaller portions at a time (incremental).
Iterative and Incremental development is a combination of both iterative design or iterative method and
incremental build model for development. "During software development, more than one iteration of the
software development cycle may be in progress at the same time." This process may be described as an
"evolutionary acquisition" or "incremental build" approach."
In this incremental model, the whole requirement is divided into various builds. During each iteration, the
development module goes through the requirements, design, implementation and testing phases.
Each subsequent release of the module adds function to the previous release. The process continues till
the complete system is ready as per the requirement.
16
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
The key to a successful use of an iterative software development lifecycle is rigorous validation of requirements,
and verification & testing of each version of the software against those requirements within each cycle of the
model.
As the software evolves through successive cycles, tests must be repeated and extended to verify each
version of the software.
Like other SDLC models, Iterative and incremental development has some specific applications in the
software industry. This model is most often used in the following scenarios −
The advantage of this model is that there is a working model of the system at a very early stage of
development, which makes it easier to find functional or design flaws. Finding issues at an early stage of
development enables to take corrective measures in a limited budget.
The disadvantage with this SDLC model is that it is applicable only to large and bulky software
development projects. This is because it is hard to break a small software system into further small serviceable
increments/modules.
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an easily managed milestone.
Easier to manage risk - High risk part is done first.
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be utilized/applied to the next increment.
Risk analysis is better.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
17
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
During the life cycle, software is produced early which facilitates customer evaluation and feedback.
Inception
The main goal of this phase involves delimiting the project scope. This is where we define why we
are making this product in the first place. It should have the following:
What are the key features? How does this benefit the customers?
Which methodology will we follow?
What are the risks involved in executing the project?
Schedule and cost estimates.
Elaboration
We build the system given the requirements, cost, and time constraints and all the risks involved. It
should include the following:
Develop with the majority of the functional requirements implemented.
Finalize the methodology to be used.
Deal with the significant risks involved.
Construction
This phase is where the development, integration, and testing take place. We build the complete
architecture in this phase and hand the final documentation to the client.
Transition
This phase involves the deployment, multiple iterations, beta releases, and improvements of the
software. The users will test the software, which may raise potential issues. The development team will
then fix those errors.
Conclusion
This method allows us to deal with the changing requirements throughout the development period.
The unified process model has various applications which also makes it complex in nature.
6.RAD model
Rapid application development was a response to plan-driven waterfall processes, developed in the
1970s and 1980s, such as the Structured Systems Analysis and Design Method (SSADM). Rapid
application development (RAD) is often referred as the adaptive software development. RAD is an
19
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
incremental prototyping approach to software development that end users can produce better feedback when
examining a live system, as opposed to working strictly with documentation. It puts less emphasis on planning
and more emphasis on an adaptive process.
RAD may resulted in a lower level of rejection when the application is placed into production, but this
success most often comes at the expense of a dramatic overruns in project costs and schedule. RAD approach
is especially well suited for developing software that is driven by user interface requirements. Thus, some GUI
builders are often called rapid application development tools.
The RAD (Rapid Application Development) model is based on prototyping and iterative
development with no specific planning involved. The process of writing the software itself involves the
planning required for developing the product.
(What is RAD?
Rapid application development is a software development methodology that uses minimal planning in
favor of rapid prototyping. A prototype is a working model that is functionally equivalent to a component of the
product.)
In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to
make the complete product for faster product delivery. Since there is no detailed preplanning, it makes it easier
to incorporate the changes within the development process.
RAD projects follow iterative and incremental model and have small teams comprising of developers,
domain experts, customer representatives and other IT resources working progressively on their component or
prototype.
The most important aspect for this model to be successful is to make sure that the prototypes developed
are reusable.
RAD model distributes the analysis, design, build and test phases into a series of short, iterative
development cycles.
i.Business Modelling
The business model for the product under development is designed in terms of flow of information and the
distribution of information between various business channels. A complete business analysis is performed to find
the vital information for business, how it can be obtained, how and when is the information processed and what
are the factors driving successful flow of information.
ii.Data Modelling
The information gathered in the Business Modelling phase is reviewed and analyzed to form sets of data objects
vital for the business. The attributes of all data sets is identified and defined. The relation between these data
objects are established and defined in detail in relevance to the business model.
iii.Process Modelling
The data object sets defined in the Data Modelling phase are converted to establish the business information flow
needed to achieve specific business objectives as per the business model. The process model for any changes or
enhancements to the data object sets is defined in this phase. Process descriptions for adding, deleting, retrieving
or modifying a data object are given.
21
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
iv.Application Generation
The actual system is built and coding is done by using automation tools to convert process and data models into
actual prototypes.
The overall testing time is reduced in the RAD model as the prototypes are independently tested during every
iteration. However, the data flow and the interfaces between all the components need to be thoroughly tested
with complete test coverage. Since most of the programming components have already been tested, it reduces the
risk of any major issues.
The traditional SDLC follows a rigid process models with high emphasis on requirement analysis and gathering
before the coding starts. It puts pressure on the customer to sign off the requirements before the project starts
and the customer doesn’t get the feel of the product as there is no working build available for a long time.
The customer may need some changes after he gets to see the software. However, the change process is quite
rigid and it may not be feasible to incorporate major changes in the product in the traditional SDLC.
The RAD model focuses on iterative and incremental delivery of working models to the customer. This results in
rapid delivery to the customer and customer involvement during the complete development cycle of product
reducing the risk of non-conformance with the actual user requirements.)
RAD model can be applied successfully to the projects in which clear modularization is possible. If the
project cannot be broken into modules, RAD may fail.
The following pointers describe the typical scenarios where RAD can be used −
RAD should be used only when a system can be modularized to be delivered in an incremental manner.
It should be used if there is a high availability of designers for Modelling.
It should be used only if the budget permits use of automated code generating tools.
RAD SDLC model should be chosen only if domain experts are available with relevant business
knowledge.
Should be used where the requirements change during the project and working prototypes are to be
presented to customer in small iterations of 2-3 months.
RAD model enables rapid delivery as it reduces the overall development time due to the reusability of the
components and parallel development. RAD works well only if high skilled engineers are available and the
22
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
customer is also committed to achieve the targeted prototype in the given time frame. If there is commitment
lacking on either side the model may fail.
7.Spiral model
The spiral model, first described by Barry Boehm in 1986, is a risk-driven software development
process model which was introduced for dealing with the shortcomings in the traditional waterfall model. A
spiral model looks like a spiral with many loops.
The exact number of loops of the spiral is unknown and can vary from project to project. This model
supports risk handling, and the project is delivered in loops. Each loop of the spiral is called a Phase of the
software development process.
The initial phase of the spiral model in the early stages of Waterfall Life Cycle that is needed to
develop a software product. The exact number of phases needed to develop the product can be varied by the
project manager depending upon the project risks. As the project manager dynamically determines the number
of phases, so the project manager has an important role to develop a product using a spiral model.
23
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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.
The spiral model has four phases. A software project repeatedly passes through these phases in iterations called
Spirals.
1. Identification
2. Design
3. Construct or Build
4. Evaluation and Risk Analysis
i)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.
24
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
ii)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.
iii)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.
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 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 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.
25
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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.
8.BIG-BANG MODEL
The Big Bang model is an SDLC model where we do not follow any specific process. The development
just starts with the required money and efforts as the input, and the output is the software developed which may
or may not be as per customer requirement.
This Big Bang Model does not follow a process/procedure and there is a very little planning required.
Even the customer is not sure about what exactly he wants and the requirements are implemented on the fly
without much analysis.
Usually this model is followed for small projects where the development teams are very small.
26
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
The Big Bang Model comprises of focusing all the possible resources in the software development and
coding, with very little or no planning. The requirements are understood and implemented as they come. Any
changes required may or may not need to revamp the complete software.
This model is ideal for small projects with one or two developers working together and is also useful for
academic or practice projects. It is an ideal model for the product where requirements are not well understood
and the final release date is not given.
The advantage of this Big Bang Model is that it is very simple and requires very little or no planning. Easy to
manage and no formal procedure are required.
However, the Big Bang Model is a very high risk model and changes in the requirements or misunderstood
requirements may even lead to complete reversal or scraping of the project. It is ideal for repetitive or small
projects with minimum risks.
27
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
9.Prototype Model
The prototype model requires that before carrying out the development of actual software, a working
prototype of the system should be built.
A prototype is a toy implementation of the system. A prototype usually turns out to be a very crude
version of the actual system, possible exhibiting limited functional capabilities, low reliability, and inefficient
performance as compared to actual software.
In many instances, the client only has a general view of what is expected from the software product. In
such a scenario where there is an absence of detailed information regarding the input to the system, the
processing needs, and the output requirement, the prototyping model may be employed.
28
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
1. Requirement Gathering and Analyst
2. Quick Decision
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
29
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
10.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. 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.
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.
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.
30
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
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.
Or [The Agile model is a software development process that is based on the iterative development of software
products. The Agile model is a type of incremental model where software is developed in a rapid incremental
cycle.
The stages involved in the Agile model are as follows:
1. Gather requirements This is the stage where important requirements of the project are defined. This
stage explains the important features and plans the time and effort ahead of the project.
2. Design requirements This stage illustrates the previously defined requirements with a user flow
diagram or UML diagrams.
3. Iteration After defining and designing the requirements, developers start working on the projects to
develop a working product. All of this is done within an iteration or sprint.
4. Testing This stage examines the product’s functionality and ensures the product does what it is
designed for.
5. Deployment This stage releases a product to the user.
6. Client feedback This last step gathers feedback from the client after releasing the product. The team
receives the feedback and implements changes if necessary.]
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
31
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken throughout
various phases can be misinterpreted at any time by different team members.
2. Due to the lack of proper documentation, once the project completes and the developers allotted to
another project, maintenance of the finished project can become a difficulty.
What is Agility?
Agility implies speed, although something that is fast is not necessarily agile. Developers and customers
alike appreciate speed, though being “first to market” and in terms of responsiveness.
Members if the agile alliance have expensed the following preferences and values:
Agility is defined as “the quality or state of being agile: MIMBLENESS, DEXTERITY (played with
increasing agility)”
Attributes of agility
2) Nimble: Able to improvise, and use patterns creativity to construct new solutions on the fly, flexible.
3) Adaptable: Responsive (sense and respond), dynamic and interactive in response to a customer, or to
changing circumstances.
4) Resourceful: Thoughtful or exhibiting some discipline. This however is not the same as a traditional
“command and control” approach with defined, formal procedures.
1) The first issue is the ability to adapt the development of the software as the clients problem changes.
32
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
2) The second issue derives form the need to allow for the future evolution of any delivered solution.
3) The third issue is that of software quality- How do we know that the software always does what it is supposed to
do?
4) The fourth issue is the amount of unnecessary documentation and other bureaucracy that is required to sustain and
manage the development process.
5) The fifth issue is the human one, which relates both to the experience of the developers in the development process
and to the way in which the human resources are managed.
Coupled with these is a need to have a clear business focus for any software development project and application.
Principles of Agile for Achieving Agility
1) Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2) Welcome changing requirements, even late in development. Agile processes harness change for the customer’s
competitive advantage.
3) Deliver working software frequently, form a couple of weeks to a couple of months, with a preference to the
shorter timescale.
4) Business people and developers must work together daily throughout the project.
5) Build projects around motivated individuals. Give them the environment and support they need, and trust them to
get the job done.
6) The most efficient and effective method of conveying information to and within a development team is face-to-face
conversation.
7) Working software is the primary measure of progress.
8) Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain
a constant pace indefinitely.
9) Continuous attention to technical excellence and good design enhances agility.
10) Simplicity-the art of maximizing the amount of work not done – is essential.
11) The best architectures, requirements, and designs emerge from self-organizing teams.
12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior
accordingly.
Agile Process
i) Agile Methods are Adaptive rather than Predictive: Engineering methods tend to try to plan-out a large part
of the software process in great detail for a long span of time. This works well until things do not change. So
their nature is to resist change. The agile methods, however, welcome change. They try to be processes that
adapt and thrive on change, even to the point of changing themselves.
ii) Agile Methods are People-Oriented rather than Process-Oriented: The goal of engineering methods is to
define a process that will work well, whoever happens to be using it. Agile methods assert that no process will
ever make-up he skill of the development team, so the role of a process is to support the development team in
their work.
iii) Iterative Development with Incremental Delivery: The basic idea in this approach is to develop the
software in small parts, having a well-defined small functionally and then deliver. Then take the next
functionally and proceed further. The process is iterative and each incremental delivery along with earlier one
is complete usable software.
33
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Agile Methods:
Agile is an umbrella term for a set of methods and practices based on the values and principles
expressed in the Agile Manifesto that is a way of thinking that enables teams and businesses to innovate,
quickly respond to changing demand, while mitigating risk. Organizations can be agile using many of the
available frameworks available such as Scrum, Kanban, Lean, Extreme Programming (XP) and etc.
1. Scrum
2. Crystal
3. Dynamic Software Development Method(DSDM)
4. Feature Driven Development(FDD)
5. Lean Software Development
6. eXtreme Programming(XP)
1.Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-based
development conditions.
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.
34
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
2.Crystal:
There are three concepts of this method-
1. Chartering: Multi activities are involved in this phase such as making a development team, performing feasibility
analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
3. Wrap up: According to the user environment, this phase performs deployment, post-deployment.
Time Boxing
MoSCoW Rules
Prototyping
Pre-project
Feasibility Study
Business Study
Functional Model Iteration
Design and build Iteration
Implementation
Post-project
35
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
5. Lean Software Development:
Lean software development methodology follows the principle "just in time production." The lean method
indicates the increasing speed of software development and reducing costs. Lean development can be
summarized in seven phases.
1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole
6. 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.
Iteration
A short period that lasts from one to four weeks in the Agile process model is referred to as an iteration.
Each iteration results in small incremental releases, with each release building on previous functionality.
This individual release is thoroughly tested to ensure maintenance of the software quality.
36
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
With Agile, the entire project is divided into smaller parts or sprints to help reduce the overall project
delivery time and minimize risks in the project.
Advantages of the Agile model
Frequently encourages the delivery of working software.
Adapts to changes in circumstances during the project.
Reduces the total time spent in development.
Constant interactions between clients, developers, and testers.
Pays diligent attention to good design and technical excellence.
Disadvantages of the Agile model
There may be confusion and misinterpretation at any time by different team members due to the
shortage or lack of formal documents.
It can be difficult to maintain the final project due to the lack of proper documentation.
It is difficult to assess the effort required to produce deliverables at the beginning of the software
development process
37
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Agile SDLC model is a combination of iterative and incremental process models with focus on process
adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the
product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from
about one to three weeks. Every iteration involves cross functional teams working simultaneously on various
areas like −
Planning
Requirements Analysis
Design
Coding
Unit Testing and
Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.
What is Agile?
Agile model believes that every project needs to be handled differently and the existing methods need to be
tailored to best suit the project requirements. In Agile, the tasks are divided to time boxes (small time frames) to
deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental
in terms of features; the final build holds all the features required by the customer.
38
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
The Agile thought process had started early in the software development and started becoming popular
with time due to its flexibility and adaptability.
The most popular Agile methods include Rational Unified Process (1994), Scrum (1995), Crystal Clear,
Extreme Programming (1996), Adaptive Software Development, Feature Driven Development, and Dynamic
Systems Development Method (DSDM) (1995). These are now collectively referred to as Agile Methodologies,
after the Agile Manifesto was published in 2001.
Individuals and interactions − In Agile development, self-organization and motivation are important, as
are interactions like co-location and pair programming.
Working software − Demo working software is considered the best means of communication with the
customers to understand their requirements, instead of just depending on documentation.
Customer collaboration − As the requirements cannot be gathered completely in the beginning of the
project due to various factors, continuous customer interaction is very important to get proper product
requirements.
Responding to change − Agile Development is focused on quick responses to change and continuous
development.
Agile methods are being widely accepted in the software world recently. However, this method may not
always be suitable for all products. Here are some pros and cons of the Agile model.
40
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Agile Manifesto
1) Customer satisfaction by rapid delivery of useful software
2) Welcome changing requirements, even late in development
3) Working software is delivered frequently
4) Working software is the principal measure of progress
5) Sustainable development, able to maintain a constant pace
6) Close, daily cooperation between businesspeople and developers
7) Face-to-face conversation is the best form of communication
8) Projects are built around motivated individuals, who should be trusted
9) Continuous attention to technical excellence and good design
10) Simplicity
11) Self-organizing teams
12) Regular adaptation to changing circumstances
41
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
XP is based on the frequent iteration through which the developers implement User Stories. User
stories are simple and informal statements of the customer about the functionalities needed. A User
Story is a conventional description by the user of a feature of the required system.
It does not mention finer details such as the different scenarios that can occur. Based on User
stories, the project team proposes Metaphors. Metaphors are a common vision of how the system
would work. The development team may decide to build a Spike for some features.
A Spike is a very simple program that is constructed to explore the suitability of a solution being
proposed. It can be considered similar to a prototype. Some of the basic activities that are followed
during software development by using the XP model are given below:
Coding: The concept of coding which is used in the XP model is slightly different from traditional
coding. Here, the coding activity includes drawing diagrams (modeling) that will be transformed
into code, scripting a web-based system, and choosing among several alternative solutions.
Testing: The XP model gives high importance to testing and considers it to be the primary factor
in developing fault-free software.
Listening: The developers need to carefully listen to the customers if they have to develop good
quality software. Sometimes programmers may not have the depth knowledge of the system to be
developed. So, the programmers should understand properly the functionality of the system and
they have to listen to the customers.
Designing: Without a proper design, a system implementation becomes too complex, and very
difficult to understand the solution, thus making maintenance expensive. A good design results
elimination of complex dependencies within a system. So, effective use of suitable design is
emphasized.
Feedback: One of the most important aspects of the XP model is to gain feedback to understand
the exact customer needs. Frequent contact with the customer makes the development effective.
Simplicity: The main principle of the XP model is to develop a simple system that will work
efficiently in the present time, rather than trying to build something that would take time and may
never be used. It focuses on some specific features that are immediately needed, rather than
engaging time and effort on speculations of future requirements.
Pair Programming: XP encourages pair programming where two developers work together at the
same workstation. This approach helps in knowledge sharing, reduces errors, and improves code
quality.
Continuous Integration: In XP, developers integrate their code into a shared repository several
times a day. This helps to detect and resolve integration issues early on in the development
process.
Refactoring: XP encourages refactoring, which is the process of restructuring existing code to
make it more efficient and maintainable. Refactoring helps to keep the codebase clean,
organized, and easy to understand.
Collective Code Ownership: In XP, there is no individual ownership of code. Instead, the
entire team is responsible for the codebase. This approach ensures that all team members have a
sense of ownership and responsibility towards the code.
Planning Game: XP follows a planning game, where the customer and the development team
collaborate to prioritize and plan development tasks. This approach helps to ensure that the
team is working on the most important features and delivers value to the customer.
42
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
On-site Customer: XP requires an on-site customer who works closely with the development
team throughout the project. This approach helps to ensure that the customer’s needs are
understood and met, and also facilitates communication and feedback.
Extreme Programming (XP) is that focuses on delivering high-quality software through frequent
and continuous feedback, collaboration, and adaptation. XP emphasizes a close working relationship
between the development team, the customer, and stakeholders, with an emphasis on rapid, iterative
development and deployment.
Agile development approaches evolved in the 1990s as a reaction to documentation and
bureaucracy-based processes, particularly the waterfall approach. Agile approaches are based on some
common principles, some of which are:
43
Mrs.B.Rajalakshmi.MCA.,M.Phil.,
CCS356 OOSE Unit-I
Extreme programming is one of the most popular and well-known approaches in the family of
agile methods. An XP project starts with user stories which are short descriptions of what scenarios
the customers and users would like the system to support. Each story is written on a separate card, so
they can be flexibly grouped.
XP, and other agile methods, are suitable for situations where the volume and space of
requirements change are high and where requirement risks are considerable.
45
Mrs.B.Rajalakshmi.MCA.,M.Phil.,