INTRODUCTION TO
SOFTWARE ENGINEERING
MODULE-01
TE CSE(Sem-VI)
INTRODUCTION TO SOFTWARE ENGINEERING
• The software is a collection of integrated programs.
• Software consists of carefully-organized instructions and code written
by developers on any of various particular computer languages.
• Computer programs and related documentation such as requirements,
design models and user manuals.
• Engineering is the application of scientific and practical knowledge
to invent, design, build, maintain, and improve frameworks,
processes, etc.
INTRODUCTION TO SOFTWARE ENGINEERING
• Software Engineering is an engineering branch related to the evolution
of software product using well-defined scientific principles, techniques,
and procedures. The result of software engineering is an effective and
reliable software product.
Characteristics of a Software
1. Reliability:It performs it’s intended task without failure
2. Usability:Users can easily & effectively interact with software
3. Efficiency: Optimal utilization of system resources to perform tasks
on time.
4. Maintainability:Software can be easily and cost effectively
modified/updated.
5. Portability: It can run on different platforms/ environment without
significant modification.
Classification of a Software
1. System Software – System Software is necessary to manage the computer resources and support the
execution of application programs. Software like operating systems, compilers, editors and drivers etc.,
come under this category. A computer cannot function without the presence of these. Operating
systems are needed to link the machine dependent needs of a program with the capabilities of the
machine on which it runs. Compilers translate programs from high-level language to machine language.
2. Networking and Web Applications Software – Networking Software provides the required support
necessary for computers to interact with each other and with data storage facilities. The networking
software is also used when software is running on a network of computers (such as World Wide Web).
It includes all network management software, server software, security and encryption software and
software to develop web-based applications like HTML, PHP, XML, etc.
3. Embedded Software – This type of software is embedded into the hardware normally in the Read Only
Memory (ROM) as a part of a large system and is used to support certain functionality under the
control conditions. Examples are software used in instrumentation and control applications like
washing machines, satellites, microwaves etc.
Classification of Software
5. Reservation Software – A Reservation system is primarily used to store and retrieve information and
perform transactions related to air travel, car rental, hotels, or other activities. They also provide
access to bus and railway reservations, although these are not always integrated with the main system.
These are also used to relay computerized information for users in the hotel industry, making a
reservation and ensuring that the hotel is not overbooked.
6. Business Software –This category of software is used to support the business applications and is the
most widely used category of software. Examples are software for inventory management, accounts,
banking, hospitals, schools, stock markets, etc.
7. Entertainment Software –Education and entertainment software provides a powerful tool for
educational agencies, especially those that deal with educating young children. There is a wide range
of entertainment software such as computer games, educational games, translation software,
mapping software, etc.
8. Application software: Software that performs specific functions for a user. User can directly interact
with a piece of software . For example, Word, excel, Power point
9. Artificial Intelligence Software –Software like expert systems, decision support systems, pattern
recognition software, artificial neural networks, chatgpt, virtual assistant,etc. come under this
category.
Classification of Software
9. Engineering software– This software is used to facilitate the engineering function and task. for
example, CAD , simulation software, etc
10. Product line Software – It is a set of software systems that share a common set of core assets but can
be customized to meet specific needs. For example, Starbucks has product lines such as coffee, tea,
snacks. Nike has footware, clothing, sports equipment.
Why is Software Engineering required?
• To manage Large software
• For more Scalability
• Cost Management
• To manage the dynamic nature of software
• For better quality Management
Need of Software Engineering
• Huge Programming: It is simpler to manufacture a wall than
to a h o u s e or b u i l d i n g , s i m i l a r l y , as the m e a s u r e of
programming become extensive engineering has to step to
give it a scientific process.
• Adaptability: If the software procedure were not based on
scientific and engineering ideas, it would be simpler to re-
create new software than to scale an existing one.
• Cost: As the hardware industry has demonstrated its skills
and huge manufacturing has let down the cost of computer
and electronic hardware. But the cost of programming
remains high if the proper process is not adapted.
Need of Software Engineering
• Dynamic Nature: The continually growing and adapting
n a t u r e o f pr o gr a m m i n g h u g e l y d e p e n ds u p o n t h e
environment in which the client works. If the quality of the
software is continually changing, new upgrades need to be
done in the existing one.
• Quality Management: Better p r o c e d u r e of s o f tw a r e
development provides a better and quality software product.
Capability Maturity Model(CMM)
• CMM was developed by the Software Engineering Institute (SEI) at C. Mellon
University in 1987.
• It is not a software process model. It is a framework which is used to analyse 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).
Capability Maturity Model(CMM)
Capability Maturity Model(CMM)
Level-1: Initial –
• No KPI’s defined.
• Processes followed are adhoc and immature and are not well defined.
• Unstable environment for software development.
• No formal training for new team members.
• The success depends on individual efforts, skill and knowledge.
• 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.
Capability Maturity Model(CMM)
3. 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 fulfilment of customer needs.
• Organization Process Definition- It’s 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.
Capability Maturity Model(CMM)
4. 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 a quantitative analysis and understanding of the product’s quality.
• Quantitative Management- It focuses on controlling the project performance in a
quantitative manner.
Capability Maturity Model(CMM)
5. 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
organization’s software processes to improve productivity, quality and cycle time for
the software product.
• Technology Change Management- It consists of identification and use of new
technologies to improve product quality and decrease the product development
time.
• Defect Prevention- It focuses on identification of causes of defects and to prevent
them from recurring in future projects by improving project defined process.
Software Process
• When you work to build a product or system, it’s important to go
through a series of predictable steps—a road map that helps you
create a timely, high-quality result. The road map that you follow is
called a Software Process.
• Technically, a software process is a framework for the activities,
actions, and tasks that are required to build high-quality software.
• Software process defines the approach that is taken as software is
engineered.
SDLC
Software Development Life Cycle, SDLC for
short, is a well-defined, structured sequence of
stages in software engineering to develop the
intended software product.
SDLC provides a series of steps to be followed to
design and develop a software product efficiently.
SDLC framework includes the following steps:
Communication
This is the first step where the user initiates the request for a desired software product.
He contacts the service provider and tries to negotiate the terms. He submits his request
to the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the project. The
team holds discussions with various stakeholders from problem domain and tries to
bring out as much information as possible on their requirements. The requirements are
contemplated and segregated into user requirements, system requirements and
functional requirements. The requirements are collected using a number of practices as
given -
studying the existing or obsolete system and software,
conducting interviews of users and developers,
referring to the database or
collecting answers from the questionnaires.
Feasibility Study
After requirement gathering, the team comes up with a rough plan of software process.
At this step the team analyzes if a software can be made to fulfill all requirements of the
user and if there is any possibility of software being no more useful. It is found out, if the
project is financially, practically and technologically feasible for the organization to take
up. There are many algorithms available, which help the developers to conclude the
feasibility of a software project.
System Analysis
At this step the developers decide a roadmap of their plan and try to bring up the best
software model suitable for the project. System analysis includes Understanding of
software product limitations, learning system related problems or changes to be done in
existing systems beforehand, identifying and addressing the impact of project on
organization and personnel etc. The project team analyzes the scope of the project and
plans the schedule and resources accordingly.
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the desk
and design the software product. The inputs from users and information gathered in
requirement gathering phase are the inputs of this step. The output of this step comes in
the form of two designs; logical design and physical design. Engineers produce meta-data
and data dictionaries, logical diagrams, data-flow diagrams and in some cases pseudo
codes.
Coding
This step is also known as programming phase. The implementation of software design
starts in terms of writing program code in the suitable programming language and
developing error-free executable programs efficiently.
Testing
An estimate says that 50% of whole software development process should be tested.
Errors may ruin the software from critical level to its own removal. Software testing is
done while coding by the developers and thorough testing is conducted by testing
experts at various levels of code such as module testing, program testing, product testing,
in-house testing and testing the product at user’s end. Early discovery of errors and their
remedy is the key to reliable software.
Integration
Software may need to be integrated with the libraries, databases and other program(s).
This stage of SDLC is involved in the integration of software with outer world entities.
Implementation
This means installing the software on user machines. At times, software needs post-
installation configurations at user end. Software is tested for portability and adaptability
and integration related issues are solved during implementation.
Operation and Maintenance
This phase confirms the software operation in terms of more efficiency and less errors. If
required, the users are trained on, or aided with the documentation on how to operate
the software and how to keep the software operational. The software is maintained
timely by updating the code according to the changes taking place in user end
environment or technology. This phase may face challenges from hidden bugs and real-
world unidentified problems.
Disposition
As time elapses, the software may decline on the performance front. It may go
completely obsolete or may need intense upgradation. Hence a pressing need to
eliminate a major portion of the system arises. This phase includes archiving data and
required software components, closing down the system, planning disposition activity
and terminating system at appropriate end-of-system time.
Prescriptive Process Models
Waterfall Model:-
1. The waterfall model is also called as
'Linear sequential model' or 'Classic life
cycle model'.
2. In this model, each phase is fully
completed before the beginning of the
next phase.
3. This model is used for the small projects.
4. In this model, feedback is taken after each
phase to ensure that the project is on the
right path.
5. Testing part starts only after the
development is complete.
Prescriptive Process Models
Waterfall Model:-
Advantages of waterfall model
1. The waterfall model is simple and easy to understand, implement, and use.
2. All the requirements are known at the beginning of the project, hence it is easy to manage.
3. It avoids overlapping of phases because each phase is completed at once.
4. This model works for small projects because the requirements are understood very well.
5. 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
1. This model is not good for complex and object oriented projects.
2. It is a poor model for long projects.
3. The problems with this model are uncovered, until the software testing.
4. The amount of risk is high.
Prescriptive Process Models
[Link]:-
• V-Model also referred to as the
Verification and Validation Model.
• In this, each phase of SDLC must
complete before the next phase starts.
• It follows a sequential design process
same as the waterfall model.
• Testing of the device is planned in parallel
with a corresponding stage of
development.
Prescriptive Process Models
[Link]:-
• Verification:
• It involves a static analysis method (review) done without executing code.
• It is the process of evaluation of the product development process to find whether specified
requirements meet.
• Validation:
• It involves dynamic analysis method (functional, non-functional), testing is done by executing code.
• Validation is the process to classify the software after the completion of the development process
to determine whether the software meets the customer expectations and requirements.
• So V-Model contains Verification phases on one side of the Validation phases on the
other side.
• Verification and Validation process is joined by coding phase in V-shape.
• Thus it is known as V-Model.
Prescriptive Process Models
[Link]:-
• Verification phases:
1. Business requirement analysis: This is the first step where product requirements understood from
the customer's side. This phase contains detailed communication to understand customer's
expectations and exact requirements.
2. System Design: In this stage system engineers analyze and interpret the business of the proposed
system by studying the user requirements document.
3. Architecture Design: The baseline in selecting the architecture is that it should understand all which
typically consists of the list of modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture diagrams, technology detail, etc. The
integration testing model is carried out in a particular phase.
4. Module Design: In the module design phase, the system breaks down into small modules. The
detailed design of the modules is specified, which is known as Low-Level Design.
5. Coding Phase: After designing, the coding phase is started. Based on the requirements, a suitable
programming language is decided. There are some guidelines and standards for coding. Before
checking in the repository, the final build is optimized for better performance, and the code goes
through many code reviews to check the performance.
Prescriptive Process Models
[Link]:-
• Validation phases:
1. Unit Testing: In the V-Model, Unit Test Plans (UTPs) are developed during the module design phase.
These UTPs are executed to eliminate errors at code level or unit level. A unit is the smallest entity
which can independently exist, e.g., a program module. Unit testing verifies that the smallest entity
can function correctly when isolated from the rest of the codes/ units.
2. Integration Testing: Integration Test Plans are developed during the Architectural Design Phase.
These tests verify that groups created and tested independently can coexist and communicate
among themselves.
3. System Testing: System Tests Plans are developed during System Design Phase. Unlike Unit and
Integration Test Plans, System Tests Plans are composed by the clients’ business team. System Test
ensures that expectations from an application developer are met.
4. Acceptance Testing: Acceptance testing is related to the business requirement analysis part. It
includes testing the software product in user atmosphere. Acceptance tests reveal the compatibility
problems with the different systems, which is available within the user atmosphere. It conjointly
discovers the non-functional problems like load and performance defects within the real user
atmosphere.
Prescriptive Process Models
When to use V-Model?
• When the requirement is well defined and not ambiguous.
• The V- shaped model should be used for small to medium-sized projects
where requirements are clearly defined and fixed.
• The V- shaped model should be chosen when sample technical resources
are available with essential technical expertise.
Prescriptive Process Models
Advantages of V-Model:
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the
waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
Disdvantages of V-Model:
1. Very rigid and least flexible.
2. Not a good for a complex project.
3. Software is developed during the implementation stage, so no early
prototypes of the software are produced.
4. If any changes happen in the midway, then the test documents along with
the required documents, has to be updated.
Prescriptive Process Models
Incremental Process Model
1. This model leads the software development process in iterations. It projects the
process of development in cyclic manner repeating every step after every cycle
of SDLC process.
2. The software is first developed on very small scale and all the steps are followed
which are taken into consideration.
3. Then, on every next iteration, more features and modules are designed, coded,
tested and added to the software.
4. Every cycle produces a software, which is complete in itself and has more
features and capabilities than that of the previous one.
5. After each iteration, the management team can do work on risk management
and prepare for the next iteration.
6. Because a cycle includes small portion of whole software process, it is easier to
manage the development process but it consumes more resources.
Prescriptive Process Models
Incremental Process Model
Prescriptive Process Models
Incremental Process 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.
Iterative Waterfall Model
Iterative Waterfall Model
• The Iterative Waterfall Model is a software development approach that
combines the sequential steps of the traditional Waterfall Model with the
flexibility of iterative design.
• It allows for improvements and changes to be made at each stage of the
development process, instead of waiting until the end of the project.
• The Iterative Waterfall Model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical Waterfall
Model.
• The feedback paths allow the phase to be reworked in which errors are
committed and these changes are reflected in the later phases.
• This iterative process leads to a refined and reliable final product.
• It enhances project management, encourages collaboration, and allows for
continuous improvement, ensuring that the software meets evolving business
needs while minimizing risks and costs.
Prescriptive Process Models
Evolutionary Process Models
• The evoluitionary model is a combination of the Iterative and Incremental models of
the software development life cycle.
• They allow to develop more complete versions of the software.
• Following are the evolutionary process models.
1. The prototyping model
2. The spiral model
Prescriptive Process Models
Evolutionary Process Models
Prototyping Model:
• 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.
Prescriptive Process Models
Evolutionary Process Models
Prototyping Model:
Phases of Prototyping Model:
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.
1. Construction of prototype
• The prototype is evaluated by the customer itself.
Prescriptive Process Models
Evolutionary Process Models
Prototyping Model:
Phases of Prototyping Model:
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.
Prescriptive Process Models
Evolutionary Process Models
Prototyping Model:
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.
Prescriptive Process Models
Evolutionary Process Models
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.
Prescriptive Process Models
Evolutionary Process Models
Spiral 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.
Prescriptive Process Models
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.
Prescriptive Process Models
Concurrent Development Model:
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.
Agile Process (Agile Software DevelopmentModel)
• Agile Software Development Model is a combination of iterative and
incremental process models with focus on process adaptability and customer
satisfaction by rapid delivery of working software product.
• Agile methods break tasks into smaller iterations, or parts that do not directly
involve long term planning.
• The project scope and requirements are laid down at the beginning of the
development process.
• Plans regarding the number of iterations, the duration and the scope of each
iteration are clearly defined in advance.
Agile Process (Agile Software Development Model)
• Each iteration is considered as a short time "frame" in the Agile
process model, which typically lasts from one to four weeks.
• The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery
time requirements.
• Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis,
design, coding, and testing before a working product is
demonstrated to the client.
Agile Process (Agile Software Development Model)
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.
Agile Process (Agile Software Development Model)
• Phases of Agile Model:
• Requirements gathering
• Design the requirements
• Construction/ iteration
• Testing/ Quality
assurance
• Deployment
• Feedback
Agile Process (Agile Software Development Model)
• Phases of Agile Model:
• 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.
• 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.
• 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.
Agile Process (Agile Software Development Model)
• Phases of Agile Model:
• Testing/ Quality assurance
In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
• Deployment
In this phase, the team issues a product for the user's work environment.
• 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 Process (Agile Software Development Model)
• Advantages:
• Is a very realistic approach to software development.
• Promotes teamwork and cross training.
• Functionality can be developed rapidly and demonstrated.
• Resource requirements are minimum.
• Suitable for fixed or changing requirements
• Delivers early partial working solutions.
• Good model for environments that change steadily.
• Minimal rules, documentation easily employed.
• Enables concurrent development and delivery within an overall planned context.
• Little or no planning required.
• Easy to manage.
• Gives flexibility to developers.
Agile Process (Agile Software Development Model)
• Disadvantages:
• Not suitable for handling complex dependencies.
• More risk of sustainability, maintainability and extensibility.
• An overall plan, an agile leader and agile PM practice is a must without which it will
not work.
• Strict delivery management dictates the scope, functionality to be delivered, and
adjustments to meet the deadlines.
• Depends heavily on customer interaction, so if customer is not clear, team can be
driven in the wrong direction.
• There is a very high individual dependency, since there is minimum documentation
generated.
• Transfer of technology to new team members may be quite challenging due to lack of
documentation.
Extreme Programming (XP)
• Extreme Programming (XP) is an agile software development
framework that aims to produce higher quality software, and
higher quality of life for the development team.
• XP is the most specific of the agile frameworks regarding
appropriate engineering practices for software development.
• When to use XP:
• Dynamically changing software requirements.
• Risks caused by fixed time projects using new technology.
• Small, co-located extended development team.
• The technology you are using allows for automated unit and functional
tests.
Extreme Programming (XP)
• Planning: The first stage, is when the customer
meets the development team and presents
the requirements in the form of user stories to
describe the desired result. The team
then estimates the stories and creates a release
plan broken down into iterations needed to
cover the required functionality part after part.
• Designing : A good design brings logic and
structure to the system and allows to avoid
unnecessary complexities and redundancies.
Extreme Programming (XP)
• Coding is the phase during which the actual
code is created by implementing specific XP
practices such as coding standards, pair
programming, continuous integration, and
collective code ownership
• Testing:It is the regular activity that involves
both unit tests (automated testing to
determine if the developed feature works
properly) and acceptance tests (customer
testing to verify that the overall system is
created according to the initial
requirements).
• Product Increment:Software Product
deployed to customer.
Extreme Programming (XP)
• Pair Programming: This practice requires two programmers to work
jointly on the same code. While the first developer focuses on writing, the
other one reviews code, suggests improvements, and fixes mistakes along
the way. Such teamwork results in high-quality software and faster
knowledge sharing but takes about 15 percent more time. In this regard,
it’s more reasonable trying pair programming for long-term projects.
• Code Refactoring: To deliver business value with well-designed
software in every short iteration, XP teams also use refactoring. The goal of
this technique is to continuously improve code. Refactoring is about
removing redundancy, eliminating unnecessary functions, increasing code
coherency, and at the same time decoupling elements. Keep your code
clean and simple, so you can easily understand and modify it.
Extreme Programming (XP)
• Why is it called extreme?
• Code reviews are effective as the
code is reviewed all the time.
• Testing is effective as there is
continuous regression and testing.
• Design is effective as everybody
needs to do refactoring daily.
• Integration testing is important as
integrate and test several times a
day.
• Short iterations are effective as the
planning game for release planning
and iteration planning.
Extreme Programming (XP) values:
1. Communication: The essence of communication is for information and ideas to be
exchanged amongst development team members so that everyone has an
understanding of the system requirements and goals. Extreme Programming (XP)
supports this by allowing open and frequent communication between members of a
team.
2. Simplicity: Keeping things as simple as possible helps reduce complexity and makes it
easier to understand and maintain the code.
3. Feedback: Feedback loops which are constant are among testing as well as customer
involvements which helps in detecting problems earlier during development.
4. Courage: Team members are encouraged to take risks, speak up about problems, and
adapt to change without fear of result.
5. Respect: Every member’s input or opinion is appreciated which promotes a collective
way of working among people who are supportive within a certain group.
Extreme Programming (XP)
• Advantages:
• Slipped schedules − Timely delivery is achieved through flexible
timetables and manageable development cycles, which allow for
adjustments while maintaining progress
• Cancelled projects − Focus on continuous customer involvement ensures
transparency with the customer and immediate resolution of any issues.
• Production and post-delivery defects: Emphasis is on − the unit tests to detect
and fix the defects early.
• Misunderstanding the business and/or domain − Making the customer a part of the
team ensures constant communication and clarifications.
• Business changes − Changes are considered to be unavoidable and are
accommodated at any point of time.
• Staff turnover − Intensive team collaboration ensures enthusiasm and good will.
Cohesion of multi-disciplines fosters the team spirit.
Scrum
• Scrum is the type of Agile framework.
• It is a framework within which people can address complex
adaptive problem while productivity and creativity of delivering
product is at highest possible values.
• Scrum uses Iterative process.
• Features of Scrum:
• Scrum is light-weighted framework
• Scrum emphasizes self-organization
• Scrum is simple to understand
• Scrum framework help the team to work together
Scrum
• Scrum Lifecycle:
Scrum
• Scrum Lifecycle:
• Sprint
• A Sprint is a time-box of one month or less.
• A new Sprint starts immediately after the completion of the previous Sprint.
• Release
• When the product is completed then it goes to the Release stage.
• Sprint Review
• If the product still have some non-achievable features then it will be checked in this stage
and then the product is passed to the Sprint Retrospective stage.
• Sprint Retrospective
• In this stage quality or status of the product is checked.
• Product Backlog
• According to the prioritize features the product is organized.
• Sprint Backlog
• Sprint Backlog is divided into two parts Product assigned features to sprint and Sprint
planning meeting.
Scrum
• Advantages:
• Scrum framework is fast moving and money efficient.
• Scrum framework works by dividing the large product into small sub-products. It’s like a
divide and conquer strategy
• In Scrum customer satisfaction is very important.
• Scrum is adaptive in nature because it have short sprint.
• As Scrum framework rely on constant feedback therefore the quality of product increases in
less amount of time.
• Disadvantages:
• Scrum framework do not allow changes into their sprint.
• Scrum framework is not fully described model. If you want to adopt it you need to fill in the
framework with your own details like Extreme Programming(XP), Kanban, DSDM.
• It can be difficult for the Scrum to plan, structure and organize a project that lacks a clear
definition.
• The daily Scrum meetings and frequent reviews require substantial resources.
Kanban Model
• Kanban is a popular framework which is used to implement agile software
development.
• Kanban is developed by ‘ Taiichi Ohno’, an industrial engineer at Toyota company. Kanban
means ‘Visual Cards’.
• It takes real time communication of capacity and complete transparency of work.
• The work items are represented in a Kanban board visually, allowing team members to see
the state of every piece of work at any time.
• Kanban Boards:
• The Kanban board is the agile project management tool that designed the
necessary visualized work, limited work-in-progress, and maximizes flow (or
efficiency).
• It uses cards, columns, and provides continuous improvement to help technology
and service teams who commit the right amount of work and get it done.
Kanban Model
• Elements of Kanban Boards:
• The Kanban board is divided
into five different
components.
• Visual signals
• Columns
• Work-in-progress limits
• Commitment point
• Delivery point.
Kanban Model
• Elements of Kanban Boards:
• Visual Signals:
• The Kanban board is a visual card (stickies, tickets, or otherwise).
• Kanban team write their projects and work items onto cards, usually per person
each card.
• For agile teams, each card could encapsulate into one user story.
• Once the board completed, this visual team helps team members and stock
members quickly to understand what the team is working.
• Columns:
• The column represents the specific activities that compose a "workflow" together.
• The card flows through a workflow until its completion.
• The workflow may be a simple as "To Do," "In Progress," "Complete," or much
more complicated.
Kanban Model
• Elements of Kanban Boards:
• Work In Progress (WIP) Limits:
• The work in progress limits are the maximum number of cards which can be in one column.
• This is at any given time. It gives the alert signal that you committed too much work.
• Commitment Point:
• Kanban teams also maintain a backlog for their board.
• This is where the customers and team member put ideas for projects that the team can
pick up.
• The team members pick up plans when they are ready.
• The committed point is a movement where the design is picked up by the team, and work
starts on the project.
• Delivery Point:
• It is the end point of a Kanban team's workflow.
• Mostly the delivery point for every team is when the product and services are handed to
the customer.
Kanban Vs. Scrum