0% found this document useful (0 votes)
26 views29 pages

Chapter 1.docx 1

Chapter 1 introduces software engineering, defining it as a systematic approach to developing reliable software using sound engineering principles. It outlines the characteristics of quality software, the layered technology involved in software development, and the software process framework, which includes communication, planning, modeling, construction, and deployment. Additionally, it discusses the Capability Maturity Model (CMM) for assessing and improving software processes, as well as current trends in software development such as the rise of Python, DevSecOps, and AI/ML.

Uploaded by

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

Chapter 1.docx 1

Chapter 1 introduces software engineering, defining it as a systematic approach to developing reliable software using sound engineering principles. It outlines the characteristics of quality software, the layered technology involved in software development, and the software process framework, which includes communication, planning, modeling, construction, and deployment. Additionally, it discusses the Capability Maturity Model (CMM) for assessing and improving software processes, as well as current trends in software development such as the rise of Python, DevSecOps, and AI/ML.

Uploaded by

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

Chapter 1

Introduction to software engineering and process models


Software Engineering Introduction
● Computer software is a product or program code developed by software engineers.
● The applications of computer software are: Telecommunication, military, medical sciences,
online shopping, office products, IT industry etc.
● A Software consists of data and the related documents.
● The software is the key element in all computer based systems and products.
● The main purpose behind software engineering is to give a framework for building a
software with best quality.
Software engineering definitions
● The establishment and use of sound engineering principles in order to obtain economical
software that is reliable and works efficiently on real machines.
● Software engineering is a systematic and disciplined approach towards the development of
the software operation and maintenance.
● Software engineering is an engineering branch associated with the development of software
product using well-defined scientific principles, methods and procedures.
Characteristics of a software
● Software should achieve a good quality in design and meet all the specifications of the
customer.
● Software does not wear out i.e. it does not lose the material.
● Software should be inherently complex.
● Software must be efficient i.e. the ability of the software to use system resources in an
effective and efficient manner.
● Software must be integral i.e. it must prevent from unauthorized access to the software or
data.
Software engineering - Layered technology
● Software engineering is a fully layered technology.
● To develop a software, we need to go from one layer to another.
● All these layers are related to each other and each layer demands the fulfillment of the
previous layer.
The layered technology consists of:
1. Quality focus
The characteristics of good quality software are:
● Correctness of the functions required to be performed by the software.
● Maintainability of the software
● Integrity i.e. providing security so that the unauthorized user cannot access information or
data.
● Usability i.e. the efforts required to use or operate the software.
2. Process
● It is the base layer or foundation layer for the software engineering.
● The software process is the key to keep all levels together.
● It defines a framework that includes different activities and tasks.
● In short, it covers all activities, actions and tasks required to be carried out for software
development.
3. Methods
● The method provides the answers of all 'how-to' that are asked during the process.
● It provides the technical way to implement the software.
● It includes collection of tasks starting from communication, requirement analysis, analysis
and design modelling, program construction, testing and support.
4. Tools
● The software engineering tool is an automated support for the software development.
● The tools are integrated i.e the information created by one tool can be used by the other tool.
● For example: The Microsoft publisher can be used as a web designing tool.
Software Process Framework
● The process of framework defines a small set of activities that are applicable to all types of
projects.
● The software process framework is a collection of task sets.
● Task sets consist of a collection of small work tasks, project milestones, work productivity
and software quality assurance points.

Typical umbrella activities are:


