Oose Unit-1 New
Oose Unit-1 New
PREPARED BY
VERIFIED BY
1
CREDIT POINT
SEMESTER VI
PERIODS TOTAL
S. COURSE CATE
COURSE TITLE GORY
PER WEEK CONTACT CREDITS
NO. CODE
L T P PERIODS
THEORY
Object Oriented Software
1. CCS356 PCC 3 0 2 5 4
Engineering
2. OBT351 Food, Nutrition and Health OEC 3 0 0 3 3
3. CCS366 Software Testing and Automation PEC 2 0 2 4 3
4. CCS341 Data Warehousing PEC 2 0 2 4 3
5. CCS354 Network Security PEC 2 0 2 4 3
Multimedia and Animation / NM
6. CCS352 PEC 2 0 2 4 3
course
Well Being with Traditional
7. MX3085 Practices - Yoga, Ayurveda and MC 3 0 0 3 0
Siddha
PRACTICALS
Mobile Applications Development
8. IT3681 PCC 0 0 3 3 1.5
Laboratory
TOTAL - - - - 20.5
2
SYLLABUS
CCS356 – OBJECT ORIENTED SOFTWARE ENGINEERING
Testing – Unit testing – Black box testing– White box testing – Integration and System
testing– Regression testing – Debugging - Program analysis – Symbolic execution – Model
Checking- Case Study.
UNIT V PROJECT MANAGEMENT 9
Software Project Management- Software Configuration Management - Project Scheduling-
DevOps: Motivation-Cloud as a platform-Operations- Deployment Pipeline: Overall
Architecture Building and Testing-Deployment- Tools- Case Study
TOTAL: 45 PERIODS
TEXT BOOK
1.Bernd Bruegge and Allen H. Dutoit, “Object-Oriented Software Engineering: Using UML,
Patterns and Java”, Third Edition, Pearson Education, 2009.
2. Roger S. Pressman, Object-Oriented Software Engineering: An Agile Unified Methodology,
First Edition, Mc Graw-Hill International Edition, 2014.
REFERENCES
1. Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli, Fundamentals of Software Engineering, 2nd
edition, PHI Learning Pvt. Ltd., 2010.
3
SENGUNTHAR COLLEGE OF ENGINEERING, TIRUCHENGODE- 637205
DEPARTMENT OF INFORMATION TECHNOLOGY
LECTURE PLAN
Object-Oriented Software
Bernd Bruegge,
1 Engineering: Using UML, T1
Allen H. Dutoit
Patterns and Java
Object-Oriented Software
2 Engineering: An Agile Unified Roger S. Pressman T2
Methodology
4
NO. OF
TOPIC REFERENCES TEACHING
HOURS
Unit – I : SOFTWARE PROCESS AND AGILE
DEVELOPMENT
Introduction to SE T1-Ch1 Black Board 1
Revision Hours 05
Total 50
6
UNIT I
SOFTWARE PROCESS AND AGILE DEVELOPMENT
Software Process
Introduction to Agility
Agile process
Extreme programming
XP Process
Case Study.
7
UNIT I
PART A
1. List out the five activities of a generic process framework for software engineering.
2. Draw the flow diagram of Iterative process flow and parallel flow.
11. If you have to develop a word processing software product, what process models will
you choose? Justify our answer.
12. Depict the relationship between Work product, task, activity and system.
13. What led to transition from product oriented development to process oriented
development?
14. Mention the characteristics of software contrasting it with characters of hardware.
15. What are the pros and cons of Iterative software development models?
8
PART B
1. Compare the waterfall, prototyping and spiral Model? What is the role of user participation
in the selection of a life-cycle model? List out the various prescriptive process model
available in software development with appropriate diagram?
2. Explain the phases in Extreme programming process. Explain the steps involved for Extreme
Programming (XP)?
5. Explain the function of incremental delivery process model with a neat sketch.
6. Explain how work break down structures is used in software engineering. Discuss
how software project scheduling helps in timely release of a product.
9
UNIT I
PART A
1. List out the five activities of a generic process framework for software engineering.
2. Draw the flow diagram of Iterative process flow and parallel flow.
An iterative process flow repeats one or more of the activities before proceeding to the next.
A parallel process flow executes one or more activities in parallel with other activities.
Readable
Correct
Reliable
Reusable
Extendable
10
Flexible
Efficient
4. What are the various categories of software?
System Software
Application Software
Engineering/Scientific Software
Embedded Software
Web applications
AI Software.
5. What is Software Process?
Software process is defined as the structured set of activities that are required to
develop the software system.
Activities – Specification, design & implementation, validation & evolution
maintainability
correctness
reusability
reliability
portability and efficiency
11. If you have to develop a word processing software product, what process model will you
choose? Justify our answer.
The word processing software product can be developed using incremental model.
It focuses on the aspects of the word processing software that are visible to the customer
/ end user.
The feedback is used to refine the prototype
12. Depict the relationship between Work product, task, activity and system.
Process frame work activities
Umbrella activities
Frame work activities
Task sets
12
13. What led to transition from product oriented development to process oriented
development?
Product techniques to designing software - Large numbers of software projects do not meet
their expectations in terms of functionality, cost, or delivery schedule. Process - Composed
of line practitioners who have varied skills, the group is at the center of the collaborative
effort of everyone in the organization who is involved with software engineering process
improvement.
Process-oriented view on cooperating software components based on the concepts and
terminology of a language/action perspective on cooperative work provides a more suitable
foundation for the analysis, design and implementation of software components in business
applications.
14. Mention the characteristics of software contrasting it with characters of hardware.
Software is easier to change than hardware. The cost of change is much higher for
hardware than for software.
Software products evolve through multiple releases by adding new features and rewriting
existing logic to support the new features. Hardware products consist of physical
components that cannot be refactored after manufacturing, and cannot add new
capabilities that require hardware changes.
Specialized hardware components can have much longer lead times for acquisition than
is true for software.
Hardware design is driven by architectural decisions. More of the architectural work must
be done up front compared to software products.
The cost of development for software products is relatively flat over time. However, the
cost of hardware development rises rapidly towards the end of the development cycle.
Testing software commonly requires developing thousands of test cases. Hardware
testing involves far fewer tests. Hardware must be designed and tested to work over a
range of time and environmental conditions, which is not the case for software.
13
15. What are the pros and cons of Iterative software development models?
Advantages:
In iterative model we can only create a high-level design of the application before we
actually begin to build the product and define the design solution for the entire product.
Building and improving the product step by step.
can get the reliable user feedback
Less time is spent on documenting and more time is given for designing.
Disadvantages
Each phase of an iteration is rigid with no overlaps
Costly system architecture or design issues may arise because not all requirements are
gathered up front for the entire lifecycle
Verification Validation
1. Verification is a static practice of 1. Validation is a dynamic mechanism of
verifying documents, design, code and validating and testing the actual product.
program.
2. It does not involve executing the code. 2. It always involves executing the code.
3. It is human based checking of 3. It is computer based execution of
Documents and files. Program.
4. Verification uses methods like 4. Validation uses methods like black box
inspections, reviews, walkthroughs, and (functional) testing, gray box testing, and
Desk-checking etc. white box (structural) testing etc.
5. Verification is to check whether the 5. Validation is to check whether software
software conforms to specifications. Meets the customer expectations and
requirements.
14
18. What is cyclomatic complexity?
Cyclomatic complexity is a software metric (measurement), used to indicate the complexityof
a program. It is a quantitative measure of the number of linearly independent paths through a
program's source code.
19. Software does not wear out. Justify?
Software doesn‟t “wear out” : Considering the given figure 01. This is often called the
bath tub curve. It indicates that, at the beginning of the life of hardware it shows high failure
rate as it contains many defects. By time, the manufacturers or the designers repair these
defects and it becomes idealized or gets into the steady state and continues. But after that,
as time passes, the failure rate rises again and this may be caused by excessive temperature,
dust, vibration, improper use and so on and at one time it becomes totally unusable
15
21. List two deficiencies in waterfall model. Which process model do you suggest to
overcome each deficiency?
Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-thought out in the concept stage.
No working software is produced until late during the life cycle.
22. Identify the sequence of stages involved in a typical project life cycle
There are 5 phases to the project life cycle (also called the 5 process groups)—initiating,
planning, executing, monitoring/controlling, and closing. Each of these project phases
represents a group of interrelated processes that must take place.
The Capability Maturity Model (CMM) is a methodology used to develop and refine an
organization's software development process. The model describes a five-level evolutionary path
of increasingly organized and systematically more mature processes. They are;
Initial
16
Repeatable
Defined
Managed
Optimizing.
27. What is Layered Technology?
Software engineering is a fully layered technology, to develop software we need to go from one layer
to another. All the layers are connected and each layer demands the fulfillment of the previous layer.
Fig: The diagram shows the layers of software development.
FIG 4: XP Process
17
PART B
1. Compare the waterfall, prototyping and spiral Model? What is the role of user participation
in the selection of a life-cycle model? List out the various prescriptive process model
available in software development with appropriate diagram?
Waterfall Model:
The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-
sequential life cycle model. It is very simple to understand and use. In a waterfall model, each
phase must be completed before the next phase can begin and there is no overlapping in the
phases. The following illustration is a representation of the different phases of the Waterfall Model.
System Design − The requirement specifications from first phase are studied in this phase
and the system design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is developed
18
and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − 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.
Waterfall Model - Application
Every software developed is different and requires a suitable SDLC approach to be followed
based on the internal and external factors. Some situations where the use of Waterfall model is
most appropriate are −
Requirements are very well documented, clear and fixed.
Product definition is stable.
Technology is understood and is not dynamic.
There are no ambiguous requirements.
Ample resources with required expertise are available to support the product.
The project is short.
Waterfall Model - Advantages
Simple and easy to understand and use
Easy to manage due to the rigidity of the model. Each phase has specific deliverables and
a review process.
Phases are processed and completed one at a time.
Works well for smaller projects where requirements are very well understood.
Clearly defined stages.
Well understood milestones.
Easy to arrange tasks.
Process and results are well documented.
19
Waterfall Model - Disadvantages
The major disadvantages of the Waterfall Model are as follows −
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
The first increment in this model is generally a core product.
Each increment builds the product and submits it to the customer for any suggested modifications.
The next increment implements on the customer's suggestions and add additional requirements in
the previous increment.
This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
20
Advantages of incremental model
This model is flexible because the cost of development is low and initial product delivery is
faster.
It is easier to test and debug during the smaller iteration.
The working software generates quickly and early during the software life cycle.
The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model
The cost of the final product may cross the cost estimated initially.
This model requires a very clear and complete planning.
The planning of design is required before the whole system is broken into small increments.
The demands of customer for the additional functionalities after every increment causes
problem during the system architecture.
Spiral Model
The spiral model, initially proposed by Boehm, is an evolutionary software process model
that couples the iterative feature of prototyping with the controlled and systematic
aspects of the linear sequential model. It implements the potential for rapid development
of new versions of the software. Using the spiral model, the software is developed in a
series of incremental releases. During the early iterations, the additional release may be a
paper model or prototype. During later iterations, more and more complete versions of the
engineered system are produced.
Each cycle in the spiral is divided into four parts:
Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle,
the various alternatives that are possible for achieving the targets, and the constraints that exists.
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints. The focus of evaluation in this stage is located
on the risk perception for the project.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether
to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for
the next step of the project.
The development phase depends on the remaining risks. For example, if performance or user-
interface risks are treated more essential than the program development risks, the next phase
may be an evolutionary development that includes developing a more detailed prototype for
solving the risks.
21
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of approach. An
essential element of the model is that each period of the spiral is completed by a review that
includes all the products developed during that cycle, including plans for the next cycle. The spiral
model works for development as well as enhancement projects.
22
1. RAD (Rapid Application Development) Model
RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element based construction approach. RAD (Rapid Application
Development) is a concept that products can be developed faster and of higher quality through:
o Gathering requirements using workshops or focus groups
o Prototyping and early, reiterative user testing of designs
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next product version
o Less formality in reviews and other team communication
23
FIG 8: RAD Model
Advantage of RAD Model
o This model is flexible for change.
o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer.
o It reduced development time.
o It increases the reusability of features.
Disadvantage of RAD Model
o It required highly skilled designers.
o All application is not compatible with RAD.
o For smaller projects, we cannot use the RAD model.
o On the high technical risk, it's not suitable.
o Required user involvement.
2. 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.
24
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.
25
o May be too customer specific, no broad market
3. Difficult to know how long the project will last.
4. Easy to fall back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
5. Prototyping tools are expensive.
6. Special tools & techniques are required to build a prototype.
7. It is a time-consuming process
2. Explain the phases in Extreme programming process. Explain the steps involved for
Extreme Programming (XP)?
1. Planning
Planning starts with the requirements gathering which enables XP team to understand
the rules for the software.
The customer and developer work together for the final requirements.
2. Design
The XP design follows the 'keep it simple' principle.
A simple design always prefers the more difficult representation.
26
3. Coding
The coding is started after the initial design work is over.
After the initial design work is done, the team creates a set of unit tests which can test
each situation that should be a part of the release.
The developer is focused on what must be implemented to pass the test.
Two people are assigned to create the code. It is an important concept in coding
activity.
4. Testing
Validation testing of the system occurs on a daily basis. It gives the XP team a regular
indication of the progress.
'XP acceptance tests' are known as the customer test.
Staff turnover − Intensive team collaboration ensures enthusiasm and good will.
Cohesion of multi-disciplines fosters the team spirit.
Extreme Programming Disadvantages
One more disadvantage of XP is that this methodology does not measure code quality
assurance. It may cause defects in the initial code.
XP is not the best option if programmers are separated geographically.
28
Risk Assessment and reduction: The next phase in the cycle is to calculate these various
alternatives based on the goals and constraints.
The focus of evaluation in this stage is located on the risk perception for the project.
Development and validation: The next phase is to develop strategies that resolve uncertainties
and risks. This process may include activities such as benchmarking, simulation, and prototyping.
Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether
to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for
the next step of the project. The development phase depends on the remaining risks. For
example, if performance or user- interface risks are treated more essential than the program
development risks, the next phase may be an evolutionary development that includes
developing a more detailed prototype for solving the risks.
The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of approach. An
essential element of the model is that each period of the spiral is completed by a review that
includes all the products developed during that cycle, including plans for the next cycle.
29
Application of Spiral Model:
o When deliverance is required to be frequent.
o When the project is large
o When requirements are unclear and complex
o When changes may require at any time
o Large and high budget projects
Advantages
o High amount of risk analysis
o Useful for large and mission-critical projects.
Disadvantages
o Can be a costly model to use.
o Risk analysis needed highly particular expertise
o Doesn't work well for smaller projects.
5. Explain the function of incremental delivery process model with a neat sketch.
31
function as well as additional functionality. In the testing phase, the various methods are used to
test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development
system. It involves the final coding that design in the designing and development phase and tests
the functionality in the testing phase. After completion of this phase, the number of the product
working is enhanced and upgraded up to the final system product
Application:
o When the requirements are superior.
o A project has a lengthy development schedule.
o When Software team are not very well skilled or trained.
o When the customer demands a quick release of the product.
You can develop prioritized requirements first.
o
Advantage of Incremental Model
o Errors are easy to be recognized.
o Easier to test and debug
o More flexible.
o Simple to manage risk because it handled during its iteration.
o The Client gets important functionality early.
Disadvantage of Incremental Model
o Need for good planning
o Total Cost is high.
o Well defined module interfaces are needed.
6. Explain how work break down structures is used in software engineering. Discuss how
software project scheduling helps in timely release of a product.
A Work Breakdown Structure includes dividing a large and complex project into simpler,
manageable and independent tasks. The root of this tree (structure) is labelled by the Project
name itself. For constructing a work breakdown structure, each node is recursively decomposed
into smaller sub-activities, until at the leaf level, the activities becomes undividable and
independent. It follows a Top-Down approach.
Steps:
Step-1: Identify the major activities of the project.
Step-2: Identify the sub-activities of the major activities.
Step-3: Repeat till undividable, simple and independent activities are created.
32
FIG 12: Top-Down approach
Construction of Work Breakdown Structure
Firstly, the project managers and top level management identifies the main deliverables of the
project. After this important step, these main deliverables are broke down into smaller higher-
level tasks and this complete process is done recursively to produce much smaller independent
tasks. It depends on the project manager and team that upto which level of detail they want to
break down their project.
Generally the lowest level tasks are the most simplest and independent tasks and takes less than
two weeks worth of work. Hence, there is no rule for upto which level we may build the work
breakdown structure of the project as it totally depends upon the type of project we are working
on and the management of the company. The efficiency and success of the whole project majorly
depends on the quality of the Work Breakdown Structure of the project and hence, it implies its
importance.
Uses:
It allows to do a precise cost estimation of each activity.
It allows to estimate the time that each activity will take more precisely.
It allows easy management of the project.
It helps in proper organization of the project by the top management
Project Scheduling
It is great to know about the kinds of artifacts associated with software development that can be
used again. Almost all artifacts associated with software development, including project plan and
test plan, can be used again. However, the important items that can be effectively used again
are,
1. Requirements specification
2. Design
3. Code
4. Test cases
5. Knowledge
Basic issues in any reuse program
The following are some of the basic issues that must be for starting any reuse program,
1. Component creation
2. Component indexing and storing
3. Component search
4. Component understanding
5. Component adaptation
6. Repository maintenance
Component creation
The reusable components have to be first identified. The selection of the correct kind of
components having the potential for reuse is best.
34
Component indexing and storing
Indexing requires classification of the again usable components so that they can be easily found
when looking for a component for reuse. The components need to be stored in a Relational
Database Management System (RDBMS) or an Object-Oriented Database System (ODBMS) for
efficient access when the number of components becomes large.
Component searching
The programmers need to search for correct components matching their needs in a database of
components. To be able to search components efficiently, the programmers require a perfect
method to tells the components that they are looking for.
Component understanding
The programmers need a prefect and sufficiently complete understanding of what the component
does to be able to decide whether they can reuse the component or not. To understand, the
components should be well documented and should do something simple in the code.
Component adaptation
Before they can be reused, the components may need adaptation, since a selected component
may not exactly be mixed the problem at hand. However, tinkering with the code is also not the
best solution because this is very likely to be a source of faults.
Repository maintenance
It once is created requires repeated maintenance. New components, as and when made have to
be entered inside the repository. The faulty components have to be followed. Further, when new
applications mixed, the older applications become obsolete. In this case, the obsolete
components might have to be deleted from the repository.
Domain analysis
The aim is to find the reusable pieces for a problem domain.
8. Explain the component based software development model with a neat sketch.
Component-based development (CBD) is a procedure that accentuates the design and
development of computer-based systems with the help of reusable software components. With
CBD, the focus shifts from software programming to software system composing. Component-
based development techniques involve procedures for developing software systems by choosing
ideal off-the-shelf components and then assembling them using a well-defined software
architecture. With the systematic reuse of coarse-grained components, CBD intends to deliver
35
better quality and output. Component-based development is also known as component- based
software engineering (CBSE).
Object-oriented modeling results in a plethora of fine-grained classes, objects and relationships.
It is very hard to discover reusable parts among these smaller units. The idea behind CBD is to
integrate the related parts and reuse them collectively. These integrated parts are known as
components. Component-based development techniques consist of non-conventional
development routines, including component evaluation, component retrieval, etc. It is important
that the CBD is carried out within a middleware infrastructure that supports the process, for
example, Enterprise Java Beans.
9. List out the various umbrella activities which support software development process and
discuss about their necessity in maintaining the quality in both software process that is
being developed for railway reservation system.
Software engineering is a collection of co-related steps. These steps are presented or accessed
in different approaches in different software process models. Umbrella activities are a set of
steps or procedure that the software engineering team follows to maintain the progress,
quality, change and risks of the overall development tasks. These steps of umbrella activities
will evolve through the phases of generic view of software development.
Umbrella Activities in software engineering
1. Software Project Tracking and Control
2. Formal Technical Reviews
3. Software Quality Assurance
4. Software Configuration Management
5. Document Preparation and Production
6. Re-usability Management
7. Measurement and Metrics
8. Risk Management
37
Software Quality Assurance
The quality of the software such user experience, performance, load handling capacity etc. should
be tested and confirmed after reaching predefined milestones. This reduces the task at the end
of the development process. It should be conducted by dedicated teams so that the development
can keep going on.
Software Configuration Management
Software configuration management (SCM) is a set of activities designed to control change by
identifying the work products that are likely to change, establishing relationships among them,
38
10. Draw the layered architecture of software engineering and What are the merits and
demerits of using formal methods for developing a software.(or) What are the pros and
cons of using mathematical approach for software development?
The bedrock that supports software engineering is a quality focus. The foundation for software
engineering is the process layer. The software engineering process is the glue that holds the
technology layers together and enables rational and timely development of computer software.
Process defines a framework that must be established for effective delivery of software
engineering technology. The software process forms the basis for management control of
software projects and establishes the context in which technical methods are applied, work
products (models, documents, data, reports, forms, etc.) are produced, milestones are
established, quality is ensured, and change is properly managed.
Software engineering methods provide the technical how-to‘s for building software. Methods
encompass a broad array of tasks that include communication, requirements analysis, design
modeling, program construction, testing, and support. Software engineering methods rely on a
set of basic principles that govern each area of the technology and include modeling activities
and other descriptive techniques.
Software engineering tools provide automated or semi automated support for the process and the
methods. When tools are integrated so that information created by one tool can be used by another,
a system for the support of software development, called computer-aided software engineering, is
established.
39
Table Advantages and Disadvantages of Formal Methods Model:
Advantages Disadvantages
1. Discovers ambiguity, 1. Time consuming and expensive.
incompleteness, and inconsistency 2. Difficult to use this model as a
in the software. communication mechanism for non
2. Offers defect-free software. technical personnel.
3. Incrementally grows in effective 3. Extensive training is required since
solution after each iteration. only few developers have the
4. This model does not involve high essential knowledge to implement
complexity rate. this model.
5. Formal specification language
semantics verify self-consistency.
11. Assume that you are a technical manager of a software development organization. A client
approached for a software solution. The problems stated by the client have uncertainties
which led to loss of it not planned and solved. Which software development model youwill
suggest for this project-justify. Explain that model with its pros and cons and neat sketch.
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 Model Vs Traditional SDLC
The traditional SDLC follows a rigid process models with high emphasis on requirement
analysis and gathering before the coding starts. It puts a 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 actually gets to see the software,
however the change process is quite rigid and it may not be feasible to incorporate
40
major changes in the product in traditional SDLC.
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.
12. What is the role of user participation in the selection of a life-cycle model?Explain the
concepts of software life cycle model.
V-Model:
41
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.
42
System Design
Once you have the clear and detailed product requirements, it is time to design the complete
system.
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).
Module Design
In this phase, the detailed internal design for all the system modules is specified, referred to
as Low Level Design (LLD). The unit tests are an essential part of any development process and
helps eliminate the maximum faults and errors at a very early stage.
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.
Validation Phases
The different Validation Phases in a V-Model are explained in detail below.
Unit Testing
Unit tests designed in the module design phase are executed on the code during this validation
phase. Unit testing is the testing at code level and helps eliminate bugs at an early stage, though
all defects cannot be uncovered by unit testing
Integration Testing
Integration testing is associated with the architectural design phase. Integration tests are
performed to test the coexistence and communication of the internal modules within the system.
System Testing
System testing is directly associated with the system design phase. System tests check the
entire system 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.
43
Acceptance Testing
Acceptance testing is associated with the business requirement analysis phase and involves
testing the product in user environment.
It also discovers the non-functional issues such as load and performance defects in the actual
user environment.
V- Model ─ Application
Requirements are well defined, clearly documented and fixed.
Product definition is stable.
Technology is not dynamic and is well understood by the project team.
There are no ambiguous or undefined requirements.
The project is short.
The advantages of the V-Model method are as follows −
This is a highly-disciplined model and Phases are completed one at a time.
Works well for smaller projects where requirements are very well understood.
Simple and easy to understand and use.
Easy to manage due to the rigidity of the model. Each phase has specific deliverables and
a review process.
The disadvantages of the V-Model method are as follows −
High risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of
changing.
Once an application is in the testing stage, it is difficult to go back and change a
functionality.
No working software is produced until late during the life cycle.
Iterative Model
In this Model, we can start with some of the software specifications and develop the first version
of the software. After the first version if there is a need to change the software, then a new version
of the software is created with a new iteration. Every release of the Iterative Model finishes in an
exact and fixed period that is called iteration.
The Iterative Model allows the accessing earlier phases, in which the variations made
respectively. The final output of the project renewed at the end of the Software Development Life
Cycle (SDLC) process.
44
FIG 16: Iterative model
The various phases of Iterative model are as follows:
1. Requirement gathering & analysis: In this phase, requirements are gathered from customers
and check by an analyst whether requirements will fulfil or not. Analyst checks that need will
achieve within budget or not. After all of this, the software team skips to the nextphase.
2. Design: In the design phase, team design the software by the different diagrams like Data
Flow diagram, activity diagram, class diagram, state transition diagram, etc.
3. Implementation: In the implementation, requirements are written in the coding language and
transformed into computer programmes which are called Software.
4. Testing: After completing the coding phase, software testing starts using different test
methods. There are many test methods, but the most common are white box, black box, and grey
box test methods.
5. Deployment: After completing all the phases, software is deployed to its work environment.
6. Review: In this phase, after the product deployment, review phase is performed to check the
behaviour and validity of the developed product. And if there are any error found then the process
starts again from the requirement gathering.
7. Maintenance: In the maintenance phase, after deployment of the software in the working
environment there may be some bugs, some errors or new updates are required. Maintenance
involves debugging and new addition options.
45
Advantage (Pros) of Iterative Model:
1. Testing and debugging during smaller iteration is easy.
2. A Parallel development can plan.
3. It is easily acceptable to ever-changing needs of the project.
4. Risks are identified and resolved during iteration.
5. Limited time spent on documentation and extra time on designing.
Disadvantage (Cons) of Iterative Model:
1. It is not suitable for smaller projects.
2. More Resources may be required.
3. Design can be changed again and again because of imperfect requirements.
4. Requirement changes can cause over budget.
5. Project completion date not confirmed because of changing requirements.
Application:
1. When requirements are defined clearly and easy to understand.
2. When the software application is large.
3. When there is a requirement of changes in future.
Concurrent models
Concurrent models are those models within which the various activities of software development
happen at the same time, for faster development and a better outcome. The concurrent model is
also referred to as a parallel working model.
The concurrent development model, sometimes called concurrent engineering, allows a software
team to represent iterative and concurrent elements of any of the process models. For example,
the modeling activity defined for the spiral model is accomplished by invoking one or more of the
following software engineering actions: prototyping, analysis, and design
46
FIG 17: Concurrent models
Figure provides a schematic representation of one software engineering activity within the modeling
activity using a concurrent modeling approach. The activity—modeling—may be in any one of the
states noted at any given time. Similarly, other activities, actions, or tasks (e.g., communication or
construction) can be represented in an analogous manner. All software engineering activities exist
concurrently but reside in different states.
The modeling activity (which existed in the inactive state while initial communication was
completed, now makes a transition into the under development state. If, however, the customer
indicates that changes in requirements must be made, the modeling activity moves from the under
development state into the awaiting changes state. Concurrent modeling defines a series of
events that will trigger transitions from state to state for each of the software engineering activities,
actions, or tasks
Advantages:
47
Disadvantages:
Software requires more maintenance.
Developing a good model is a little complicated.
Software quality is not assured.
13. Elucidate the key features of the software process models with suitableexamples.
A software process is the set of activities and associated outcome that produce a software
product. Software engineers mostly carry out these activities. These are four key process
activities, which are common to all software processes. These activities are:
1. Software specifications: The functionality of the software and constraints on its
operation must be defined.
2. Software development: The software to meet the requirement must be produced.
3. Software validation: The software must be validated to ensure that it does what the
customer wants.
4. Software evolution: The software must evolve to meet changing client needs.
1. A workflow model: This shows the series of activities in the process along with their inputs,
outputs and dependencies. The activities in this model perform human actions.
2. A dataflow or activity model: This represents the process as a set of activities, each of
which carries out some data transformations. It shows how the input to the process, such as
a specification is converted to an output such as a design. The activities here may be at a
lower level than activities in a workflow model. They may perform transformations carried out
by people or by computers.
3. A role/action model: This means the roles of the people involved in the software process
and the activities for which they are responsible.
48
There are several various general models or paradigms of software development:
1. The waterfall approach: This takes the above activities and produces them as separate
process phases such as requirements specification, software design, implementation, testing,
and so on. After each stage is defined, it is "signed off" and development goes onto the
following stage.
2. Evolutionary development: This method interleaves the activities of specification,
development, and validation. An initial system is rapidly developed from a very abstract
specification.
3. Formal transformation: This method is based on producing a formal mathematical system
specification and transforming this specification, using mathematical methods to a program.
These transformations are 'correctness preserving.' This means that you can be sure that the
developed programs meet its specification.
4. System assembly from reusable components: This method assumes the parts of the
system already exist. The system development process target on integrating these parts rather
than developing them from scratch.
The Software Engineering Institute (SEI) has developed a comprehensive model predicated on
a set of software engineering capabilities that should be present as organizations reach different
levels of process maturity. To determine an organization‘s current state of process maturity the
CMMI uses two ways, (i) as a continuous model and (ii) as a staged model. In the case of a
continuous model each process area is rated according to the following capability levels.
Level 0 : Incomplete
The process are is either not performed or does not achieve all goals and objectives defined by the
CMMI for level 1 capability.
Level 1 : Performed
All the specific goals has been achieved and work tasks required to produce defined products has
been conducted.
Level 2 : Managed
All level 1 criteria have been achieved. All work associated with the process area conforms to an
organizationally defined policy, all people are doing their jobs, stakeholders are actively involved in
the process area, all work tasks and work products are monitored, controlled and reviewed.
49
Level 3 : Defined
All level 2 criteria have been achieved. In addition, the process is ―tailored from the organization‘s
set of standard processes according to the organization‘s tailoring guidelines and contributes
work products, measures and other process improvement information to the organizational
process assets.‖
Level 4 : Quantitatively Managed
All level 3 criteria have been achieved. In addition, the process area is controlled and
improved using measurement and quantitative assessment. ―Quantitative objectives for quality and
process performance are established and used as a criteria in managing the process.‖
Level 5 : Optimized
All capability level 4 criteria have been achieved. In addition, the process area is adapted
and optimized using quantitative means to meet changing customer needs and to continually
improve the efficacy of the process area under consideration.
The staged CMMI model defines the same process areas, goals and practices as the
continuous model. The primary difference is that the staged model defines five maturity levels
rather than five capability levels.
50