0% found this document useful (0 votes)
15 views41 pages

Software Engineering Process Framework Guide

Uploaded by

Apu
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)
15 views41 pages

Software Engineering Process Framework Guide

Uploaded by

Apu
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

Software Engineering-process framework

Software Process Framework is an abstraction of the software development


process. It details the steps and chronological order of a process. Since it serves as a
foundation for them, it is utilized in most applications. Task sets, umbrella activities,
and process framework activities all define the characteristics of the software
development process.

Software process includes:

• Tasks – focus on a small, specific objective.

• Action – set of tasks that produce a major work product.

• Activities – group of related tasks and actions for a major objective


Process Framework Activities:

The process framework is required for representing common process activities. Five
framework activities are described in a process framework for software engineering.

1. Communication:By communication, customer requirement gathering is done.


Communication with consumers and stakeholders to determine the system’s
objectives and the software’s requirements.

2. Planning:Establish engineering work plan, describes technical risk, lists


resources requirements, work produced and defines work schedule.

3. Modeling:Architectural models and design to better understand the problem


and for work towards the best solution. The software model is prepared by:
Analysis of requirements Design

4. Construction:Creating code, testing the system, fixing bugs, and confirming


that all criteria are met. The software design is mapped into a code by:
Code generation Testing

5. Deployment:In this activity, a complete or non-complete product or software


is represented to the customers to evaluate and give feedback. On the basis of
their feedback, we modify the product for the supply of better products.
Umbrella activities:

Umbrella Activities are that take place during a software development process for
improved project management and tracking.

1. Software project tracking and control: This is an activity in which the team
can assess progress and take corrective action to maintain the schedule. Take
action to keep the project on time by comparing the project’s progress against
the plan.

2. Risk management: The risks that may affect project outcomes or quality can
be analyzed. Analyze potential risks that may have an impact on the software
product’s quality and outcome.

3. Software quality assurance: These are activities required to maintain


software quality. Perform actions to ensure the product’s quality.

4. Formal technical reviews: It is required to assess engineering work products


to uncover and remove errors before they propagate to the next activity. At
each level of the process, errors are evaluated and fixed.

5. Software configuration management: Managing of configuration process


when any change in the software occurs.

6. Work product preparation and production: The activities to create models,


documents, logs, forms, and lists are carried out.
7. Reusability management: It defines criteria for work product reuse. Reusable
work items should be backed up, and reusable software components should be
achieved.

8. Measurement: In this activity, the process can be defined and collected. Also,
project and product measures are used to assist the software team in delivering
the required software.
Software Engineering-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)
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.

• Limited project management capabilities, such as no systematic tracking of


schedules, budgets, or progress.

• Limited communication and coordination among team members and


stakeholders.

• No formal training or orientation for new team members.

• Little or no use of software development tools or automation.

• Highly dependent on individual skills and knowledge rather than standardized


processes.

• High risk of project failure or delays due to lack of process control and
stability.
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.
Advance trends in Software Engineering
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.

DevSecOps
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.

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.

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.

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.
Prescriptive Process Models:

The name 'prescriptive' is given because the model prescribes a set of activities,
actions, tasks, quality assurance and change the mechanism for every project.

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.
When to use SDLC Waterfall Model?

Some Circumstances where the use of the Waterfall model is most suited are:

• When the requirements are constant and not changed regularly.


• A project is short
• The situation is calm
• Where the tools and technology used is consistent and is not changing
• When resources are well prepared and are available to use.

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.
Incremental Process model

Incremental Model is a process of software development where requirements divided


into multiple standalone modules of the software development cycle. In this model,
each module goes through the requirements, design, implementation and testing
phases. Every subsequent release of the module adds function to the previous release.
The process continues until the complete system achieved.

The various phases of incremental model are as follows:

1. Requirement analysis: In the first phase of the incremental model, the product
analysis expertise identifies the requirements. And the system functional
requirements are understood by the requirement analysis team. To develop the
software under the incremental model, this phase performs a crucial role.