1. Software project tracking and control
● In this activity, the developing team accesses project plan and compares it with the
predefined schedule.
● If these project plans do not match with the predefined schedule, then the required actions
are taken to maintain the schedule.
2. Risk management
● Risk is an event that may or may not occur.
● If the event occurs, then it causes some unwanted outcome. Hence, proper risk management
is required.
3. Software Quality Assurance (SQA)
● SQA is the planned and systematic pattern of activities which are required to give a
guarantee of software quality.
For example, during the software development meetings are conducted at every stage of
development to find out the defects and suggest improvements to produce good quality
software.
4. Formal Technical Reviews (FTR)
● FTR is a meeting conducted by the technical staff.
● The motive of the meeting is to detect quality problems and suggest improvements.
● The technical person focuses on the quality of the software from the customer point of view.
5. Measurement
● Measurement consists of the effort required to measure the software.
● The software cannot be measured directly. It is measured by direct and indirect measures.
● Direct measures like cost, lines of code, size of software etc.
● Indirect measures such as quality of software which is measured by some other factor.
Hence, it is an indirect measure of software.
6. Software Configuration Management (SCM)
● It manages the effect of change throughout the software process.
7. Reusability management
● It defines the criteria for reuse the product.
● The quality of software is good when the components of the software are developed for
certain application and are useful for developing other applications.
8. Work product preparation and production
● It consists of the activities that are needed to create the documents, forms, lists, logs and user
manuals for developing a software.
Generic Process Model
There are five generic process framework activities:
1. Communication:
The software development starts with the communication between customer and developer.
2. Planning:
It consists of complete estimation, scheduling for project development and tracking.
3. Modeling:
● Modeling consists of complete requirement analysis and the design of the project like
algorithm, flowchart etc.
● The algorithm is the step-by-step solution of the problem and the flow chart shows a
complete flow diagram of a program.
4. Construction:
● Construction consists of code generation and the testing part.
● Coding part implements the design details using an appropriate programming language.
● Testing is to check whether the flow of coding is correct or not.
● Testing also check that the program provides desired output.
5. Deployment:
● Deployment step consists of delivering the product to the customer and take feedback from
them.
● If the customer wants some corrections or demands for the additional capabilities, then the
change is required for improvement in the quality of the software.
The following framework activities are carried out irrespective of the process model
chosen by the organization.
1. Communication
2. Planning
3.Modeling
4.Construction
5. Deployment
The name 'prescriptive' is given because the model prescribes a set of activities, actions,
tasks, quality assurance and change the mechanism for every project.

Capability maturity model (CMM)

CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.
● It is not a software process model. It is a framework that is used to analyze the approach
and techniques followed by any organization to develop software products.
● It also provides guidelines to further enhance the maturity of the process used to develop
those software products.
● It is based on profound feedback and development practices adopted by the most
successful organizations worldwide.
● This model describes a strategy for software process improvement that should be
followed by moving through 5 different levels.
● Each level of maturity shows a process capability level. All the levels except level-1 are
further described by Key Process Areas (KPA’s).
Shortcomings of SEI/CMM:
● It encourages the achievement of a higher maturity level in some cases by displacing the
true mission, which is improving the process and overall software quality.
● It only helps if it is put into place early in the software development process.
● It has no formal theoretical basis and in fact is based on the experience of very
knowledgeable people.
● It does not have good empirical support and this same empirical support could also be
constructed to support other models.
Key Process Areas (KPA’s):
Each of these KPA’s defines the basic requirements that should be met by a software process
in order to satisfy the KPA and achieve that level of maturity.
Conceptually, key process areas form the basis for management control of the software
project and establish a context in which technical methods are applied, work products like
models, documents, data, reports, etc. are produced, milestones are established, quality is
ensured and change is properly managed.

Level-1: Initial –
● No KPA’s defined.
● Processes followed are Adhoc and immature and are not well defined.
● Unstable environment for software development.
● No basis for predicting product quality, time for completion, etc.
Level-2: Repeatable –
● Focuses on establishing basic project management policies.
● Experience with earlier projects is used for managing new similar natured projects.
● Project Planning- It includes defining resources required, goals, constraints, etc. for the
project. It presents a detailed plan to be followed systematically for the successful
completion of good quality software.
● Configuration Management- The focus is on maintaining the performance of the
software product, including all its components, for the entire lifecycle.
● Requirements Management- It includes the management of customer reviews and
feedback which result in some changes in the requirement set. It also consists of
accommodation of those modified requirements.
● Subcontract Management- It focuses on the effective management of qualified software
contractors i.e. it manages the parts of the software which are developed by third parties.
● Software Quality Assurance- It guarantees a good quality software product by following
certain rules and quality standard guidelines while developing.
Level-3: Defined –
● At this level, documentation of the standard guidelines and procedures takes place.
● It is a well-defined integrated set of project-specific software engineering and
management processes.
● Peer Reviews- In this method, defects are removed by using a number of review methods
like walkthroughs, inspections, buddy checks, etc.
● Intergroup Coordination- It consists of planned interactions between different
development teams to ensure efficient and proper fulfillment of customer needs.
● Organization Process Definition- Its key focus is on the development and maintenance
of the standard development processes.
● Organization Process Focus- It includes activities and practices that should be followed
to improve the process capabilities of an organization.
● Training Programs- It focuses on the enhancement of knowledge and skills of the team
members including the developers and ensuring an increase in work efficiency.
Level-4: Managed –
● At this stage, quantitative quality goals are set for the organization for software products
as well as software processes.
● The measurements made help the organization to predict the product and process quality
within some limits defined quantitatively.
● Software Quality Management- It includes the establishment of plans and strategies to
develop quantitative analysis and understanding of the product’s quality.
● Quantitative Management- It focuses on controlling the project performance in a
quantitative manner.
Level-5: Optimizing –
● This is the highest level of process maturity in CMM and focuses on continuous process
improvement in the organization using quantitative feedback.
● Use of new tools, techniques, and evaluation of software processes is done to prevent
recurrence of known defects.
● Process Change Management- Its focus is on the continuous improvement of the
organization’s software processes to improve productivity, quality, and cycle time for the
software product.
● Technology Change Management- It consists of the identification and use of new
technologies to improve product quality and decrease product development time.
● Defect Prevention- It focuses on the identification of causes of defects and prevents them
from recurring in future projects by improving project-defined processes.

