0% found this document useful (0 votes)
35 views

Notes SE Module 3

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views

Notes SE Module 3

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

||JAI SRI GURUDEV||

Sri AdichunchanagiriShikshana Trust ®

SJB INSTITUTE OF TECHNOLOGY


( A Constituent Institution of BGS & SJBIT Group of
Institution & Hospitals)

Department of Computer Science & Engineering

Study Material- Notes: Module-3

Course Name: SE &PM


Course Code: BCS-501
Semester : 5th A & C

By

Faculty Name: Dr. Shantha Kumar H C


Asso. Professor
Department of CSE

Aca. Year: Odd Semester / 2024-2025


TOPIC: AGILE DEVELOPMENT

Agility: Is a key characteristic feature in software development being dynamic,


it is content specific and growth oriented.

Agility in software engineering defines the ability to respond quickly to changing


needs by accepting the change , adapt , and grow dynamically.

Just if we see the meaning of Agile – it seems to be “clever / brilliant / power full
/ move quickly” in connection to software engineering, combines a philosophy
and a set of development guidelines.

The philosophy encourages customer satisfaction and early incremental delivery


of software.

Agility can be applied to any software process , to accomplish it the process


should allow skilled project team to adapt tasks and stream line them, conduct
planning in a way that understands the fluidity of agile development approach.
Basically it follows iterative and incremental process. Where product is released
in smaller version, then collects feed back based on feed Back enhancement
happens finally the product is re-released.

Agile Process: Recent days all development process looks for agile model not
only in technical field even in other fields like, health care field, aviation filed
and marketing field and so on, because of the following few advantages.

 Little planning
 Frequent delivery
 Face to face communication
 Changes (Technology/People)
 Time (Rapid project development)
 Updated versions can be released …

Agile process model is the most commonly used model in today's digital era.
Most utilized Shopping application like Amazon , Flip kart & social application
like Instagram , Face book uses agile model only.
Traditional versus Agile process model:

 For example traditional process model like waterfall model all process
activities are completed one after other and final product is deployed at
customer end for feedback.
 But in Agile process model required work will be divided into number of
modules, where each module is developed in an iterative and incremental
manner. The model is deployed at customer end at each iteration for feed
back, if any changes that are included in next iteration along with new
functionalities.

Following is a simple example of Agile process with respect to Instagram


application with sequence of functionalities.

1. Follow-Un follow
2. Edit
3. Search

4. Messaging
5. Post photo
6. Upload story

7. Make reels
8. Go live

Here are 8 different functionalities that should taken up for the development of
simple Instagram application. As per basic guidelines of agile principle all 8
applications need not be considered at one stretch, instead these can be taken in
iterative manner considering 3 at a time and these are released to customer end
for feedback.
If any changes raised by the customer those changes are included in the next
iteration along with addition of new functionalities and re released to the customer
end and process continues till the completion of all functionalities by satisfying
the customer needs.
Simple Block Diagram Showing Agile Process.

Agile process models are generally used in following category of projects:

 When project size is large


 When frequent changes are required
 When highly qualified and experienced team is available
 When customer is ready to have meeting all the time
 In flexible schedule and budget
 When projects need to be delivered quickly

Agility and The Cost of Change: Traditional or conventional software


development process the cost of change increases nonlinearly as a project
progress. It is relatively easy to accommodate change when software team is
gathered requirements early in the development process.
The change includes a modification to the architectural design of the software,
the design and construction of new components, modification and new test and
so on.
But ensuring the change with minimal cost and the time is very much important
and is achieved with agile development method not adversely affecting the
out outcome of the project.
Agility argue that a well-designed agile process flattens the cost of change curve,
allowing a software team to accommodate changes late in a software project
without much change in cost and time.

Because of its incremental delivery, changes can be better controlled with in


each level. Following graph represents development cost verses development
schedule progress, Black line shows cost of change using conventional process.
Red line shows cost of change using agile process which is liner in nature.

Agile Principles: There are 12 agility principles for those who want to
achieve agility:

1. Highest priority is to satisfy the customer through early and continuous


delivery.
Customer satisfaction is the top priority, and we achieve that by delivering
valuable results quickly and consistently.

2. Welcome changing requirements, even late in development.


Changes in the environment at any point during the process to give the
customer an edge over the competition.
3. Deliver working software frequently, from a couple of weeks to a couple
of months.
Products or services are delivered more frequently.

4. Stake holders and developers must work together daily throughout the
project.
Should work every day, collaborating and communicating with each other
routinely becoming part of team.
5. Build projects around motivated individuals.
All stakeholders and team members are encouraged to achieve the best. Teams
are given the tools, support, and trust to accomplish project goals.