2. Design & Development: In this phase of the Incremental model of SDLC, the
design of the system functionality and the development method are finished with
success. When software develops new practicality, the incremental model uses style
and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of
each existing function as well as additional functionality. In the testing phase, the
various methods are used to test the behavior of each task.

4. Implementation: Implementation phase enables the coding phase of the


development system. It involves the final coding that design in the designing and
development phase and tests the functionality in the testing phase. After completion
of this phase, the number of the product working is enhanced and upgraded up to the
final system product

When we use the Incremental Model?

• When the requirements are superior.


• A project has a lengthy development schedule.
• When Software team are not very well skilled or trained.
• When the customer demands a quick release of the product.
• You can develop prioritized requirements first.

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.
Evolutionary Process Models:

RAD (Rapid Application Development) Model

RAD is a linear sequential software development process model that emphasizes a


concise development cycle using an element based construction approach. If the
requirements are well understood and described, and the project scope is a constraint,
the RAD process enables a development team to create a fully functional system
within a concise time period.

RAD (Rapid Application Development) is a concept that products can be developed


faster and of higher quality through:

• Gathering requirements using workshops or focus groups


• Prototyping and early, reiterative user testing of designs
• The re-use of software components
• A rigidly paced schedule that refers design improvements to the next product
version
• Less formality in reviews and other team communication
The various phases of RAD are as follows:

[Link] Modelling: The information flow among business functions is defined by


answering questions like what data drives the business process, what data is
generated, who generates it, where does the information go, who process it and so on.

2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes
(character of each entity) are identified, and the relation between these data objects
(entities) is defined.

3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a
data object.

4. Application Generation: Automated tools are used to facilitate construction of the


software; even they use the 4th GL techniques.

5. Testing & Turnover: Many of the programming components have already been
tested since RAD emphasis reuse. This reduces the overall testing time. But the new
part must be tested, and all interfaces must be fully exercised.

When to use RAD Model?

• When the system should need to create the project that modularizes in a short
span time (2-3 months).
• When the requirements are well-known.
• When the technical risk is limited.
• When there's a necessity to make a system, which modularized in 2-3 months
of period.
• It should be used only if the budget allows the use of automatic code
generating tools.
Advantage of RAD Model

• This model is flexible for change.


• In this model, changes are adoptable.
• Each phase in RAD brings highest priority functionality to the customer.
• It reduced development time.
• It increases the reusability of features.

Disadvantage of RAD Model

• It required highly skilled designers.


• All application is not compatible with RAD.
• For smaller projects, we cannot use the RAD model.
• On the high technical risk, it's not suitable.
• Required user involvement.
Spiral Model

The spiral model, initially proposed by Boehm, is an evolutionary software process


model that couples the iterative feature of prototyping with the controlled and
systematic aspects of the linear sequential model. It implements the potential for
rapid development of new versions of the software. Using the spiral model, the
software is developed in a series of incremental releases. During the early iterations,
the additional release may be a paper model or prototype. During later iterations,
more and more complete versions of the engineered system are produced.
Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of purpose
for that cycle, the various alternatives that are possible for achieving the targets, and
the constraints that exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate these
various alternatives based on the goals and constraints. The focus of evaluation in this
stage is located on the risk perception for the project.

Development and validation: The next phase is to develop strategies that resolve
uncertainties and risks. This process may include activities such as benchmarking,
simulation, and prototyping.

Planning: Finally, the next step is planned. The project is reviewed, and a choice
made whether to continue with a further period of the spiral. If it is determined to
keep, plans are drawn up for the next step of the project.

The development phase depends on the remaining risks. For example, if performance
or user-interface risks are treated more essential than the program development risks,
the next phase may be an evolutionary development that includes developing a more
detailed prototype for solving the risks.

