Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
4 views20 pages

Chapter 1 Notes

The document provides an overview of software engineering, detailing the nature, characteristics, and categories of software, including system, application, embedded, and AI software. It explains the software engineering process, the Capability Maturity Model (CMM) for process improvement, and various software development models such as the Waterfall and V-Model. The document emphasizes the importance of structured methodologies in software development to enhance quality, manageability, and adaptability.

Uploaded by

twitchskin0510
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)
4 views20 pages

Chapter 1 Notes

The document provides an overview of software engineering, detailing the nature, characteristics, and categories of software, including system, application, embedded, and AI software. It explains the software engineering process, the Capability Maturity Model (CMM) for process improvement, and various software development models such as the Waterfall and V-Model. The document emphasizes the importance of structured methodologies in software development to enhance quality, manageability, and adaptability.

Uploaded by

twitchskin0510
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/ 20

Introduction to Software Engineering

Nature of Software
The software is instruction or computer program that when executed provide desired
features, function, and performance. A data structure that enables the program to
adequately manipulate information and document that describe the operation and use of the
program.

Characteristic of software:
There is some characteristic of software which is given below:

Functionality - purpose of the software


Reliability - whether the software can be used in a given environment without failure for a set
amount of time
Usability - user experience of using the software
Efficiency - how much resources is a software consuming
Maintainability - whether the software can be enhanced
Portability - whether the software can be used in a different environment for eg can it be
installed on a computer with different OS and used effectively.

Changing Nature of Software:


Nowadays, seven broad categories of computer software present continuing challenges for
software engineers which is given below:

System Software:
System software is a collection of programs which are written to service other programs.
Some system software processes complex but determinate, information structures. Other
system application process largely indeterminate data. Sometimes when, the system
software area is characterized by the heavy interaction with computer hardware that requires
scheduling, resource sharing, and sophisticated process management. Example OS like
windows, Ubuntu, Android etc

Application Software:
Application software is defined as programs that solve a specific business need. Application
in this area process business or technical data in a way that facilitates business operation or
management technical decision making. In addition to convention data processing
application, application software is used to control business function in real time. Microsoft
office, excel, libre office etc

Engineering and Scientific Software:


This software is used to facilitate the engineering function and task. however modern
application within the engineering and scientific area are moving away from the conventional
numerical algorithms. Computer-aided design, system simulation, and other interactive
applications have begun to take a real-time and even system software characteristic.
MATLAB, AutoCAD, Pspice etc
Embedded Software:
Embedded software resides within the system or product and is used to implement and
control feature and function for the end-user and for the system itself. Embedded software
can perform the limited and esoteric function or provided significant function and control
capability. For eg software written to control home automation system.

Product-line Software:
Designed to provide a specific capability for use by many different customers, product line
software can focus on the limited and esoteric marketplace or address the mass consumer
market.

Web Application:
It is a client-server computer program which the client runs on the web browser. In their
simplest form, Web apps can be little more than a set of linked hypertext files that present
information using text and limited graphics. However, as e-commerce and B2B application
grow in importance. Web apps are evolving into a sophisticate computing environment that
not only provides a standalone feature, computing function, and content to the end user.
Amazon, Gmail etc.

Artificial Intelligence Software:


Artificial intelligence software makes use of a nonnumerical algorithm to solve a complex
problem that is not amenable to computation or straightforward analysis. Application within
this area includes robotics, expert system, pattern recognition, artificial neural network,
theorem proving and game playing. Alexa, Google assistant etc. Chatbots

https://www.geeksforgeeks.org/software-engineering-changing-nature-of-software/

Software Engineering

The term software engineering is the product of two words, software, and engineering.

The software is a collection of integrated programs.

Software subsists 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.
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.

Software Engineering is required due to the following reasons:

To manage Large software


For more Scalability
Cost Management
To manage the dynamic nature of software
For better quality Management

https://www.javatpoint.com/software-engineering-tutorial

Software Process

The term software specifies to the set of computer programs, procedures and associated
documents (Flowcharts, manuals, etc.) that describe the program and how they are to be
used.

A software process is the set of activities and associated outcome that produce a software
product. Software engineers mostly carry out these activities. These are four key process
activities, which are common to all software processes. These activities are:

Software specifications: The functionality of the software and constraints on its operation
must be defined.
Software development: The software to meet the requirement must be produced.
Software validation: The software must be validated to ensure that it does what the
customer wants.
Software evolution: The software must evolve to meet changing client needs.

https://www.javatpoint.com/software-processes

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

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.

The 5 levels of CMM are as follows:

Level-1: Initial –

1. No KPA’s defined.

2. Processes followed are adhoc and immature and are not well defined.
3. Unstable environment for software development.
4. 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 successful completion of
a 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 development.
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.

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.

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.

https://www.geeksforgeeks.org/software-engineering-capability-maturity-model-cmm/

Generic Process Model

A software process is a collection of various activities.

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.