Best Software Development Trends


As we’re moving forward with the pace of technology, we’ve been observing a constant shift
in technology and innovations in almost every part of the world. We aren’t talking about a
20-30 years gap, think about that time when the world was badly hit by a pandemic and
everyone was forced to work from home with no alternatives. That was the moment when
companies and start-ups started digging around and contributing their ideas, products, and
services. You may talk about apps that are offering today fast delivery of groceries or any
AI-enabled apps, all of this has become a new normal in the field of software development,
which seemed unachievable once.
. Everyone’s first Preference – Python
Since its release, Python has made significant improvements and has also addressed major
areas of concern. Its latest version 3.10.4 (released in March 2022) has bought features to
boost performance and capabilities and caved its path towards robust language. Its vast
developer community has also played a significant role in this. Even, if you’ll see around,
today colleges are becoming more adaptive towards teaching Python actively. A report also
suggested that Python has grown enormously by 400% in the past 7 years and currently it’s
growing at the pace of 27% YoY. So, as the demand is growing, the opportunities are
growing in this area along with it.
2. DevSecOps – The new normal
With time and demand for new adoptions in technology, developing software in more secure
and faster methods has become much more prominent to maintain the overall quality
parameters. Besides this, as the growing demand for the cloud is increasing everywhere,
especially in software development, spam attacks have been consistently increasing every
day. These factors have triggered the stability of security protocols, so keep in handy and
smooth right from development to delivery process, DevSecOps has come in limelight and
has been fulfilling all the parameters that are required to make the development process even
secured. By this, one thing is pretty clear, this adaptation can deliver a sustainable solution to
avoid unwanted security breaches.
3. Craze for Progressive Web Apps
The craze for mobile apps is growing enormously YoY, it’s a clear indication that people have
been spending a lot of time on their smartphones and that’s where the possibility of business
growth increases. We’ve witnessed how dramatically the significant shift of needs of mobile
apps as compared to desktop, but native mobile apps are winning the race by offering a rich
experience in UX where easy login page and account setups are being offered. As per the
survey, where the companies like OLA, OLX, Tinder, and many others have observed a
massive explosion in business (up to 250%), and besides this, it’s also been much helpful in
killing loading time (faster response). This has a very clear indication that the upcoming
future to maintain the pace in all-tier of businesses is nothing but progressive web apps.
4. Demand for Automated Code Reviews – Enhanced Code Quality
Believe it or not, being a developer, it always frustrates when you see any task being done
manually especially when we’re talking about coding, you will ensure to deliver and maintain
the code quality. On the other hand, when the reviewer will get the remaining task done
manually, it clearly becomes a bit annoying. Today, in fact, we do have automated coding
reviewing tools that contain a predefined set of parameters and they have been quite helpful
for developers by enhancing their performance the best part about automated code testing is
that the margin of error is comparatively low than manual testing. Currently, we do have so
bunch of tools, some of them are:
● SmartBear Collaborator
● Embold
● CodeScene
● Codebrag
5. Hype of AI and ML
Today, AI has spread all around the industry and has been actively used in businesses. We are
surrounded by AI/ML and we actively use it on daily basis without even realizing it. People
in different fields and industries are associated with AI, smart innovative gadgets, and
sometimes even a household presence (such as Alexa, Google Assistant, etc.) While we have
been talking about AI and ML, this concept is not new in the market, even though it was
introduced back in 1956, but it took us years of work, experiments, and failures for making it
a success in today’s technological reality.
Besides this, it’s not just a replacement for human intelligence, it’s beyond a supportive tool
that is being used in healthcare, automation, finance, etc. Its diverse nature and adaptability
have provided millions of opportunities. Even if you’ll check the current stats, there are more
than 321,000 vacancies for AI/ML in the market and it’s very likely to hold the market in
the next few decades.
6. Ongoing demand for Kubernetes
As you must be aware of the basics of Kubernetes, which is being used to automate the over
process i.e. deployment, scaling, and management of containerized apps (and is an
open-source system). Henceforth, this pool of container management has soared in popularity
with the rise of businesses that have been operating and are inclined to dependency on cloud
technology. Today, top companies like Airbnb, NYT, etc. are some of the major players who
are using Kubernetes actively for a while now. Being a standard platform (both for
cloud-native and DevOps) environment, the best opportunities in this field is not yet
surprising, it’s been called the “de-facto platform” when it comes to deployment. Besides
this, the demand is not going to decrease under any circumstances, and as per the survey, it
indicated the same where 91 out of 100 people picked Kubernetes as their preference and so
does the scope in job preference is comparatively high for all levels of business.