6. Emphasis on face-to-face conversation, within development team.


Face –to- face meetings are conducted to ensure efficient , effective and
best project.

7. Working software's are the primary measures of progress.


The ultimate measure of success is a completed and functional product
8. Agile processes promote sustainable development.
Promoting Sponsors, developers and users to be able to maintain a constant
Pace.

9. Continuous attention to technical excellence and good design enhances


agility.
Consistently prioritizing technical excellence and proper design results
in improvement.

10. Simplicity—the art of maximizing the amount of work done is essential.


Keeping things simple is crucial with respect to what is to be done.

11. The best architectures, requirements, and designs emerge from self–
organizing teams.
Self organizing team with coordination create the best designs and meet
requirements successfully.

12. The team reflects on how to become more effective at regular intervals.
Efficiency increases at regular intervals adjusting with small actions.
Agile Methodologies: Since Agile models are the best process model for most
of development activity, similar to traditional process, here also there is no single
or ideal methodology.
Common types of agile SDLC methodologies/frame work are:

 Extreme Programming (XP)


 Scrum
 Crystal
 FDD (Future Driven Development)
 DSDM (Dynamic System Development Method)

Extreme Programming (XP): Is one of the most widely used methodology


/frame work in Agile software development. It is used to improve software quality
and responsiveness to customers dynamic requirements.
Recently a variant of XP, called Industrial XP (IXP) has been proposed. IXP
Refines XP and targets the Agile process specifically for use with in large
organizations.
Extreme Programming (XP) frame work focuses on delivering high-quality
software through frequent and continuous feedback collaboration, and adaptation.
XP emphasizes a close working relationship between the development team, the
customer, and stakeholders, by focusing traditional on rapid, iterative-incremental
development and deployment. XP project starts with user quires which are short
descriptions of what scenarios the customers and users would like the system to
support. Extreme Programming (XP) methodology / frame work mainly includes
following activities or stages.

 Planning
 Design
 Coding
 Test
 Release
 Feed back

(Very much similar to basic SDLC frame work activities)


Planning: Is the first stage of Extreme Programming. During this phase, clients
define their needs in short and clear descriptions known as user stories/queries.
The team calculates the effort required for each query and schedules properly
releases according to priority .
Planning focuses on breaking down the project into smaller, more manageable
tasks with the ultimate goal of having a defined vision .
Design: Without a proper design, a system implementation becomes too complex,
and very difficult to understand the solution, thus making maintenance expensive.
The team creates only the essential design needed for current user query, using a
common analogy or story to help everyone to understand the overall system
architecture and keep the design straightforward and clear.
A good design results in elimination of complex dependencies within a system.

Coding: The concept of coding which is used in the XP model is slightly different
from traditional coding.
Extreme Programming (XP) promotes pair programming i.e. developers work
together at one workstation, enhancing code quality and knowledge sharing.
They write tests cases before coding to ensure functionality from the start (TDD),
and frequently integrate their code into a shared repository with automated tests
to catch issues early.
Testing: Extreme Programming (XP) gives more importance to testing that
consist of both unit tests and acceptance test.
Unit tests, which are automated, check if specific features work correctly or not
with respect to each query .
Acceptance tests, conducted by customers, ensure that the overall system meets
initial requirements. This continuous testing ensures the software’s quality and
alignment with customer needs.

Feedback: One of the most important aspects of the XP model is to gain feedback
by listening from the customer to understand the exact needs.
Frequent contact with the customer makes the development effective, through
adapt to any changes.

Few advantages of XP Agile frame work are:

• Simplicity
• Speedy
• Time & Cost effective
• Refactoring / Team work
• Flexibility
• Higher quality
• Customer satisfaction

Few disadvantages are:

• Intensive Customer Involvement: XP requires a high level of


commitment from customers, which may not always be feasible.
• Team Dependency: XP depends on teamwork means that projects can
suffer if team dynamics are poor. The success of an XP project depends
heavily on skilled, experienced developers who are well-versed in the
XP practices.
Scrum Process Model: Scrum is a process management frame work for
developing Complex and Sustainable Projects.
Scrum is a way to get work done as a team in small pieces at a time, with
continuous experimentation and feedback.
Here people can address complex adaptive problems with the productivity and
creativity by delivering products at the highest possible value.
Scrum provides an approach to find solutions to complex problems. It doesn’t
solve your problems.
The Scrum framework consists of Scrum Teams and their associated roles, events,
artifacts, and rules. Each component within the framework serves a specific
purpose and is essential to Scrum’s success and usage.
The rules of Scrum bind together the events, roles, and artifacts, governing the
relationships and interaction between them.
Scrum is a process framework that defines certain rules, events, and roles to bring
in regularity. However, it can be adapted to any organization, based on needs,
provided the basic scrum rules are not violated.
PBI’s (Product Backlog Items ) in the form of users stories, are given to scrum
team, the team plans accordingly and creates sprint backlogs.
Sprint is a set of process pattern in scrum, the number of sprints required for
each activity will vary and depending on product complexity and size.
When one sprint ends, a new sprint immediately begins. Sprints are repeated until
the product development effort comes to an end. Each sprint adds a something to
the final product.