The risk-driven feature of the spiral model allows it to accommodate any mixture of a
specification-oriented, prototype-oriented, simulation-oriented, or another type of
approach. An essential element of the model is that each period of the spiral is
completed by a review that includes all the products developed during that cycle,
including plans for the next cycle. The spiral model works for development as well as
enhancement projects.
When to use Spiral Model?

• When deliverance is required to be frequent.


• When the project is large
• When requirements are unclear and complex
• When changes may require at any time
• Large and high budget projects

Advantages

• High amount of risk analysis


• Useful for large and mission-critical projects.

Disadvantages

• Can be a costly model to use.


• Risk analysis needed highly particular expertise
• Doesn't work well for smaller projects.
Agile process model

The meaning of Agile is swift or versatile."Agile process model" refers to a software


development approach based on iterative development. Agile methods break tasks
into smaller iterations, or parts do not directly involve long term planning. The
project scope and requirements are laid down at the beginning of the development
process. Plans regarding the number of iterations, the duration and the scope of each
iteration are clearly defined in advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller
parts helps to minimize the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software
development life cycle including planning, requirements analysis, design, coding, and
testing before a working product is demonstrated to the client.
Phases of Agile Model:

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.
Extreme Programming (XP)

Extreme Programming (XP) is one of the numerous Agile frameworks applied by IT


companies. But its key feature — emphasis on technical aspects of software
development — distinguishes XP from the other [Link] is a set of
engineering practices. Developers have to go beyond their capabilities while
performing these practices. That’s where the “extreme” in the framework’s title
comes from.

The process and roles of extreme programming


The XP framework normally involves 5 phases or stages of the development process
that iterate continuously:
1. 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. If
one or more of the stories can’t be estimated, so-called spikes can be
introduced which means that further research is needed.

2. Designing is actually a part of the planning process, but can be set apart to
emphasize its importance. It’s related to one of the main XP values that we’ll
discuss below — simplicity. A good design brings logic and structure to the
system and allows to avoid unnecessary complexities and redundancies.

3. 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 (the entire list is described below).

4. Testing is the core of extreme programming. 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).

5. Listening is all about constant communication and feedback. The customers


and project managers are involved to describe the business logic and value that
is expected.
Roles Of XP

1. Customers are expected to be heavily engaged in the development process by


creating user stories, providing continuous feedback, and making all the
necessary business decisions related to the project.
2. Programmers or developers are the team members that actually create the
product. They are responsible for implementing user stories and conducting
user tests (sometimes a separate Tester role is set apart). Since XP is usually
associated with cross-functional teams, the skill set of such members can be
different.
3. Trackers or managers link customers and developers. It’s not a required role
and can be performed by one of the developers. These people organize the
meetups, regulate discussions, and keep track of important progress KPIs.
4. Coaches can be included in the teams as mentors to help with understanding
the XP practices. It’s usually an outside assistant or external consultant who is
not involved in the development process, but has used XP before and so can
help avoid mistakes.

Values of extreme programming


1. Communication:Everyone on a team works jointly at every stage of the
project.

2. Simplicity: Developers strive to write simple code bringing more value to a


product, as it saves time and effort.

3. Feedback:Team members deliver software frequently, get feedback about it,


and improve a product according to the new requirements.

4. Respect:Every person assigned to a project contributes to a common goal.

5. Courage:Programmers objectively evaluate their own results without making


excuses and are always ready to respond to changes.
Principles of extreme programming