https://www.tutorialride.com/software-engineering/generic-process-model.htm
Prescriptive Process Models:

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.

There are various types of prescriptive process models.

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.

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.

https://www.tutorialride.com/software-engineering/prescriptive-process-models.htm

V-model

The V-model is an SDLC model where execution of processes happens in a sequential


manner in a V-shape. It is also known as Verification and Validation model.

The V-Model is an extension of the waterfall model and is based on the 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 the next phase starts only after completion of the previous
phase.

V-Model - Design

Under the 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. The Coding Phase joins the two sides of the V-Model.

The following illustration depicts the different phases in a V-Model of the SDLC.

SDLC V-Model

V-Model - Verification Phases


There are several Verification phases in the V-Model, each of these are explained in detail
below.

Business Requirement Analysis

This is the first phase in the development cycle where the product requirements are
understood from the customer’s perspective. This phase involves detailed communication
with the customer to understand his expectations and exact requirement. This is a very
important activity and needs 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 is time to design the complete
system. The system design will have the understanding and detailing the complete hardware
and communication setup for the product under development. The system test plan is
developed based on the system design. Doing this at an earlier stage leaves more time for
the 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 technical and financial feasibility the
final decision is taken. The system design is broken down further into modules taking up
different functionality. This is also referred to as High Level Design (HLD).

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. The unit tests are an
essential part of any development process and helps eliminate the maximum faults and
errors at a very early stage. These 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

The different Validation Phases in a V-Model are explained in detail below.

Unit Testing

Unit tests designed in the module design phase are executed on the code during this
validation phase. Unit testing is the testing at code level and helps eliminate bugs at an early
stage, though all defects cannot be uncovered by unit testing.

Integration Testing

Integration testing is associated with the architectural design phase. Integration tests are
performed to test the coexistence and communication of the internal modules within the
system.

System Testing
System testing is directly associated with the system design phase. System tests check the
entire system functionality and the communication of the system under development with
external systems. Most of the software and hardware compatibility issues can be uncovered
during this system test execution.

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 the same as the 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 a disciplined domain.

The following pointers are some of the most suitable scenarios to use the V-Model
application.

Requirements are well defined, clearly documented and fixed.

● Product definition is stable.

● Technology is not dynamic and is well understood by the project team.

● There are no ambiguous or undefined requirements.

● The project is short.

V-Model - Pros and Cons

The advantage of the V-Model method is that it is 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.

The advantages of the V-Model method are as follows −

● This is a highly-disciplined model and Phases are completed one at a time.

● Works well for smaller projects where requirements are very well understood.

● Simple and easy to understand and use.


● Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.

The disadvantages of the V-Model method are as follows −

● High risk and uncertainty.

● Not a good model for complex and object-oriented projects.

● Poor model for long and ongoing projects.

● Not suitable for the projects where requirements are at a moderate to high risk of
changing.

● Once an application is in the testing stage, it is difficult to go back and change a


functionality.

● No working software is produced until late during the life cycle.

https://www.tutorialspoint.com/sdlc/sdlc_v_model.htm

Incremental Process Models

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

https://www.tutorialride.com/software-engineering/prescriptive-process-models.htm

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:

● 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.
● Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.

Advantages:

● In evolutionary model, a user gets a chance to experiment partially developed


system.
● It reduces the error because the core modules get tested thoroughly.

Disadvantages:

Sometimes it is hard to divide the problem into several versions that would be acceptable to
the customer which can be incrementally implemented and delivered.

https://www.geeksforgeeks.org/software-engineering-evolutionary-model/

Concurrent Models

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.

Main Point – Maintain information about each phase at the activity level.

https://notesformsc.org/concurrent-process-model-the-big-picture/

Agile process

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.

Following are the phases in the Agile model are as follows:

Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback

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

https://www.javatpoint.com/software-engineering-agile-model

Agility Principles:

The Agile Alliance defines twelve lightness principles for those that need to attain agility:

● Our highest priority is to satisfy the client through early and continuous delivery of
valuable computer software.
● Welcome dynamical necessities, even late in development. Agile processes harness
modification for the customer’s competitive advantage.
● Deliver operating computer software often, from a pair of weeks to a couple of
months, with a preference to the shorter timescale.
● Business individuals and developers should work along daily throughout the project.
● The build comes around actuated people. offer them the setting and support they
have, and trust them to urge the task done.
● the foremost economical and effective methodology of conveyancing info to and
among a development team is face-to-face speech.
● working computer software is the primary live of progress.
● Agile processes promote property development. The sponsors, developers, and
users got to be able to maintain a relentless pace indefinitely.
● Continuous attention to technical excellence and smart style enhances nimbleness.
● Simplicity—the art of maximizing the number of work not done—is essential.
● the most effective architectures, necessities, and styles emerge from self– organizing
groups.
● At regular intervals, the team reflects on a way to become simpler, then tunes and
adjusts its behavior consequently.