Actual work is conducted within a sprint in an incremental manner, defined and


often modified in real time by a well-articulated goal developers scrum team.
Daily Scrum: Where developers discuss progress on hourly basis. Review with
stakeholders after development is done, this is termed as Sprint Review.
Scrum meetings are short meetings held daily by the scrum team , team members
responds to few important operations.

What did you do since the last team meeting?


What obstacles are you really encountering?
What do you plan to accomplish in the next team meeting?

Scrum master is a team leader leads the meeting and accesses the responses from
each person. After each review a potential software increment is released to
customer so that functionalities can be demonstrated and evaluated.
Following figure represents detailed process with each face shown above.
Few advantages are:

• Effective
• Team communication
• Flexibility
• Adaptability
• Transparency & Accountability
• Customer satisfaction

Few disadvantages are:

 Lack of predefined plan & structure


 Not suited for geographically scattered team

Crystal methodology: Is a flexible approach used in Agile software


development to manage projects effectively. This framework differs from
traditional management styles in that it prioritizes team communication,
interactions, skills, and talents over processes and tools.
Crystal agile framework is built on two core beliefs:

Teams can find ways on their own to improve and optimize their workflows.
Every project is unique and dynamic, (always changing) which is why project’s
team is best suited to determine and tackle the work.
Crystal Agile approaches are particularly suitable for project types where
adaptability, team collaboration, and continuous improvement are essential. This
frame work focuses on delivering valuable high-quality software in an iterative
and incremental manner.
The framework's primary focus is not on completing tasks and meeting deadlines
but on building a strong team dynamic.
The methods are color – coded specifying team size and work space . Crystal
clear with team size 1-6 members, Crystal yellow with team size 7- 20 members,
Crystal orange with team size 21- 40 members and Crystal red with team size
41- 80 members. As the team size increases, problem complexity also increases.
Few advantages are:

• Collaboration: Facilitate and enhance team communication and


accountability.
• Adaptability: The team responds well to the demanding requirements.
• Efficiency: Teams talk directly with each other, which reduces
management overhead.
• Faster delivery: The framework enables the team to deliver working
software faster, which can help gain a competitive advantage in the market.
• Higher quality: The framework emphasizes on quality, enabling the team
to detect and fix defects early in the development process, resulting in a
higher quality product.
• Improved customer satisfaction: The framework promotes customer
involvement, enabling the team to deliver products that meets customer
satisfaction.
• Flexibility: The framework is highly adaptable, enabling the team to adjust
to changing requirements, and make decisions based on real-time feedback.

Few disadvantages are:

Disorganization: Lack of structure may slow down inexperienced teams.


Uncertainty: Not clear on how a remote team can share knowledge informally.
Lack of documentation: The framework’s emphasis on communication and
collaboration may result in a lack of documentation and less focus.
Dependence on team expertise: The framework relies heavily on the expertise
and skills of the development team, which may not be suitable for teams with
limited experience or knowledge.
Dynamic System Development Method (DSDM): It is one of the
earliest agile project management methods originally designed with software
development in mind, it can also be applied to other types of projects.
Are you looking to learn more about agile methodologies to find the best fit for
your business needs? Consider enrolling in a DSDM training course to get a
comprehensive overview of its principles and applications.
Keep reading to get an overview of DSDM, including its history, 8 principles and
what sets it apart from other agile methods such as the scrum methodology.
The DSDM Consortium (www.dsdm.org) is a world-wide group of member
companies that collectively take on the role of keeper of the method. The
consortium has defined an agile process model, called DSDM Life Cycle that
defines three different iterative cycles, preceded by two additional life cycles.

 Feasibility study
 Business study
 Functional model iteration
 Design and build iteration
 Implementation

Feasibility study: Which establishes the basic business requirements and