1. Rapid feedback. Team members understand the given feedback and react to it
right away.
2. Assumed simplicity. Developers need to focus on the job that is important at
the moment and follow YAGNI (You Ain’t Gonna Need It) and DRY (Don’t
Repeat Yourself) principles.
3. Incremental changes. Small changes made to a product step by step work
better than big ones made at once.
4. Embracing change. If a client thinks a product needs to be changed,
programmers should support this decision and plan how to implement new
requirements.
5. Quality work. A team that works well, makes a valuable product and feels
proud of it.
Extreme programming practices
The practices of XP are a set of specific rules and methods that distinguishes it from
other methodologies. When used in conjunction, they reinforce each other, help
mitigate the risks of the development process, and lead to the expected high-quality
result. XP suggests using 12 practices while developing software which can be
clustered into four groups.
Test-Driven Development
Is it possible to write a clear code quickly? The answer is yes, according to XP
practitioners. The quality of software derives from short development cycles that, in
turn, allow for receiving frequent feedback. And valuable feedback comes from good
testing. XP teams practice test-driven development technique (TDD) that entails
writing an automated unit test before the code itself. According to this approach,
every piece of code must pass the test to be released. So, software engineers thereby
focus on writing code that can accomplish the needed function. That’s the way TDD
allows programmers to use immediate feedback to produce reliable software. You can
learn more about improving software testing in our dedicated article.

The Planning Game


This is a meeting that occurs at the beginning of an iteration cycle. The development
team and the customer get together to discuss and approve a product’s features. At the
end of the planning game, developers plan for the upcoming iteration and release,
assigning tasks for each of them.

On-site Customer
As we already mentioned, according to XP, the end customer should fully participate
in development. The customer should be present all the time to answer team
questions, set priorities, and resolve disputes if necessary.

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% more. 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 when required
would be the advice of any XP team member.
Continuous Integration
Developers always keep the system fully integrated. XP teams take iterative
development to another level because they commit code multiple times a day, which
is also called continuous delivery. XP practitioners understand the importance of
communication. Programmers discuss which parts of the code can be re-used or
shared. This way, they know exactly what functionality they need to develop. The
policy of shared code helps eliminate integration problems. In addition, automated
testing allows developers to detect and fix errors before deployment.

Small Releases
This practice suggests releasing the MVP quickly and further developing the product
by making small and incremental updates. Small releases allow developers to
frequently receive feedback, detect bugs early, and monitor how the product works in
production. One of the methods of doing so is the continuous integration practice (CI)
we mentioned before.

Simple Design
The best design for software is the simplest one that works. If any complexity is
found, it should be removed. The right design should pass all tests, have no duplicate
code, and contain the fewest possible methods and classes. It should also clearly
reflect the programmer’s intent.

Coding Standards
A team must have common sets of coding practices, using the same formats and
styles for code writing. Application of standards allows all team members to read,
share, and refactor code with ease, track who worked on certain pieces of code, as
well as make the learning faster for other programmers. Code written according to the
same rules encourages collective ownership.

Collective Code Ownership


This practice declares a whole team’s responsibility for the design of a system. Each
team member can review and update code. Developers that have access to code won’t
get into a situation in which they don’t know the right place to add a new feature. The
practice helps avoid code duplication. The implementation of collective code
ownership encourages the team to cooperate more and feel free to bring new ideas.
System Metaphor
System metaphor stands for a simple design that has a set of certain qualities. First, a
design and its structure must be understandable to new people. They should be able to
start working on it without spending too much time examining specifications.
Second, the naming of classes and methods should be coherent. Developers should
aim at naming an object as if it already existed, which makes the overall system
design understandable.

40-Hour Week
XP projects require developers to work fast, be efficient, and sustain the product’s
quality. To adhere to these requirements, they should feel well and rested. Keeping
the work-life balance prevents professionals from burnout. In XP, the optimal number
of work hours must not exceed 45 hours a week. One overtime a week is possible
only if there will be none the week after.

Extreme programming advantages


• Continuous testing and refactoring practices help create stable well-performing
systems with minimal debugging;
• Simplicity value implies creating a clear, concise code that is easy to read and
change in the future if needed;
• The minimalistic iterative approach to development ensures that the workable
results can be delivered very soon and only necessary features are built;
• Documentation is reduced as bulky requirements documents are substituted by
user stories;
• No or very little overtime is practiced;