https://www.geeksforgeeks.org/agile-software-process-and-its-principles/

Extreme Programming (XP)

Extreme programming turns the traditional software development process sideways. Rather
than planning, analyzing, and designing in a linear fashion, XP programmers do all such
activities a little at a time throughout the development phase. The approach bears
resemblance to a jigsaw puzzle with the development of many small pieces or iterations that
make no sense individually, but making for a complete package when combined. The
biggest advantage of this approach is the resilience it provides, allowing for easy
incorporation of changes.

The Extreme Programming software development process starts with planning, and all
iterations consist of four basic phases in its life cycle: designing, coding, testing, and
listening. The overriding values that drives the XP life cycle are continual communication
with the customer and amongst the team, simplicity by harping on the minimalist solution,
frequent feedback through unit and acceptance testing, and the courage to take on problems
proactively and integrate testing and changes in the development phase.

Planning

The first phase of Extreme Programming life cycle is planning, where customers or users
meet with the development team to create ‘user stories’ or requirements. The development
team converts user stories into iterations that cover a small part of the functionality or
features required. A combination of iterations provides the customer with the final fully
functional product.

The programming team prepares the plan, time, and costs of carrying out the iterations, and
individual developers sign up for iterations.

One planning approach is the critical path method, grouping iterations essential for project
progress in a linear fashion, and arranging for completion of other iterations parallel to the
critical path.
Designing

An iteration of XP programming starts with designing.

The guiding principles of this stage are:

● Thrust on simplicity by expressing a thing only once and not adding functionality in
anticipation.
● Using systems metaphor or standards on names, class names and methods, and
agreeing on uniform styles and formats to ensure compatibility among the work of
different team members
● Using Software Class Responsibilities and Collaboration (CRC) Cards that allow for a
departure from the traditional procedural mindset and make possible object oriented
technology. Such cards allow all members of the project team to contribute ideas,
and collate the best ideas into the design

Coding

Coding constitutes the most important phase in the Extreme Programming life cycle. XP
programming gives priority to the actual coding over all other tasks such as documentation
to ensure that the customer receives something substantial in value at the end of the day.

Standards related to coding include:


● Developing the code based on the agreed metaphors and standards, and adopting a
policy of collective code ownership.
● Pair programming or developing code by two programmers working together on a
single machine, aimed at producing higher quality code at the same or less cost.
● Strict adherence to 40-hour workweeks with no overtime. This ensures the
developers work in the peak of their mental and physical faculties.
● Frequent integration of the code to the dedicated repository, with only one pair
integrating at a time to prevent conflicts, and optimization at the end.

Testing

Extreme program integrates testing with the development phase rather than at the end of the
development phase. All codes have unit tests to eliminate bugs, and the code passes all
such unit tests before release.

Another key test is customer acceptance tests, based on the customer specifications.
Acceptance test run at the completion of the coding, and the developers provide the
customer with the results of the acceptance tests along with demonstrations.

Listening
The basis of extreme programming is a continuous mechanism of customer involvement
through feedback during the development phase. Apart from the customer, the developer
also receives feedback from the project manager.

The basis of feedback is the customer acceptance tests. Each feedback of the customer that
specifies revised requirement becomes the basis of a new design, and the process of
design-coding-tests-listening repeats itself. If the customer remains satisfied with the test
results the iteration ends there, and the design for the new iteration starts, which again
follows the design-coding-testing-listening cycle.

https://www.brighthubpm.com/methods-strategies/88996-the-extreme-programming-life-cycl
e/

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

Lifecycle of Scrum:

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.

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.

https://www.geeksforgeeks.org/scrum-software-development/

Kanban model

Kanban is Agile Software Development with Kanban approach. In Agile Kanban, the Kanban
board is used to visualize the workflow. The Kanban board is normally put up on a wall in the
project room. The status and progress of the story development tasks is tracked visually on
the Kanban board with flowing Kanban cards.

Kanban Board

Kanban board is used to depict the flow of tasks across the value stream.

The Kanban board −

● Provides easy access to everyone involved in the project.

● Facilitates communication as and when necessary.


● Progress of the tasks are visually displayed.

● Bottlenecks are visible as soon as they occur.

Advantages of Kanban board

The major advantages of using a Kanban board are −

Empowerment of Team −

This means −

● Team is allowed to take decisions as and when required.

● Team collaboratively resolves the bottlenecks.

● Team has access to the relevant information.

● Team continually communicates with customer.

Continuous Delivery −

This means −

● Focus on work completion.

● Limited requirements at any point of time.

● Focus on delivering value to the customer.

● Emphasis on whole project.

The tasks and stories are represented by Kanban cards. The current status of each task is
known by displaying the cards in separate columns on the board. The columns are labeled
as To Do, Doing, and Done. Each task moves from To Do to Doing and then to Done.

Kanban Board is updated on a daily basis as the team progresses through the development.

https://www.tutorialspoint.com/kanban/kanban_agile.htm

You might also like