There are three types of prescriptive process models. They are:


1. The Waterfall Model
2. Incremental Process model
3. RAD model
1. The Waterfall Model
● The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle
model'.
● In this model, each phase is fully completed before the beginning of the next phase.
● This model is used for the small projects.
● In this model, feedback is taken after each phase to ensure that the project is on the right
path.
● Testing part starts only after the development is complete.

NOTE: The description of the phases of the waterfall model is same as that of the process
model.
An alternative design for 'linear sequential model' is as follows:
Advantages of waterfall model
● The waterfall model is simple and easy to understand, implement, and use.
● All the requirements are known at the beginning of the project, hence it is easy to manage.
● It avoids overlapping of phases because each phase is completed at once.
● This model works for small projects because the requirements are understood very well.
● This model is preferred for those projects where the quality is more important as compared
to the cost of the project.
Disadvantages of the waterfall model
● This model is not good for complex and object oriented projects.
● It is a poor model for long projects.
● The problems with this model are uncovered, until the software testing.
● The amount of risk is high.

V-model
The V - model is SDLC model where execution of processes happens in a sequential manner
in V-shape. It is also known as Verification and Validation model.
V - Model is an extension of the waterfall model and is based on association of a testing
phase for each corresponding development stage. This means that for every single phase in
the development cycle there is a directly associated testing phase. This is a highly disciplined
model and next phase starts only after completion of the previous phase.
V- Model design
Under V-Model, the corresponding testing phase of the development phase is planned in
parallel. So there are Verification phases on one side of the .V. and Validation phases on the
other side. Coding phase joins the two sides of the V-Model.
The below figure illustrates the different phases in V-Model of SDLC.
Verification Phases
Following are the Verification phases in V-Model:
Business Requirement Analysis: This is the first phase in the development cycle where the
product requirements are understood from the customer perspective. This phase involves
detailed communication with the customer to understand his expectations and exact
requirement. This is a very important activity and need to be managed well, as most of the
customers are not sure about what exactly they need. The acceptance test design planning is
done at this stage as business requirements can be used as an input for acceptance testing.
System Design: Once you have the clear and detailed product requirements, it.s time to
design the complete system. System design would comprise of understanding and detailing
the complete hardware and communication setup for the product under development. System
test plan is developed based on the system design. Doing this at an earlier stage leaves more
time for actual test execution later.
Architectural Design: Architectural specifications are understood and designed in this
phase. Usually more than one technical approach is proposed and based on the technicaland
financial feasibility the final decision is taken. System design is broken down further into
modules taking up different functionality. This is also referred to as High Level Design HLD.
The data transfer and communication between the internal modules and with the outside
world other systems is clearly understood and defined in this stage. With this information,
integration tests can be designed and documented during this stage.
Module Design: In this phase the detailed internal design for all the system modules is
specified, referred to as Low Level Design LLD. It is important that the design is compatible
with the other modules in the system architecture and the other external systems. Unit tests
are an essential part of any development process and helps eliminate the maximum faults and
errors at a very early stage. Unit tests can be designed at this stage based on the internal
module designs.
Coding Phase
The actual coding of the system modules designed in the design phase is taken up in the
Coding phase. The best suitable programming language is decided based on the system and
architectural requirements. The coding is performed based on the coding guidelines and
standards. The code goes through numerous code reviews and is optimized for best
performance before the final build is checked into the repository.
Validation Phases Following are the Validation phases in V-Model:
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 system test execution.
Acceptance Testing: Acceptance testing is associated with the business requirement analysis
phase and involves testing the product in user environment. Acceptance tests uncover the
compatibility issues with the other systems available in the user environment. It also
discovers the non functional issues such as load and performance defects in the actual user
environment.
V- Model Application V- Model application is almost same as waterfall model, as both the
models are of sequential type. Requirements have to be very clear before the project starts,
because it is usually expensive to go back and make changes. This model is used in the
medical development field, as it is strictly disciplined domain. Following are the suitable
scenarios to use V-Model:
*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.
V- Model Pros and Cons
The advantage of V-Model is that it’s very easy to understand and apply. The simplicity of
this model also makes it easier to manage. The disadvantage is that the model is not flexible
to changes and just in case there is a requirement change, which is very common in today’s
dynamic world, it becomes very expensive to make the change.
PROS
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.
CONS
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.
3. Incremental 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.
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.