constraints associated with the particular application to be built and then assesses
whether the application is a viable candidate for the DSDM process.
Business study: Which establishes the functional and nonfunctional requirements
that will allow the application to provide business value, and also defines the basic
application architecture and identifies the maintainability requirements for the
application
Functional model iteration: Which produces a set of incremental prototypes of
the model that demonstrate functionality for the customer. Main aim of this cycle
is to gather additional requirements by eliciting feedback from the user by going
through the prototype model.
Design and build iteration: During this cycle prototype models are revisited,
which are built during functional model iteration to ensure that each has been
engineered in a manner that will enable it to provide operational business value
for end users. In some cases, functional model iteration and design and build
iteration occur concurrently.
Implementation: This places the latest software increment in to the operational
environment. It should be noted that the increment may not be 100 percent
complete, that is changes may be requested as the increment is released for
feedback.

Feature Driven Development (FDD): FDD is initially developed as a practical


process model for object-oriented software engineering. FDD allows teams to
update the project regularly and identify errors quickly. So that clients can be
provided with information and substantial results at any time. FDD is a favorite
method among development teams because it helps reduce two known morale-
killers in the development world: Confusion and Rework.

Typically, FDD is used in large-scale development projects, five basic activities


that exist during FDD are:

 Develop overall model


 Build feature list
 Plan by feature
 Design by feature
 Build by feature

Block diagram showing different activities of FDD


An overall model shape is formed during the first two steps, while the final three
are repeated for each feature. The majority (roughly 75%) of effort during FDD
will be spent on the fourth and fifth steps – Design by Feature and Build by
Feature. However, the difference is that once a goal has been identified, teams
following FDD organize their activities by features, rather than by project
milestones or other indicators of progress.
Feature-Driven Development is a practical Agile approach suited for long-term,
complex projects. It is a suitable choice for development teams seeking a simple
but structured Agile method that is scalable and delivers predictable results.

Software Engineering Knowledge: Software engineering knowledge is a


technological knowledge of specific product or process in the area like C, C++,
Java, Perl, HTML, Linux, Windows, NT and so on.
Here knowledge of software engineering is necessarily to perform computer
programming, along with specific domain related knowledge and another kind is
to think as “ Software engineering principles” , that are likely to serve a
professional programmer throughout his or her carrier.
Software engineering is guided by a collection of core principles that help the
application of a meaningful software process and the execution of effective
software engineering methods. Core principles establishes a collection of values
and rules that serve as a guide as we analyse a problem , design , implement and
test the solution, ultimately deploy the software in the user community.

Core principles that guide process are:


 Be Agile
 Focus on quality at every step
 Be ready to adapt
 Build an effective team
 Establish mechanism for communication
 Manage change
 Create work products that provide value for others
 Asses risk (Explain all of them in 2- lines )
Principles that guide each frame work activity: Following are the 5
major principles related to frame work activity.
a) Communication principles
b) Planning principles
c) Modelling principle
d) Construction principles
e) Deployment principles

a) Communication Principles: Every activity in software development must


starts with communication before customer requirements are analysed. Effective
communication is among the most challenging activities that we come across.
Many principles we can mention which apply all forms of communication with
in a software project.
 Listen
 Prepare before you communicate
 Someone should facilitate the activity
 Face to face communication
 Taking note and document decisions
 Strive for collaboration
 Stay focused, modularize decisions
 If something is unclear, draw a picture

b) Planning Principles: To start with the communication activity helps us to


define our overall goals and objectives of the project. However planning activity
provides a set of management and technical practices that enable the software
team to define a road map achieving the goal and objectives. Many principles we
can mention which apply all forms of planning with in a software project.
 Understand the scope of the project
 Involve stakeholders in the planning activity
 Recognize that planning is iterative
 Estimate based on what you know
 Consider risk as you define the plan
 Be realistic
 Define the plan clearly to ensure quality
 Track the plan and make adjustment as required

c) Modelling Principles: Models are created to gain a better understanding


of the actual entity to be built. Since the entity here is a software, our model
must take a different from, it must be capable of representing the information,
architecture and functions. Following are the few principles which applies to
modelling.

 The primary goal of the team is to build software, not create models
 Travel high but don’t create more models than you need.
 Strive to produce the simplest model to describe the software
 Build models which are adaptable to change
 State explicit purpose for each model that is created
 Adapt the models to the system at hand
 Try to build useful models
 Get feedback as soon as you can

d) Construction Principles: The construction activity combines a set of


coding and testing tasks that lead to operational software that is ready for delivery
to the customer or end user. Following are the few principles which applies to
coding and testing.
 Select data structures that will meet the needs to design
 Consider the use of pair programming
 Keep logic, loops and others as simple as possible
 Conduct code refactor
 Use good test cases for tracing
e) Deployment Principles: Deployment activity defines three major actions:
Delivery, Support, and Feedback. Following are the few which applies to
deployment activity.
 Customer expectations for the software must be managed
 A complete delivery package should be assembled and tested
 Provide guidelines before the software is delivered
 Buggy software should be fixed first, delivered later

You might also like