Extreme programming disadvantages


• In many instances, the customer has no clear picture of the end result, which
makes it almost unrealistic to accurately estimate scope, cost, and time;
• Regular meetings with customers often take a great deal of time that could
instead be spent on actual code writing;
• Documentation can be scarce and lack clear requirements and specifications,
leading to project scope creep;
• The rapid transition from traditional methods of software development to
extreme programming demands significant cultural and structural changes;
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.
Silent features of Scrum are:
• Scrum is light-weighted framework
• Scrum emphasizes self-organization
• Scrum is simple to understand
• Scrum framework help the team to work together

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, it goes to the Release stage.
• Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then 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.
Advantage of using Scrum framework:
• 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
Disadvantage of using Scrum framework:
• Scrum framework do not allow changes into their sprint.
• Scrum framework is not fully described model. If you wanna 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 very popular framework for development in the agile software
development methodology. It provides a transparent way of visualizing the tasks and
work capacity of a team. It mainly uses physical and digital boards to allow the team
members to visualize the current state of the project they are working on.
Kanban originated in Toyota in the 1940s. Kanban’s meaning in Japanese is
“billboards.” The Kanban board has columns and story cards. The columns are
nothing, but workflow states and cards are nothing but a demonstration of the actual
task a team member is performing.
When to use Kanban?
• Kanban can be used in any domain, and it can be used very effectively in
software development. Kanban project management helps in improving the
efficiency of the team.
• It is a pull-based system. Tasks are being pulled as soon as an individual is free.
• Kanban should be used when you want to release your work at any time. It
requires git branching, but it is doable.
• Kanban should be used when you want to change the priorities on the fly. For
that, all you need to do is to put this story on the top of the to-do queue.
• It should be used when you want to visualize your work, and you want to see
the progress of your tasks visually.
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.
Elements of a kanban board
A person called David Anderson divides the kanban board into five different
components. These are Visual signals, columns, work-in-progress limits, a
commitment point, and a delivery point.
1. 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.
2. 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.
3. 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.
4. 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.
5. 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.
Advantages kanban:
1. Kanban is a very simple and easy to understand system that makes it practical
for the management of a company to apply this system effectively.
2. The main advantage of applying the kanban system is a direct reduction in the
costs and wastage of the company. Kanban system improves the flow and
management of inventory by directly assisting the company to pursue the
company’s existing systems i.e. just in time (JIT) and make to order etc. which
reduces carrying or holding costs and makes sure smoother running of
inventories.
3. Kanban system advocates continuous and sustainable improvements in the
production systems of the company. Kanban not only consist of manual
guidelines or cards but also visualizations of the process outputs which makes
the review of work easier. This could also highlight other potential problematic
areas where additional attention is needed.
4. Kanban system is a very responsive system and does not promote any lags or
delays. As the tasks are continuously shifted between the columns of the
kanban cards, it automatically highlights the areas where any limiting factors
are raised that could hold up the overall output which can be responded to as
soon as possible by shifting and switching the resources from the other tasks.
Disadvantages of kanban:
1. Kanban cannot be used as an independent tool. It is not a methodology that
could be applied solely rather it can be merged with other processes and
systems of a company like JIT, make to order and scrum etc. making these
systems more visible.
2. As the tasks are continuously shifted between the columns of kanban board, the
prediction of specific timelines for completion of tasks or activities becomes
difficult. This is because kanban acts only as a signaling port in a pull
production system.
3. Kanban is not suitable for the environments that are dynamic in nature.
Because a kanban system assumes the plans that are stable and consistent to a
certain extent, it may become ineffective in industries where the activities are
not static.
4. Kanban will become very difficult to apply if too much activities or tasks are
interrelated in a system. This is because such systems enhance the possibility
of transfers of goods and expertise amongst different tasks too often and
increases difficulty to keep the pace of all these activities.

You might also like