4. RAD model
● RAD is a Rapid Application Development model.
● Using the RAD model, software product is developed in a short period of time.
● The initial activity starts with the communication between customer and developer.
● Planning depends upon the initial requirements and then the requirements are divided into
groups.
● Planning is more important to work together on different modules.
The RAD model consist of following phases:
1. Business Modeling
● Business modeling consist of the flow of information between various functions in the
project.
● For example what type of information is produced by every function and which are the
functions to handle that information.
● A complete business analysis should be performed to get the essential business information.
2. Data modeling
● The information in the business modeling phase is refined into the set of objects and it is
essential for the business.
● The attributes of each object are identified and define the relationship between objects.
3. Process modeling
● The data objects defined in the data modeling phase are changed to fulfil the information
flow to implement the business model.
● The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation
● In the application generation phase, the actual system is built.
● To construct the software the automated tools are used.
5. Testing and turnover
● The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
● The data flow and the interfaces between all the components are are fully tested. Hence,
most of the programming components are already tested.

Evolutionary Process Models.


Evolutionary model is a combination of Iterative and Incremental model of software
development life cycle. Delivering your system in a big bang release, delivering it in
incremental process over time is the action done in this model. Some initial requirements and
architecture envisioning need to be done. It is better for software products that have their
feature sets redefined during development because of user feedback and other factors. The
Evolutionary development model divides the development cycle into smaller, incremental
waterfall models in which users are able to get access to the product at the end of each cycle.
Feedback is provided by the users on the product for the planning stage of the next cycle and
the development team responds, often by changing the product, plan or process. Therefore,
the software product evolves with time. All the models have the disadvantage that the
duration of time from start of the project to the delivery time of a solution is very high.
Evolutionary model solves this problem in a different approach.
Evolutionary model suggests breaking down of work into smaller chunks, prioritizing them
and then delivering those chunks to the customer one by one. The number of chunks is huge
and is the number of deliveries made to the customer. The main advantage is that the
customer’s confidence increases as he constantly gets quantifiable goods or services from the
beginning of the project to verify and validate his requirements. The model allows for
changing requirements as well as all work in broken down into maintainable work chunks.

Application of Evolutionary Model:


1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.

Following are the evolutionary process models.


1. The prototyping model
2. The spiral model
3. Concurrent development model
1. The Prototyping model
The prototype model requires that before carrying out the development of actual software,
a working prototype of the system should be built. A prototype is a toy implementation of
the system. A prototype usually turns out to be a very crude version of the actual system,
possible exhibiting limited functional capabilities, low reliability, and inefficient
performance as compared to actual software. In many instances, the client only has a
general view of what is expected from the software product. In such a scenario where
there is an absence of detailed information regarding the input to the system, the
processing needs, and the output requirement, the prototyping model may be employed.

● Prototype is defined as first or preliminary form using which other forms are copied or
derived.
● Prototype model is a set of general objectives for software.
● It does not identify the requirements like detailed input, output.
● It is software working model of limited functionality.
● In this model, working programs are quickly produced.

The different phases of Prototyping model are:


