1
1
UNIT – I - NOTES
SOFTWARE PROCESS AND AGILE DEVELOPMENT
Introduction to Software Engineering, Software Process, Perspective and Specialized
Process Models –Introduction to Agility - Agile Process-Extreme programming-XP
Process-Case Study.
Defining Software
1. What is the impact of reusability of software development process? (Nov/Dec 2017)
Write short notes on unique characters of software. (Nov/Dec 2017)
Software is nothing but a collection of computer programs and related documents that are
intended to provide desired features, functionalities and better performance.
Software products may be
1. Generic - That means developed to be sold to a range of different customers.
2. Custom-That means developed for a single customer according to their specification.
Page 1
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Software Characteristics
Software development is a logical activity and therefore it is important to understand basic
characteristics of software. Some important characteristics of software are:
(i) Software is engineered, not manufactured
Software development and hardware development are two different activities.
A good design is a backbone for both the activities.
During the life of software if any change is made, some defects may get introduced.
This causes failure rate to be high. Before the curve can return to original steady state another
change is requested and again the failure rate becomes high.
Thus the failure curve looks like a spike. Thus frequent changes in software cause it to deteriorate.
Another issue with software is that there are no spare parts for software.
If hardware component wears out it can be replaced by another component but it is not possible
in case of software.
Therefore, software maintenance is more difficult than the hardware maintenance.
(iii) Most software is custom built rather than being assembled from components
While developing any hardware product firstly the circuit design with desired functioning
properties is created.
Then required hardware components such as ICs; capacitors and registers are assembled
according to the design, but this is not done while developing software product.
Most of the software is custom built.
However, now the software development approach is getting changed and we look for reusability
of software components.
It is practiced to reuse algorithms and data structures.
Today software industry is trying to make library of reusable components.
For example: In today's software, GUI is built using the reusable components such as
message windows pull down menus and many more such components. The approach is
getting developed to use in-built components in the software. This stream of software is popularly
known as component engineering.
Categories of Software
Software can be applied in a situation for which a predefined set of procedural steps (algorithm)
exists. Based on a complex growth of software it can be classified into following categories
(i) System software - It is collection of programs written to service other programs. Typical programs in
this category are compiler, editor and assemblers. The purpose of the system software is to
establish a communication with the hardware.
(ii) Application software - It consists of standalone programs that are developed for specific business
need. This software may be supported by database systems.
(iii) Engineering/Scientific software - This software category has a wide range of programs from
astronomy to volcanology, from automative stress analysis to space shuttle orbital dynamics and from
molecular biology to automated manufacturing. This software is based on complex numeric
Page 3
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
computations.
(iv) Embedded software - This category consists of program that can reside within a product or
system. Such software can be used to implement and control features and functions for the end-user and
for the system itself.
(v) Web applications - Web application software consists of various web pages that can be retrieved by
a browser. The web pages can be developed using programming languages like JAVA, PERL, CGI, HTML,
and DHTML.
(vi) Artificial Intelligence software - This kind of software is based on knowledge based expert
systems. Typically, this software is useful in robotics, expert systems, image and voice recognition,
artificial neural networks, theorem proving and game playing.
Goals and Objectives of Software
While developing software following are common objectives.
(i) Satisfy users requirements - Many programmers simply don’t do what the end user wants because
they do not understand user requirements. Hence it becomes necessary to understand the demand of
end user and accordingly software should be developed.
(ii) High reliability - Mistakes or bugs in a program can be expensive in terms of human lives, money,
and customer relation. For instance, Microsoft has faced many problems because earlier release of
windows has many problems. Thus, software should be delivered only if high reliability is achieved.
(iii) Low maintenance costs - Maintenance of software is an activity that can be done only after
delivering the software to the customer. Any small change in software should not cause restructuring of
whole software. This indicates that the design of software has poor quality.
(iv) Delivery on time - It is very difficult to predict the exact time on which the software can be
completed. But a systematic development of software can lead to meet the given deadline.
(v) Low production costs - The software product should be cost effective.
(vi) High performance - The high-performance software is expected to achieve optimization in speed
and memory usage.
(vii) Ease of reuse - Use same software in different systems and software.
Environments reduce development costs and also improve the reliability. Hence reusability of
developed software is an important property.
Page 4
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
LAYERED TECHNOLOGY
2. Draw the layered architecture of software engineering. (Nov/Dec 2018)
Software engineering is a layered technology. Any software can be developed using these layered
approaches. Various layers on which the technology is based are quality focus layer, process layer,
methods layer, tools layer.
A disciplined quality management is a backbone of software engineering technology.
Process layer is a foundation of software engineering. Basically, process defines the framework
for timely delivery of software.
Page 5
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Software tools are used to bring automation in software development process.
Thus software engineering is a combination of process, methods, and tools for development of
quality software.
SOFTWARE PROCESS
3. Explain the CMMI model to access the organization level. (Nov/Dec 2017)
Software process can be defined as the structured set of activities that are required to develop the
software system.
The fundamental activities are:
(i) Specification
(ii) Validation
(iii) Design and implementation
(iv) Evolution
A software process model is an abstract representation of a process. It presents a description of a
process from some particular perspective.
(iii) Software quality assurance - These are activities required to maintain software quality.
(iv) Formal technical reviews - It is required to assess engineering work products to uncover
and remove errors before they propagate to next activity.
(v) Software configuration management - Managing of configuration process when any change in
the software occurs.
(vi) Work product preparation and production - The activities to create models, documents,
logs, forms and lists are carried out.
(vii) Reusability management - It defines criteria for work product reuse.
(viii) Measurement - In this activity, the process can be defined and collected. Also, project and
product measures are used to assist the software team in delivering the required software.
Page 8
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Need for Process Model
The software development team must decide the process model that is to be used for software
product development and then the entire team must adhere to it. This is necessary because the software
product development can then be done systematically. Each team member will understand what the
next activity is and how to do it. Thus process model will bring the definiteness and discipline in
overall development process.
Every process model consists of definite entry and exit criteria for each phase. Hence the
transition of the product through various phases is definite. If the process model is not followed for
software development then any team member can perform any software development activity, this will
ultimately cause a chaos and software project will definitely fail without using process model, it is
difficult to monitor the progress of software product. Let us discuss various process models one by one.
Waterfall Model
The waterfall model is also called as 'linear-sequential model' or 'classic life cycle model'. It is
the oldest software paradigm. This model suggests a systematic, sequential approach to
software development.
The software development starts with requirements gathering phase. Then progresses through
analysis, design, coding, testing and maintenance. Following
In requirement gathering and specification / analysis phase the basic requirements of the system
Figure 06: Phases of Waterfall Model
must be understood by software engineer, who is also called Analyst. The information domain functions,
behavioral requirements of the system are understood. All these requirements are then well documented
and discussed further with the customer, for reviewing.
Waterfall model
The design is an intermediate step between requirements analysis and coding. Design focuses on
program attributes such as -
Data structure
Software architecture
Page 9
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Interface representation
Algorithmic details
The requirements are translated in some easy to represent form using which coding can be done
effectively and efficiently. The design needs to be documented for further use.
Coding is a step in which design is translated into machine-readable form. If design is done in
sufficient detail then coding can be done effectively. Programs are created in this phase.
Testing begins when coding is done. While performing testing the major focus is on logical
internals of the software. The testing ensures execution of all the paths, functional behaviors. The
purpose of testing is to uncover errors, fix the bugs and meet the customer requirements.
Maintenance is the longest life cycle phase. When the system is installed and put in practical use
then error may get introduced, correcting such errors and putting it in use is the major purpose
of maintenance activity. Similarly, enhancing system's services as new requirements are
discovered is again maintenance of the system.
This model is widely used model, although it has many drawbacks. Let us discuss benefits and
drawbacks.
Benefits of waterfall model
(i) The waterfall model is simple to implement.
(ii) For implementation of small systems waterfall model is useful.
EXAMPLE
6. Explain how waterfall model is applicable for the development of the following systems:
a) University accounting system
b) Interactive system that allows railway passengers to find time and other information for the
terminals installed in the station.
Page 10
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Provide three examples of software projects that would be amenable to the waterfall model,
prototyping and incremental. Be specific. (Nov/Dec 2024)
a) University accounting system: If the software developers who have the experience in developing
the account systems then building university account system based on existing design could be easily
managed with water-fall model.
b) Interactive system that allows railway passengers to find time and other information from the
terminals installed in the station.
For developing such interactive system, all the requirements must be correctly identified and
analyzed before the designing of the project. The requirements of end-users must be correctly and un-
ambiguously understood by the developers prior to design phase. Once the requirements are well
defined then using disciplined design, coding and testing phases the required system can be built
using water-fall model.
Incremental Process Model
In this model, the initial model with limited functionality is created for user’s understanding about the
software product and then this model is refined and expanded in later releases.
Incremental Model
The incremental model has same phases that are in waterfall model. But it is iterative in nature.
The incremental model has following phases.
1. Analysis 2. Design 3. Code 4. Test
The incremental model delivers series of releases to the customer. These releases are called
increments. More and more functionality is associated with each increment.
RAD Model
The RAD Model is a type of incremental process model in which there is extremely short
development cycle.
When the requirements are fully understood and the component basedconstruction approach
is adopted then the RAD model is used.
Using the RAD model, the fully functional system can be developed within 60 to 90 days.
Various phases in RAD are Requirements Gathering, Analysis and Planning, Design, Build or
Construction and finally Deployment.
Multiple teams work on developing the software system using RAD model parallel.
In the requirements gathering phase the developers communicate with the users of the system
and understand the business process and requirements of the software system.
During analysis and planning phase, the analysis on the gathered requirements is made and a
planning for various software development activities is done.
During the design phase various models are created. Those models are Business model, data
model and process model.
The build is an activity in which using the existing software components and automatic code
generation tool the implementation code is created for the software system. This code is well
tested by its team. The functionalities developed by all the teams are integrated to form a whole.
Finally, the deployment of all the software components (created by various teams working on the
project is carried out.
Page 12
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
EXAMPLE
(i). Which type of applications suit for RAD model? Justify your answer.
Solution: The RAD model is suitable for information system applications, business applications and for
the systems that can be modularized because of following reasons -
a) This model is similar, to waterfall model but it uses very short development cycle.
b) It uses component-based construction and emphasizes reuse and code generation
c) This model uses multiple teams on scalable projects.
d) The RAD model is suitable for the projects where technical risks are not high:
e) The RAD model requires heavy resources.
(ii). Provide three examples of software projects that would be amenable to incremental model.
Be specific.
Solution: There can various examples of software projects that would be amenable to incremental
model. For instance -
Page 13
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
a) Banking software service: This service can be personal service. That means for personal banking
system the incremental model can be used. In later state of increments, this system can implement
insurance service, home loans and some other features of banking services.
b) Web browser application: The base application can be developed and distributed. This is the basic
increment of the application. In the later increments the plugins can be provided to enhance the
experience of web browser applications.
c) Operating system software: The operating system software providing the basic system handling
functionalities is the first increment. After the release of the basic versions then updates or security
patches are provided to the customer in the form of increments. Various distribution package in the form
of versions such as basic home edition, premium, ultimate and so on can be the increments of operating
system software.
When the developer is unsure of the efficiency of an algorithm or the adaptability of an operating
system then prototype serves as a better choice.
Drawbacks of prototyping
a) In the first version itself, customer often wants "few fixes" rather than rebuilding of the system
whereas rebuilding of new system maintains high level of quality.
b) The first version may have some compromises.
c) Sometimes developer may make implementation compromises to get prototype working quickly. Later
on developer may become comfortable with compromises and forget why they are inappropriate.
Comparison between prototyping and incremental process model
Sl.
Prototyping Incremental process model
No.
Some requirements are gathered initially, The requirements are precisely defined and there is
but there may be change in requirements no confusion about the final product of the software.
(i)
when the working prototype is shown to
the customer.
The development team has adequate The development team with less domain knowledge
domain knowledge. Similarly they can can be accommodated due to iterative nature of this
(ii)
adopt the mew technologies is product model. The change in technology in the later phase
demands. cannot be tolerated.
All the end users are involved in all phases All the end users need not be involved in all the
(iii)
of development. phases of development.
There can be use of reusable software There is no use of reusable components in
(iv) components in project development development process.
process.
Page 15
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Spiral Model
8. Assume that you are the technical manager of a software development organization. A client
approached you for a software solution. The problems stated by the client have uncertainties which
lead to loss if it not planned and solved. Which software development model you will suggest for this
project – justify. Explain that model with its pros and cons with neat sketch. (Nov/Dec 2018)
Outline the spiral life cycle model with a diagram. (Nov/Dec 2019)
This model possesses the iterative nature of prototyping model and controlled and systematic
approaches of the linear sequential model.
This model gives efficient development of incremental versions of software. In this model, the
software is developed in series of increments.
The spiral model is divided into a number of framework activities. These framework activities
are denoted by task regions.
Usually there are six tasks regions.
Spiral model is realistic approach to development of large-scale systems and software. Because
customer and developer better understand the problem statement at each evolutionary level
Also risks can be identified or rectified at each such level.
In the initial pass, product specification is built and in subsequent passes around the spiral the
prototype gets developed and then more improved versions of software gets developed.
During planning phase, the cost and schedule of software can be planned and adjusted based on
feedback obtained from customer evaluation.
In spiral model, project entry point axis is defined. This axis represents starting point for
different types of projects.
Page 16
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
For instance, concept development project will start at core of spiral and will continue along the
spiral path. If the concept has to be developed into actual project then at entry point 2 the product
development process starts. Hence entry point 2 is called product development project entry
point. The development of the project can be carried out in iterations.
The task regions can be described as:
i) Customer communication - In this region, it is suggested to establish customer communication.
ii) Planning - All planning activities are carried out in order to define resources time line and other
project related activities.
iii) Risk analysis - The tasks required calculating technical and management risks are carried out.
iv) Engineering - In this task region, tasks required to build one or more representations of
applications are carried out.
v) Construct and release - All the necessary tasks required constructing, testing, install the application
are conducted, some tasks that are required to provide user support are also carried out in this task
region.
vi) Customer evaluation - Customer’s feedback is obtained and based on customer evaluation required
tasks are performed and implemented at installation stage.
In each region, number of work tasks is carried out depending upon the characteristics of project.
For a small project relatively small numbers of work tasks are adopted but for a complex project
large number of work tasks can be carried out.
In spiral model, the software engineering team moves around the spiral in a clockwise
direction beginning at the core.
Advantages of spiral model
a) Requirement changes can be made at every stage.
b) Risks can be identified and rectified before they get problematic.
Drawbacks of spiral model
a) It is based on customer communication. If the communication is not proper then the software
product that gets developed will not be up to the mark.
b) It demands considerable risk assessment. If the risk assessment is done properly then only the
successful product can be obtained.
When to choose it?
a) When the prototypes for the software functionality are needed.
b) When requirements are not very clearly defined or complex.
c) When the large or high budget projects need to be developed.
d) When the risk assessment is very critical and essential
Page 17
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 18
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 19
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 20
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
EXAMPLE
10. For the scenario describe below, which life cycle model would choose? Give the reason why
you choose this model.
You are interacting with the MIS department of a very large oil company with multiple
departments. They have a complex legacy system. Migrating the data from this legacy system is
not easy task and would take a considerable time. The oil company is very particular about
processes, acceptance criteria and legal contracts. (Nov/Dec 2011)
Solution:
Legacy applications are database management systems. The software companies normally
migrate these applications to some relational databases. For data migrating projects a cohesive method
that enables the developer to cycle or spiral through the migration process is required. In this
migrating process following steps need to be followed -
a) Analyze the data.
b) Extract the data which is to be transformed.
c) Transform the extracted data.
d) Validate the transformed data.
e) Load the validated data to the target system.
These above mentioned steps are repeated until the migration is successfully completed. The risk
management must be done properly. All these factors suggest that the spiral model is suitable for the
given project.
11. Describe at least one scenario where. (Nov/Dec 2011)
a) RAD model would be applicable and not the water fall model.
b) Waterfall model is preferable to all other models.
Solution:
a) RAD model would be applicable and not the waterfall model:
Following are some scenario where RAD model would be applicable and not the waterfall
model.
A) The projects in which users are involved in all phases.
B) The projects in which users are experts of problem domain.
C) The project is enhancement of existing system.
b) Waterfall model is preferable to all other models:
In- the following scenario waterfall model is preferable to all other models. The project for which
requirements are easily understandable and defiled.
Page 21
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Specialized Model
The specialized models are used when only collection of specialized technique or methods
are expected for developing the specific software.
Various types of specialized models are -
1. Component based development
2. Formal methods model
3. Aspect oriented software development
Component Based Development
The commercial off-the-shelves components that are developed by the .vendors are used during
the software built.
These components have specialized targeted functionalities and well defined interfaces. Hence it is
easy to integrate these components into the existing software.
The component based development model makes use of various characteristics of spiral model.
This model is evolutionary in nature. That means the necessary changes can be made in the
software during the each iteration of software development cycle.
Before beginning the modeling and construction activity of software development the candidate
component must be searched and analyzed. The components can be simple functions or can be
object oriented classes or methods.
Following steps are applied for component-based development -
Identify the component- b a s e d products and analyze them for fitting in the existing application
domain.
Analyze the component integration issues.
Design the software architecture to accommodate the components
Integrate the components into the software architecture.
Conduct comprehensive testing for the developed software.
Software reusability is the major advantage of component-based Development.
The reusability reduces the development cycle time and overall cost.
Formal Methods Model
What are the merits and demerits of using formal methods for developing software? (Nov/Dec 2018)
This model consists of the set of activities in which the formal mathematical specification is
used.
The software engineers specify, develop and test the computer based systems using the
mathematical notations. The notations are specified within the formal methods.
Page 22
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
The formal methods model offers defect-free software. However, there are some drawbacks of
this model which resists it from getting used widely. These drawbacks are
The formal methods model is time consuming and expensive.
For using this model, the developers need the strong mathematical background or
some extensive training.
If this model is chosen for development then the communication with customer becomes
very difficult.
Page 23
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
EXAMPLE
12. What are the pros and cons of using mathematical approach for software development?
( Nov/Dec 2015)
Solution:
Pros:
The mathematical approach is useful in building scientific model, critical systems or simulation of real
time systems. '
The ambiguity or inconsistency problems can be eliminated if mathematical approach is adopted.
Developers are exceptionally committed to the project.
The controlled and optimized system can’ be developed using mathematical approach.
Cons:
The developers need the strong mathematical background or some extensive training.
The methods of software development are time consuming and expensive.
Many times-if mathematical approach is adopted for software development, then communication with
customer becomes very difficult.
13. Compare the following life cycle model based on their distinguish factors, strength and weakness
– waterfall model, RAD model, spiral model and formal method model. (Nov/Dec 2013), (Nov/Dec
2014), Elucidate the key features of the software process model with suitable example. (Apr/May
2016)
Water fall model RAD model Spiral model Formal methods
model
Requirements must be Requirements must be The requirement Requirements must be
clearly understood and clearly understood and analysis and gathering clearly understood and
defined at the beginning defined at the beginning can be done in iterations defined at the beginning
only only because requirements only
gets changed quite often
The development The development The development team The development
team having the team having less having less experience of team having the
adequate experience of experience of working working on the similar adequate experience of
working on the similar on the similar projects projects is allowed in this working on the similar
project is chosen to is allowed in this process model project is chosen to
work on this type of process model work on this type of
process model process model
Page 24
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
If the development team If the development If the development team If the development
has less domain team has less domain has less domain team has less domain
knowledge or if it new knowledge or if it new knowledge or if it new to knowledge or if it new
to the technology then to the technology then the technology then such to the technology then
such a team is allowed such a team is not a team is allowed for this such a team is not
for this kind of process allowed for this kind of kind of process model allowed for this kind of
model process model process model
There is no user There is user There is no user Limited community
involvement in all the involvement in all the involvement in all the makes the formal
phases of the phases of the phases of the methods for their
development process development process development process projects because this
method is based on
mathematical theorem,
formal methods and
automata theory
Type of projects: When there is tight Due to iterative nature of Whenever there is a
When the project schedule or the model the risk need to build the
requirements are project is identification and scientific model based
reasonably well enhancement of the rectification is done on mathematical
defined and the existing projects or if before they get techniques or
development effort there is use of reusable problematic. Hence the simulation of some real
suggests a purely linear components in the handling real time time systems or when
effort then the waterfall project then for problems the spiral there is a need to build
model is chosen developing such model is chosen the systems that can
projects this process contribute to the
model is suitable reliability and
robustness (normally
critical systems) then
the formal method
model are used.
Page 25
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
INTRODUCTION TO AGILITY
14. List the principles of agile software development. (Nov/Dec 2016)Define agility. List the five
principles of agility.( Apr/May 2019) What is agility? Elaborate agility principles. (Nov/Dec 2019)
The Agile Manifesto, also called the Manifesto for Agile Software Development, is a formal
declaration of four key values and 12 principles to guide an iterative and people-centric
approach to software development.
The agile methods were developed to overcome the weakness of conventional software
engineering.
Page 26
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 27
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
e) Motivate the people who are building the projects. Provide the environment and support to the
development team and trust them for the job to be done.
f) The working software is the primary measure of the progress of the software development.
g) The agile software development approach promotes the constant project development. The
constant speed for the development of the product must be maintained.
h) To enhance the agility there should be continuous technical excellence.
i) The proper attention to be given to technical excellence and good design,
j) The simplicity must be maintained while developing the project using this approach.
k) The teams must be the self-organizing team for getting best architecture, requirements and
design.
l) At regular intervals the team thinks over the issue of becoming effective. After the careful review
the team members adjusts their behavior accordingly.
Extreme Programming
15. Explain the phases of XP. (or) Name two core values of Extreme Programming. (Apr/May
9)(APR/MAY 2024) (Nov/Dec 2024)
Extreme Programming (XP) is one of the best-known agile processes. It is suggested by Kent Beck
in 2000.
XP Values
Beck defined the set of five values that serve as a basis for the work performed in XP. These values
are -
a) Communication: The effective communication must be established between software developers and
stakeholders in order to convey the important concepts and to get the important feedback.
b) Simplicity: XP focuses on the current needs instead of futures needs to incorporate in the design.
Hence the XP believes that the Software design should be simple.
c) Feedback: The feedback for the software product can be obtained from the developers of the software,
customers, and other software team members.
d) Courage: The strict adherences to certain XP practices require courage. The agile XP team must be
disciplined to design the system today, recognize the future requirements and make the changes
dramatically as per the demand.
e) Respect: By following the above states XP values the agile team can win the respect of stakeholders.
Page 28
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Process: Define “test driven development” (TDD) and its role in XP. (Nov/Dec 2024)
The extreme programming process is explained as follows -
Customer specifies and priorities the system requirements. Customer becomes one of the
important members of development team. The developer and customer together prepare a story-
card in which customer needs are mentioned.
The developer team then aims to implement the scenarios in the story-card.
After developing the story-card the development team breaks down the total work in small tasks.
The efforts and the estimated resources required for these tasks are estimated.
The customer priorities the stories for implementation. If the requirement changes then
sometimes unimplemented stories have to be discarded. Then release the complete software in
small and frequent releases.
For accommodating new changes, new story-card must be developed.
Evaluate the system along with the customer.
Page 29
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 30
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Tests and XP
Feedback: Tests turn red to green with feedback about the code
Example
16. What is spike solution in XP?
The Extreme Programming (XP) is one of the known agile processes. In this process, to answer complex
and difficult technical or design problems spike solution is created.
The spike solution is very simple program to explore potential solution. The spike is builds to only
address the problem under examination and all other things can be overlooked.
The spike solution reduces the risk of technical problem and increases the reliability of user story's
estimate.
Industrial XP
The industrial XP (IXP) can be defined as the organic evolution of XP. It is customer centric. It has
expanded role for customers and advanced technical practices.
Various new practices that are appended to XP to create IXP are as follows –
Page 31
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
b) Project Community: Skilled and efficient people must be chosen as the agile team members for the
success of the project. The team is referred as the community when extreme programming approach is
considered. The project community consists of technologies, customers, and other stakeholders who play
the vital role for the success of the project. The role of the community members must be explicitly
defined.
c) Project Chartering: Project chartering means assessing the justification for the project as a business
application. That means, the IXP team assess whether the project satisfies the goals and objectives 'of the
organization.
d) Test Driven management: For assessing the state of the project and its progress the industrial XP
needs some measurable criteria. In test driven management the project is tested with the help of these
measurable criteria.
e) Retrospectives: After delivering the software increment, the specialized review is conducted which is
called as retrospective. The intention of retrospectives is to improve the industrial XP process.
f) Continuous learning: The team members are inspired and. encouraged to learn new methods and
techniques that can improve the quality of the product.
The Leaders of a software company realized that law offices such as title companies were poorly
automated. At most, these offices used general-purpose word processors and possibly, some package for
computing invoices or the payroll.
Legal documents could be prepared much more efficiently with such a tool because this can follow
some standard rules. Many sales agreements could be expressed tentatively in the following terms:
b) Write the relevant data about the seller. (Data necessary to identify the person)
c) If the seller is married, the data about the spouse should also be included. This action should be
done automatically.
Page 32
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
d) The same procedure must be followed for the buyer.
e) Some particular data should be typed explicitly, filled in automatically from files, and computed
automatically on the basis of other data.
The analysis of riles of this type, combined with the fact that the company had a strong experience
in sophisticated word-processing tools and with the facts that potential customers were generally
wealthy and no strong competitors existed yet in the market, convinced the leaders of the company
that developing a tool for automating law offices could be good business.
Thus, the company’s first decision was to contact a sample of potential customers to see whether
they would be interested in such a product and which features would be desirable.
The company’s behavior seems quite natural, but it contains a first, serious mistake: see later that
the selected sample of potential customers was biased. In both cases of contact, the people were
already familiar with and fairly supportive of the benefits of automation. There is no evidence, this
attitude is representative of the whole profession.
The interaction between technical and nontechnical knowledge in the feasibly study of software
projects. This early analysis of the potential market for the software product was conducted
nonscientifically for probably two kinds of reasons.
Reason (i): Market analysis techniques have difficulty dealing with ill-defined markets. It is
difficult or even impossible to plan a software product on the basis of the same considerations.
One uses when examining a project to build a new car or a new washing machine
model. In this case, “the planned software product was intended to create a new market “and
required analysis of a nonexistent market.
Reason (ii): The marketing analysis was performed by “pure software engineers” who had little
or no background in the marketing field, but who exhibited a “pioneering” attitude.
While innovation and pioneering in the places, cannot form the basis of a discipline
and certainly not the basis of a product development schedule.
Economic and Financial Planning
Economic and financial planning is another area in which strong interaction between
engineering and nonengineering skills is needed in the planning of a product.
Economic and financial planning requires both the ability to forecast future sales.
The design phase of any product, what sets apart is that the “design phase” for software is
not a relatively short period at the beginning of development, but seems to go on
throughout the entire development process.
The person making the cost estimates who is usually not an engineer.
Page 33
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
In this case study, the difficulties of making estimates in both areas are well known, the
major error and very common error was the lack of risk analysis.
All original estimates were terribly wrong, nobody suggested a plan of action. Need to
spend much more money than originally planned.
The result was that in a short time, the company was in serious financial trouble.
This management mistake is a very common one. It is naturally explained by the fact that
short-term decisions overcome long term planning.
At the start of the project, it would have been wise to write clear and precise documents
stating the requirements for the new product.
These documents should have been based on a careful and organized interaction with
potential users, paying close attention to choosing a representative sample of the user
population.
A limited effort into the development of a system that would act as a prototype. The prototype
system would then help assess the most critical issues and derive firm requirements by
observing users’ reactions when using the system.
Unfortunately, the designers did not even realize that a problem existed, and therefore, they
did not even consciously choose between the first alternative-specifying requirements
carefully-and the second-developing a fast, exploratory prototype.
Similarly, careful planning of resource allocation should have started, both from the point of
view of work assignment to designers and programmers and from the point of view of physical
resource management (e.g., hardware acquisition and office space). But instead, just the
opposite happened.
An amusing but dangerous “game” started between the designers and the very few
representative clients. In this case, of course the designers included the company leaders, since
they were technical people and they had originated the idea of the product in the first place.
In fact, everybody was excited with the innovative and challenging features of the product, but
nobody paid much attention to fairly obvious but critical details.
For a long time, nobody paid attention to the definition of suitable user interfaces to facilitate
the interaction of nontechnical people-a lawyer or a secretary-with the system.
Page 34
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Similarly, sophisticated features for the automatic computation of invoices on the basis of
input data (people time, service value, travel expenses, etc.), were designed, but no attention
was paid to standard office operations such as the filing of large numbers of documents (e.g.,
records of automobile sales-in some offices, several hundreds of such documents are produced
every day).
From a management point of view, all of the designers of the system were attracted by the
most interesting features of the new product, so that a lot of work was done in the early phases
to find and to compare clever solutions to marginal problems, and no structure was arranged
for the design team.
From a technical viewpoint, many typical mistakes were made:
No analysis was performed to determine whether all the product features were needed by all
users, or whether it would be better to restructure the functionality of the product based on
different classes of users. More generally, no effort was put into determining which qualities of
the product were most critical for its success.
For instance, in the choice of the hardware and of the development software (the operating
system, programming language, etc.), little or no attention was paid to their evolution, and no
effort was made to prepare for possible changes to them.
No “design for change” was done, i.e., no design decision was influenced by any analysis of
which parts of the product were likely to change during the product’s lifetime (e.g., how might
possible changes in the law affect product requirements?).
Strong pressure was applied to have some (any) code running as early as possible.
After six months after the start of development, some mistakes became apparent, both from a
technical and from a management point of view.
A modular architecture would have been preferable, even from the user point of view, allowing
the product to be customized for different classes of users, just as the same “skeleton” of a car
can be sold with different types of engines with different optional features, etc., or the same
personal computer can be sold with many optional features-e.g., a color monitoring or a
floating-point coprocessor.
Page 35
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
The reaction to this situation was even worse than the problem itself: the impact of the
mistakes-both technical and nontechnical-was again underestimated.
In general, the attitude was of the following type: “OK, we made a few mistakes, but now we
are almost done. So, let’s put in a little more effort, and we will complete the product soon and
will start earning money.”
That is, no critical and careful analysis of the mistakes was made, nor was a serious replanning
and redesign of the whole project attempted. There was only a generic claim of an intuitive confidence
in being close to the end.
Initial Delivery
It was decided that income could be generated as soon as the company started delivering the
first versions of the product or as soon as new contracts could be signed.
In turn, the customers would be good references for the product, resulting in an opportunity
both to improve the product and to increase the sales of the product.
Partial Recovery
Eventually, it was realized that the naive way the firm was managing the project was leading to
disaster.
Thus, a real effort was made, first to define responsibilities clearly (who was responsible for
the design, who was responsible for the distribution, etc.), and second, to achieve a clear
picture of the state of the product, of its weakness, of the effort required to fix them, etc.
This was done even at the expense of slowing down the project, increasing costs, and reducing
sales. Thus, people had to resist an initial feeling that the restructuring of the project was
impeding “real” progress.
11. (b) Illustrate an overview of Object-oriented Software Engineering Development Activities
and their products. (Apr/May 2024)
Software Engineering Development Activities
In this section, we give an overview of the technical activities associated with object-oriented
software engineering. Development activities deal with the complexity by constructing and
validating models of the application domain or the system. Development activities include
Requirements Elicitation
Analysis
System Design
Object Design
Page 36
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Implementation
Testing
1. Requirements Elicitation
During requirements elicitation, the client and developers define the purpose of the system. The
result of this activity is a description of the system in terms of actors and use cases. Actors
represent the external entities that interact with the system. Actors include roles such as end
users, other computers the system needs to deal with (e.g., a central bank computer, a network),
and the environment (e.g., a chemical process). Use cases are general sequences of events that
describe all the possible actions between an actor and the system for a given piece of functionality.
2. Analysis
During analysis, developers aim to produce a model of the system that is correct, complete,
consistent, and unambiguous. Developers transform the use cases produced during requirements
elicitation into an object model that completely describes the system. During this activity,
developers discover ambiguities and inconsistencies in the use case model that they resolve with
the client. The result of analysis is a system model annotated with attributes, operations, and
3. System Design
During system design, developers define the design goals of the project and decompose the
system into smaller subsystems that can be realized by individual teams. Developers also select
strategies for building the system, such as the hardware/software platform on which the system
will run, the persistent data management strategy, the global control flow, the access control
policy, and the handling of boundary conditions. The result of system design is a clear description
of each of these strategies, a subsystem decomposition, and a deployment diagram representing
the hardware/software mapping of the system. Whereas both analysis and system design produce
models of the system under construction, only analysis deals with entities that the client can
understand. System design deals with a much more refined model that includes many entities that
are beyond the comprehension (and interest) of the client
4. Object Design
During object design, developers define solution domain objects to bridge the gap between the
analysis model and the hardware/software platform defined during system design. This includes
precisely describing object and subsystem interfaces, selecting off-the-shelf components,
restructuring the object model to attain design goals such as extensibility or understandability,
Page 37
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
and optimizing the object model for performance. The result of the object design activity is a
detailed object model annotated with constraints and precise descriptions for each element.
5. Implementation
During implementation, developers translate the solution domain model into source code. This
includes implementing the attributes and methods of each object and integrating all the objects
such that they function as a single system. The implementation activity spans the gap between the
detailed object design model and a complete set of source code files that can be compiled. We
describe the mapping of UML models to code in Chapter 10, Mapping Models to Code. We assume
the reader is already familiar with programming concepts and knows how to program data
structures and algorithms using an object-oriented language such as Java or C++.
6. Testing
During testing, developers find differences between the system and its models by executing the
system (or parts of it) with sample input data sets. During unit testing, developers compare the
object design model with each object and subsystem.
During integration testing, combinations of subsystems are integrated together and compared
with the system design model. During system testing, typical and exception cases are run through
the system and compared with the requirements model.
The goal of testing is to discover as many faults as possible such that they can be repaired before
the delivery of the system. The planning of test phases occurs in parallel to the other development
activities: System tests are planned during requirements elicitation and analysis, integration tests
are planned during system design, and unit tests are planned during object design.
Page 38
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
UNIT – I – 2 MARKS
SOFTWARE PROCESS AND AGILE DEVELOPMENT
Introduction to Software Engineering, Software Process, Perspective and Specialized
Process Models –Introduction to Agility-Agile Process-Extreme programming-XP
Process.
Page 39
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 40
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Page 41
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
Model or software paradigm. These models are called prescriptive process models
Page 42
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
21. Depict the relationship between work product, task, activity and system. (Nov/Dec 2016)
Each framework activity under umbrella activities of software process framework consists of
various task sets.
Each task set consists of work tasks, work products, quality assurance points a project milestones.
The task sets accommodate the needs of the system getting developed.
22. Define Waterfall Model.
The waterfall model is also called as 'linear-sequential model' or 'classic life cycle model'.
It is the oldest software paradigm. This model suggests a systematic, sequential approach
to software development.
23. State the benefits and drawbacks of waterfall life cycle model for software development.
(Apr/May 2008)
Benefits of waterfall model
The waterfall model is simple to implement.
For implementation of small systems waterfall model is useful.
Drawbacks of waterfall model
There are some problems that are encountered if we apply the waterfall model and those are:
It is difficult to follow the sequential flow in software development process. If some
changes are made at some phases then it may cause some confusion.
The requirement analysis is done initially and sometimes it is not possible to state all the
requirements explicitly in the beginning. This causes difficulty in the project.
The customer can see the working model of the project only at the end. After reviewing
of the working model. If the customer gets dissatisfied then it causes serious problems.
Linear nature of waterfall model induces blocking states, because certain tasks may be
dependent on some previous tasks. Hence it is necessary to accomplish all the dependant tasks first.
It may cause long waiting time.
24. List two deficiencies in waterfall model. Which process model do you suggest to overcome
each efficiency? (Apr/May 2017)
i) It is difficult to define the entire requirement at the beginning of project; this model is not suitable
for accommodating any change.
To overcome this efficiency: Prototyping model.
ii) It does not scale up to large projects
To overcome this efficiency: Spiral model
Page 43
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
26. What are the pros and cons of Iterative software development models? (Nov/Dec 2006),
(Nov/Dec 2015)
Pros:
The changes in requirements or additions of functionality are possible.
Risks can be identified and rectified before they get problematic.
Cons:
This model is typically based on customer communication. If the communication is not proper
the software product that gets developed will not be exactly as per the requirements.
The development process may get continued and never finish.
27. What are the phases in incremental model?
The incremental model has following phases.
Analysis
Design
Code
Test
28. What are the Merits of incremental model?
The incremental model can be adopted when there are less number of people
involved in the project.
Technical risks can be managed with each increment.
For a very small-time span, at least core product can be delivered to the customer.
29. Which process model leads to software reuse? Why? (Nov/Dec 2007)
The object oriented model is used for the software reuse because - this model is based on the
incremental development of the software product. This can be done in one or more iterations.
30. Define RAD Model.
The RAD Model is a type of incremental process model in which there is extremely short
development cycle.
When the requirements are fully understood and the component-based construction approach is
adopted then the RAD model is used.
Page 44
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
31. What are the phases encompassed in the RAD model? (Nov/Dec 2007)
Various phases in the RAD model are
Business modeling
Data modeling
Process modeling
Application generation
Testing and turnover
32. What are the Drawbacks of rapid application development? (Apr/May 2005)
It requires multiple teams or large number of people to work on the scalable projects
This model requires heavily committed developer and customers. If commitment is lacking
then RAD projects will fail.
The projects using RAD model requires heavy resources.
If there is no appropriate modularization then RAD projects fail performance can be problem to
such projects.
The projects using RAD model find it difficult to adopt new technologies.
While developing the software systems, it is often needed to make modifications in earlier
development phases or the tasks sets. If the development process is linear or in a straight line (from
requirements gathering to deployment) then the end product will be unrealistic. In such cases, the
iterative approach needs to be adopted. The evolutionary process model is iterative model.
Page 45
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
35. Many modern applications change frequently before they are presented to end user and there
after the first version has been put into use. Suggest a few ways to stop deterioration due to change.
(Nov/Dec 2024)
It is fact that several modern applications and the software’s have gained the capacity to eliminate
the data or content before the presentation of the application in front of the end user. This is considered
under the deterioration due to the changes of application information.
The following are some ways which can stop the deterioration:
These applications must have capacity engineered to a degree changes as this can be build easily
when the application is in growth stages.
The chances of deterioration can be minimal through allow automatic updates to be built in.
Evolutionary Prototyping - In this approach of system development, the initial prototype is prepared
and it is then refined through number of stages to final stage.
Page 46
CCS356 –OBJECT ORIENTED SOFTWARE ENGINEERING - III YEAR CSE
In this methodology, testing is done once the In this methodology, testing and development
development phase is completed. processes are performed concurrently.
It follows a linear
It follows an iterative organizational structure.
organizational expectation structure.
Page 47