1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the
software.
2. Quick design
● Quick design is implemented when requirements are known.
● It includes only the important aspects like input and output format of the software.
● It focuses on those aspects which are visible to the user rather than the detailed plan.
● It helps to construct a prototype.
3. Modeling quick design
● This phase gives the clear idea about the development of software because the software is
now built.
● It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
5. Deployment, delivery, feedback
● If the user is not satisfied with current prototype then it refines according to the requirements
of the user.
● The process of refining the prototype is repeated until all the requirements of users are met.
● When the users are satisfied with the developed prototype then the system is developed on
the basis of final prototype.
Advantages of Prototyping Model
● Prototype model need not know the detailed input, output, processes, adaptability of
operating system and full machine interaction.
● In the development process of this model users are actively involved.
● The development process is the best platform to understand the system by the user.
● Errors are detected much earlier.
● Gives quick user feedback for better solutions.
● It identifies the missing functionality easily. It also identifies the confusing or difficult
functions.
Disadvantages of Prototyping Model:
● The client involvement is more and it is not always considered by the developer.
● It is a slow process because it takes more time for development.
● Many changes can disturb the rhythm of the development team.
● It is a thrown away prototype when the users are confused with it.

2. The Spiral model


● Spiral model is a risk driven process model.
● It is used for generating the software projects.
● In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then
alternate solutions are suggested and implemented.
● It is a combination of prototype and sequential model or waterfall model.
● In one iteration all activities are done, for large project's the output is small.
The framework activities of the spiral model are as shown in the following figure.
NOTE: The description of the phases of the spiral model is same as that of the process
model.
Advantages of Spiral Model
● It reduces high amount of risk.
● It is good for large and critical projects.
● It gives strong approval and documentation control.
● In spiral model, the software is produced early in the life cycle process.
Disadvantages of Spiral Model
● It can be costly to develop a software model.
● It is not used for small projects.

3. The concurrent development model


● The concurrent development model is called as concurrent model.
● The communication activity has completed in the first iteration and exits in the awaiting
changes state.
● The modeling activity completed its initial communication and then go to the
underdevelopment state.
● If the customer specifies the change in the requirement, then the modeling activity moves
from the under development state into the awaiting change state.
● The concurrent process model activities moving from one state to another state.
(Concurrent Process model is an evolutionary process model in software engineering. The
term concurrent mean “done at the same time”.
If we take waterfall model as an example, you will not know the activities going on in each
phase, only after the phase is over, you get a work product or a document.
Suppose we want to know the state of activities of the design phase and at the same time
we want to know about testing phase activities. Which ones are complete and which are
not?
The concurrent process model shows the current state of activities, tasks and their
associated states that remain in different phases.
For example,
‘Design Phase’ may be at an ‘awaiting state’ and ‘customer communication’ is in ‘under
revision’ state. The customer wants some changes to the design, then ‘communication’ goes
to ‘awaiting changes’ and ‘design’ goes to the under-development stage again.
The benefit of this model is that project managers know each phase is what state and why.)

Advantages of the concurrent development model


● This model is applicable to all types of software development processes.
● It is easy for understanding and use.
● It gives immediate feedback from testing.
● It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model
● It needs better communication between the team members. This may not be achieved all the
time.
● It requires to remember the status of the different activities.
Comparison of Various SDLC Models
Properties of Water-Fall
Incremental Model Spiral Model Rad Model
Model Model
Planning in early
Yes Yes Yes No
stage
Returning to an
No Yes Yes Yes
earlier phase
Handle
Not Appropriate Not Appropriate Appropriate Not Appropriate
Large-Project
Detailed
Necessary Yes but not much Yes Limited
Documentation
Cost Low Low Expensive Low
Requirement Time boxed
Beginning Beginning Beginning
Specifications release
Flexibility to change Difficult Easy Easy Easy
Only at the
User Involvement Only at beginning Intermediate High
beginning
Promotes Easily
Maintenance Least Typical
Maintainability Maintained
Duration Long Very long Long Short
Medium to high
Risk Involvement High Low Low
risk
Framework Type Linear Linear + Iterative Linear + Iterative Linear
At the end of the
After completion After completion
Testing After every iteration engineering
of coding phase of coding
phase
Yes (As parallel
Overlapping Phases No development is No Yes
there)
Least Easily
Maintenance Maintainable Yes
Maintainable Maintainable
Re-usability Least possible To some extent To some extent
Yes
Time-Frame Very Long Long Long Short
Working software At the end of the At the end of every At the end of At the end of
availability life-cycle iteration every iteration
the life cycle
Rapid
Objective High Assurance Rapid Development High Assurance
development
Team size Large Team Not Large Team Large Team Small Team
Customer control
Very Low Yes Yes Yes
over administrator

Agile Process in Software Engineering


Agile principles
● The highest priority of this process is to satisfy the customer.
● Acceptance of changing requirement even late in development.
● Frequently deliver a working software in small time span.
● Throughout the project business people and developers work together on daily basis.
● Projects are created around motivated people if they are given the proper environment and
support.
● Face to face interaction is the most efficient method of moving information in the
development team.
● Primary measure of progress is a working software.
● Agile process helps in sustainable development.
● Continuous attention to technical excellence and good design increases agility.
● From self organizing teams the best architecture, design and requirements are emerged.
● Simplicity is necessary in development.

1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based
on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders
to define requirements. You can use the user flow diagram or the high-level UML diagram to
show the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.

Agile methodology
AGILE is a methodology that promotes continuous iteration of development and testing
throughout the software development life cycle of the project. Both development and testing
activities are concurrent unlike the Waterfall model
The agile software development emphasizes on four core values.

● Individual and team interactions over processes and tools


● Working software over comprehensive documentation
● Customer collaboration over contract negotiation
● Responding to change over following a plan

Advantages of Agile model:


▪ Customer satisfaction by rapid, continuous delivery of useful software.
▪ People and interactions are emphasized rather than process and tools. Customers,
developers and testers constantly interact with each other.
▪ Working software is delivered frequently (weeks rather than months).
▪ Face-to-face conversation is the best form of communication.
▪ Close, daily cooperation between business people and developers.
▪ Continuous attention to technical excellence and good design.
▪ Regular adaptation to changing circumstances.
▪ Even late changes in requirements are welcomed

Disadvantages of Agile model:


▪ In case of some software deliverables, especially the large ones, it is difficult to assess
the effort required at the beginning of the software development life cycle.
▪ There is lack of emphasis on necessary designing and documentation.
▪ The project can easily get taken off track if the customer representative is not clear what
final outcome that they want.
▪ Only senior programmers are capable of taking the kind of decisions required during the
development process.

Extreme Programming (XP)


● Extreme programming (XP) is one of the most important software development framework
of Agile models. It is used to improve software quality and responsive to customer
requirements. The extreme programming model recommends taking the best practices that
have worked well in the past in program development projects to extreme levels.

XP values
Following are the values for extreme programming:

1. Communication
● Building software development process needs communication between the developer and
the customer.
● Communication is important for requirement gathering and discussing the concept.
2. Simplicity
The simple design is easy to implement in code.
3. Feedback
Feedback guides the development process in the right direction.
4. Courage
In every development process there will always be a pressure situation. The courage or the
discipline to deal with it surely makes the task easy.
5. Respect
Agile process should inculcate the habit to respect all team members, other stake holders and
customer.
The XP Process
The XP process comprises four framework activities:
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.
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.
Applications of Extreme Programming (XP): Some of the projects that are suitable to
develop using XP model are given below:
● Small projects: XP model is very useful in small projects consisting of small teams
as face to face meeting is easier to achieve.
● Projects involving new technology or Research projects: This type of projects face
changing of requirements rapidly and technical problems. So XP model is used to
complete this type of projects.

Scrum
● Scrum is an agile process most commonly used for product development, especially
software development. Scrum is a project management framework that is applicable to any
project with aggressive deadlines, complex requirements and a degree of uniqueness. In
Scrum, projects move forward via a series of iterations called sprints. Each sprint is typically
two to four weeks long.
● Scrum principles are consistent with the agile platform that are used to guide development
activities within a process.
● It includes the framework activities like requirement, analysis, design, evolution and
delivery.
● Work tasks occur within a process pattern in each framework activity called as 'sprint'.
● Scrum highlights the use of a set of software process pattern that are effective for the
projects with tight timelines, changing requirements and business criticality.

Scrum Overview – Introduction to Scrum Terms


An introduction to Scrum would not be complete without knowing the Scrum terms you'll be
using. This section in the Scrum overview will discuss common concepts in Scrum.

Scrum team: A typical scrum team has between five and nine people, but Scrum projects can
easily scale into the hundreds. However, Scrum can easily be used by one-person teams and
often is. This team does not include any of the traditional software engineering roles such as
programmer, designer, tester or architect. Everyone on the project works together to complete
the set of work they have collectively committed to complete within a sprint. Scrum teams
develop a deep form of camaraderie and a feeling that “we’re all in this together.”

Product owner: The product owner is the project’s key stakeholder and represents users,
customers and others in the process. The product owner is often someone from product
management or marketing, a key stakeholder or a key user.
Scrum Master: The Scrum Master is responsible for making sure the team is as productive
as possible. The Scrum Master does this by helping the team use the Scrum process, by
removing impediments to progress, by protecting the team from outside, and so on.

Product backlog: The product backlog is a prioritized features list containing every desired
feature or change to the product. Note: The term “backlog” can get confusing because it’s
used for two different things. To clarify, the product backlog is a list of desired features for
the product. The sprint backlog is a list of tasks to be completed in a sprint.

Sprint planning meeting: At the start of each sprint, a sprint planning meeting is held,
during which the product owner presents the top items on the product backlog to the team.
The Scrum team selects the work they can complete during the coming sprint. That work is
then moved from the product backlog to a sprint backlog, which is the list of tasks needed to
complete the product backlog items the team has committed to complete in the sprint.

Daily Scrum: Each day during the sprint, a brief meeting called the daily scrum is
conducted. This meeting helps set the context for each day’s work and helps the team stay on
track. All team members are required to attend the daily scrum.

Sprint review meeting: At the end of each sprint, the team demonstrates the completed
functionality at a sprint review meeting, during which, the team shows what they
accomplished during the sprint. Typically, this takes the form of a demonstration of the new
features, but in an informal way; for example, PowerPoint slides are not allowed. The
meeting must not become a task in itself nor a distraction from the process.

Sprint retrospective: Also at the end of each sprint, the team conducts a sprint retrospective,
which is a meeting during which the team (including its ScrumMaster and product owner)
reflect on how well Scrum is working for them and what changes they may wish to make for
it to work even better.

Each of the Scrum terms has its own page within the Scrum section, so be sure to check out
all the pages in the navigation.
Each process patterns defines a set of development actions which are as follows:
Backlog
● A prioritized list of project requirements or features that provide business value for the
customer.
● Items can be added to the backlog at any time.
● The product manager accesses the backlog and updates priorities, as required.
Sprints
● It consists of work units that are required to achieve a requirement defined in the backlog.
● Changes are not introduced during the sprints. It allows team members to work in short-term
but in the stable environment.
Scrum meeting
● The short meetings are held daily by the scrum team.
● The key questions are asked and answered by all team members.
● Daily meetings guide to 'knowledge socialization' and that encourages a self-organizing
team structure.
Demos
● Deliver the software increment to the customer. Using which the customer evaluates and
demonstrates the functionalities.
What is kanban?
Kanban is a popular framework used to implement agile software development. It requires
real-time communication of capacity and full transparency of work. Work items are
represented visually on a kanban board, allowing team members to see the state of every
piece of work at any time.
When Applicable
Kanban can be used in any knowledge work setting, and is particularly applicable in
situations where work arrives in an unpredictable fashion and/or when you want to deploy
work as soon as it is ready, rather than waiting for other work items.

Values
Teams applying Kanban to improve the services they deliver embrace the following values:
Transparency - sharing information openly using clear and straightforward language
improves the flow of business value.
Balance - different aspects, viewpoints, and capabilities must be balanced in order to achieve
effectiveness.
Collaboration - Kanban was created to improve the way people work together.
Customer Focus - Kanban systems aim to optimize the flow of value to customers that are
external from the system but may be internal or external to the organization in which the
system exists.
Flow - Work is a continuous or episodic flow of value.
Leadership - Leadership (the ability to inspire others to act via example, words, and
reflection) is needed at all levels in order to realize continuous improvement and deliver
value.
Understanding - Individual and organizational self-knowledge of the starting point is
necessary to move forward and improve.
Agreement - Everyone involved with a system are committed to improvement and agree to
jointly move toward goals while respecting and accommodating differences of opinion and
approach.
Respect - Value, understand, and show consideration for people.
Scrum vs. kanban

Kanban and scrum share some of the same concepts but have very different approaches. They
should not be confused with one another.
SCRUM KANBAN

Cadence Regular fixed length sprints (ie, 2 weeks) Continuous flow

Release At the end of each sprint if approved by Continuous delivery or


methodology the product owner at the team's discretion

No existing roles.
Product owner, scrum master, Some teams enlist the
Roles development team help of an agile coach.

Key metrics Velocity Cycle time

Teams should strive to not make changes


to the sprint forecast during the sprint.
Change Doing so compromises learnings around Change can happen at
philosophy estimation. any time

You might also like