You are on page 1of 42

Chapter 3

Agile development(session 1)
Outlines
 What is agile development
 Agile development process
 Principle of agile model
 Agile SDLC models
 Advantage and dis advantage of agile model
 Agility and cost of change
Agile software development

What is agile methodology and agility?


• The Agile Methodology is an advanced approach to developing
software with flexibility and speed.
• The main aim of the Agile model is to facilitate quick project
completion. To accomplish this task agility is required.
• Agility is achieved by fitting the process to the project and removing
activities that may not be essential for a specific project
• Agile Software Development is a software development methodology
that values flexibility, collaboration, and customer satisfaction.
Agile software development

• It is based on the Agile Manifesto, a set of principles for software


development that prioritize individuals and interactions, working
software, customer collaboration, and responding to change.
• Agile Software Development is an iterative and incremental approach
to software development that emphasizes the importance of delivering
a working product quickly and frequently.
• It involves close collaboration between the development team and
the customer to ensure that the product meets their needs and
expectations.
Agile Software Development process

The Agile Software Development process typically consists of the


following steps:
• Requirements Gathering: The customer’s requirements for the
software are gathered and prioritized.
• Planning: The development team creates a plan for delivering the
software, including the features that will be delivered in each iteration.
• Development: The development team works to build the software,
using frequent and rapid iterations.
• Testing: The software is thoroughly tested to ensure that it meets the
customer’s requirements and is of high quality.
• Deployment: The software is deployed and put into use.
• Maintenance: The software is maintained to ensure that it continues to
meet the customer’s needs and expectations.
Cont..
Principles of Agile model
• To establish close contact with the customer during development and to gain
a clear understanding of various requirements
• The agile model relies on working software deployment rather than
comprehensive documentation.
• Frequent delivery of incremental versions of the software to the customer
representative in intervals of a few weeks.
• Requirement change requests from the customer are encouraged and
efficiently incorporated.
• It emphasizes having efficient team members and enhancing communications
among them is given more importance
• It is recommended that the development team size should be kept small (5 to
9 people) to help the team members meaningfully engage in face-to-face
communication and have a collaborative work environment.
• The agile development process usually deploys Pair Programming.
Agile SDLC models
Crystal
• Crystal Agile methodology places a strong emphasis on fostering effective
communication and collaboration among team members for a successful
development process.
• This methodology is particularly beneficial for projects with a high degree of
uncertainty, where requirements tend to change frequently.
Atern: 
• This methodology is tailored for projects with moderate to high uncertainty,
where requirements are prone to change frequently.
• Its clear-cut roles and responsibilities focus on delivering working software in
short time frames
Feature-driven development: 
• This approach is implemented by utilizing a series of techniques like creating
feature lists, conducting model evaluations, and implementing a design-by-
feature method to meet its goal.
Scrum
What is Scrum?
• Scrum is a framework within which people can address complex adaptive
problems, while productively and creatively delivering products of the
highest possible value.
There are three roles in scrum
Product Owner- The product owner is the guardian of requirements. He/she
also coordinates between the customers, the business and the team.
• The product owner is the one who is responsible for maintaining the
product backlog.
Scrum Master- The one who is responsible for making sure that the process
runs hassle-free (with out controversial) and smoothly.
• Scrum Master eliminates any hurdles that directly/indirectly affect the
productivity of the company.
Scrum Team- The scrum team constitutes a bunch of people who are cross-
functional and self-organizing
• focused on developing and testing the product. An ideal team size would
range from five to nine people.
Extreme programming (XP)
•  It uses specific practices like pair programming, continuous integration, and
test-driven development to achieve goals.
• Extreme programming is ideal for projects that have high levels of
uncertainty and require frequent changes, as it allows for quick adaptation to
new requirements and feedback.
Some of the good practices that have been recognized in the extreme
programming model and suggested to maximize their use are given below:
• Code Review: Code review detects and corrects errors efficiently. It
suggests pair programming as coding and reviewing of written code carried
out by a pair of programmers who switch their works between them every
hour.
• Testing: Testing code helps to remove errors and improves its reliability. XP
suggests test-driven development (TDD) to continually write and execute
test cases..
Cont..
• Incremental development: Incremental development is very good because
customer feedback is gained and based on this development team comes up
with new increments every few days after each iteration.
• Simplicity: Simplicity makes it easier to develop good quality code as well
as to test and debug it.
• Design: Good quality design is important to develop good quality software.
So, everybody should design daily.
• Integration testing: It helps to identify bugs at the interfaces of different
functionalities. Extreme programming suggests that the developers should
achieve continuous integration by building and performing integration
testing several times a day.
Advantage and disadvantage of agile model
Advantage disadvantage

•Working through Pair programming •The lack of formal documents


produces well-written compact creates confusion and important
programs which have fewer errors decisions taken during different
as compared to programmers phases can be misinterpreted at
working alone. any time by different team
•It reduces the total development
members.
time of the whole project.
•Agile development models often
•Agile development emphasizes
involve working in short sprints,
face-to-face communication among
which can make it difficult to
team members, leading to better
collaboration and understanding of plan and forecast project
project goals. timelines and deliverables.
Cont..

advantage disadvantage
 

• Customer representatives get the •Agile development models


idea of updated software products require a high degree of
after each iteration. So, it is easy
for him to change any requirement
expertise from team members,
if needed. •Due to the absence of proper
• Agile development puts the documentation, when the
customer at the center of the project completes and the
development process, ensuring
that the end product meets their
developers are assigned to
needs. another project, maintenance
of the developed project can
become a problem.
Agility and Cost of Change in Software Engineering
Cont..

• An agile process reduces the agility and cost of change because software is
released in increments and change can be better controlled within an
increment.
• agility argue that a well designed agile process “flattens” the cost of change
curve shown in following figure, allowing a software team to accommodate
changes late in a software project without dramatic cost and time impact.
Cont..

• When incremental delivery is coupled with other agile practices such as


continuous unit testing and pair programming, the cost of making a change
is attenuated.
• Although debate about the degree to which the cost curve flattens is
ongoing, there is evidence to suggest that a significant reduction in the cost
of change can be achieved.
Chapter 3(session 2)
Requirement Engineering
Outline
Introduction
Types of Requirements
Requirement Engineering Activities
Feasibility studies
Requirements elicitation and analysis
Requirement specification
Requirements validation
Requirements change management
Introduction
• Software requirements are the descriptions of the system services
(desired & essential) and constraints (on System operation and
software development process).
• If you are required to develop a library information software system,
what will you do firstly?
◦ What is the scope and boundary of the software?
◦ What functions that the system may have?
◦ What performances that the system may have? Etc...
• Software requirements example for library system
◦ Services: borrow book, renew book, …
◦ Constraints:
 Performance: the time of query book must be lower 1 second
 Schedule: development period is 6 months
Types of requirement
• Software requirements are often classified as functional requirements, non-
functional requirements.
• Functional requirements
• Describes functionality or system services.
• Example functional requirement for XYZ-PMS
• A user shall be able to search the appointments lists for all clinics.
• Generate Reports:
• The system shall generate each day, for each clinic, a list of patients
who are expected to attend appointments that day.
• Authorization:
• Each staff member using the system shall be uniquely identified by
his or her 8-digit employee number
•Answering the following questions on next slide to identify these types of
requirements
Functional requirement
• What inputs the system should accept?
• What outputs the system should produce?
• What data the system should store that other systems might use?
• What computations the system should perform?
• The timing and synchronization of the above
• Functional requirement specification of a system should be both complete
and consistent
• However, practically it is impossible for large complex systems to
achieve requirement completeness and consistency
• Reason:
• Easy to mistakes and omissions for large complex systems
• Different stockholders have different & often inconsistent needs
Non functional requirements

• Constraints on the services or functions offered by the system such as timing


constraints, constraints on the development process, standards, etc.
• Examples
• reliability, response time, storage requirements, I/O device capability,
system representations, etc.
• Mandating a particular CASE system, programming language or
development method
• NFRs are not directly concerned with specific functions delivered by the
system.
• However, non-functional requirements may be more critical than functional
requirements.
• i.e. , if they are not met, the system may be useless.
Non functional requirement

Non-functional
requirements

Process Product requirements External


requirements requirements
Usability requirements
Delivery Legal
requirements Reliability requirements constraints
implementation Safety requirements Economic
requirements constraints
Efficiency requirements
standards Interoperability
requirements requirements
Performance requirements
Capacity requirements
Requirement engineering

• Requirement engineering is the process of establishing the services that are


required of the system, and, the constraints under which it operates and is
developed.
◦ It covers all activities involved in discovering, documenting and
maintaining a set of requirements for a computer- based system.
◦ It helps software engineers to better understand the problem they will work
to solve.
◦ It can influence the development: cost, time, effort and quality.
• The goal of requirement engineering is to:
◦ obtain and understand software requirements in a complete, consistent and
accurate way, and generate software requirement specification (SRS)
document
Requirement engineering
Some key aspects of successful software development are
◦ User input and involvement
◦ Effective management and support
◦ Resources
◦ Clearly defined, complete requirements
 Many software engineering studies show this repeatedly 40-60% of all
defects found in software projects can be traced back to poor
requirements.
stakeholders

• System Stakeholders are people or organizations who will be affected by the


system and who have direct or indirect influence on the system
requirements.
• In order to develop a good requirement document, it is imperative to involve
all kinds of user in the requirement engineering process.
• You need to identify the stakeholders in a system and discover their
requirements.
• If you don’t do, you may find that they insist on changes during the system
development or after it has been delivered for use.
• Stakeholders have a tendency to state requirements in very general and
vague terms
◦ different stakeholders have different requirements – sometimes even
conflicting.
stakeholders

• Example
◦ For an automated railway signaling system (a system used to control
railway traffic safely) possible stakeholders are
 Train company operators responsible for running the system
 Train crew
 Railway managers
 Passengers
 Equipment installation and maintenance engineers
 Safety certification authorities
Requirement Engineering Activities

• Software requirements engineering is made up of two major processes:


requirements development and requirements management.
◦ Requirements development encompasses all of the activities involved in
eliciting, analysing, specifying, and validating the requirements.
 It occur during the early concept and requirements phases of the life cycle.
◦ Requirements management is the process of understanding and controlling
changes to system requirements and maintaining links between dependent
requirements.
• The activities used for requirement engineering vary widely depending on
the application domain, the people involved and the organisation developing
the requirements
Cont..

However, there are a number of generic activities common to all processes:


Feasibility studies, Requirements elicitation and analysis, Requirement
specification, Requirements validation, Requirements change management
Feasibility study

• A feasibility study decides whether or not the proposed system is


valuable.
• A short focused study that checks if the system;
• contributes to organisational objectives?
• can be engineered using current technology and within budget?
• can be integrated with other systems that are used?
• Unless the answers for the above questions are affirmative it has no
real value to the business.
• Feasibility study involves information assessment, information
collection and reporting.
Requirement elicitation and analysis
• Involves finding out the services that the system should provide and the
system’s operational constraints.
• Is the most difficult, most critical, most error-prone, and most
communication-intensive aspect of software development.
• Why Requirements elicitation and analysis is a difficult process?
• Stakeholders often don’t really know what they want from the computer system.
• Stakeholders naturally express requirements in their own terms.
• Different stakeholders have different requirements.
• Political factors may influence the requirements of the system.
• The requirements change during the analysis process. New stakeholders may
emerge and the business env’t change
Requirement elicitation and analysis

• Requirements elicitation & analysis process activities involves:


• Domain understanding
• Requirement collection
• Classification (into coherent clusters)
• Conflict resolution and identification of unpractical requirements
• Prioritization
• Requirement checking (e.g. Eliminate, combined and modified requirements)
• Different models may be produced during the requirements analysis activity.
• Requirements analysis may involve three structuring activities which result
in these different models
• Partitioning. Identifies the structural (part-of) relationships between entities
• Abstraction. Identifies generalities among entities
• Projection. Identifies different ways of looking at a problem
Cont..

• There are various requirement elicitation and analysis techniques. Some of


these are:
- Interview
- Brainstorming
- Prototyping
- questionnaires
- Delphi Technique
- Scenarios
- Use cases
• Interview
• In formal or informal interviewing, the RE team puts questions to
stakeholders about the system that they use (if any) and the system to be
developed.
• Ask about specific details and about the stockholder's vision for the future
• Ask if they have alternative ideas
Cont..
• There are two types of interview
• Closed interviews where a pre-defined set of questions are answered.
• Open interviews where there is no pre-defined agenda and a range of issues are
explored with stakeholders.
• Normally a mix of closed and open-ended interviewing are used together.
• Interviews are good for getting an overall understanding of what
stakeholders do and how they might interact with the system
Brainstorming
• process of systematic and liberal generation of a large volume of ideas
from a number of participants.
• In a brainstorming session you (moderator) gather together a group of
people, create a stimulating and focused atmosphere, and let people come
up with ideas without risk of being ridiculed.
• The facilitator notes down all ideas on a whiteboard
Cont..
• Delphi Technique
• is an iterative technique in which information is exchanged in a written
form until a consensus is reached.
• For example
• participants may write down their requirements, sorted in order of
importance.
• The sets of requirements obtained are distributed to all participants,
who reflect on them to obtain a revised set of requirements.
• The procedure will be repeated several times until sufficient consensus
is reached.
Cont..
• Scenarios
• are descriptions of how a system is used in practice.
• They are helpful in requirements elicitation as people can relate to these
more readily than abstract statement of what they require from a system.
• Scenarios are particularly useful for adding detail to an outline
requirements description
• Scenarios descriptions include
• A description of the starting situation;
• A description of the normal flow of events;
• A description of what can go wrong;
• Information about other concurrent activities;
• A description of the state when the scenario finishes.
Software Requirement Specification
• In this activity complete description of the behavior of the system is
developed.
• The requirements specification document states in precise and explicit
language those functions and capabilities a software system must provide, as
well as stating any required constraints by which the system must abide.
• Recommended approaches for the specification of software requirements are
described by IEEE 830-1998.
• Guidelines for writing user requirement Specification
• Must be written in natural languages because they have to be understood by
people who are not technical experts.
• Invent a standard format and use it for all requirements
• Use language in a consistent way. Use shall for mandatory requirements,
and should for desirable requirements.
• Use text highlighting to identify key parts of the requirement.
Requirement validation

• Concerned with demonstrating that the requirements define the system that
the customer really wants and they are error free.
• Requirements error costs are high so validation is very important
• Fixing a requirements error after delivery may cost up to 100 times the
cost of fixing an implementation error.
• During the requirements validation process, different types of checks should
be carried out on the requirements in the requirement document. Some of the
checks are
- Validity - Consistency
- Completeness - Realism
- Verifiability
Cont..
• To validate requirements we may use the following requirement validation
techniques
• Requirements reviews
• Systematic manual analysis of the requirements.
• Prototyping
• Using an executable model of the system to check requirements.
• Test-case generation
• Developing tests for requirements to check testability.
• Automated consistency analysis
• Checking the consistency of a structured requirements description
Requirement document
• The software requirements document [sometimes called the software
requirements specification (SRS)] is the official statement of what is
required of the system developers
• It should include both the user requirements for a system and a detailed
specification of the system requirements.
• The requirements document has diverse set of users, for example :
• System customers, Managers, System Engineers, System Test Engineer,
System Maintenance Engineers
• Writing SRS
• Write each clause so that it contains only one requirement
• Avoid having one requirement refer to another requirement
• Collect similar requirements together
Cont..
• The requirement document should be
• Complete - the set of requirements must be complete.
• If requirements are missing, then the product will also be incomplete.
• It is likely that the missing requirements will turn up at inopportune times
and cause problems throughout the project life cycle.
• Consistent - set of requirements must be consistent.
• If there are requirements in your specification that conflict with each other,
then the product will not be able to meet all of your requirements.
• Inconsistencies must be resolved in order for your project to succeed.
• Updateable
• If you have to change a requirement (create, edit, or delete), you must be
able to evaluate the impact of that change on all of the other requirements.
Cont..
• Traceability - Each requirement should be contained in a single, numbered
paragraph so that it may be referred to in other documents:
• Backward traceability – implies that we know why every requirement
exists. I.E. each requirement explicitly references its source in previous
documents
• Forward traceability allocation of requirement to analysis/design
elements.
• Prioritization - Each requirement has to be ranked against the others
according to its implementation importance.
• More over SRS should
• Specify external system behaviour
• Specify implementation constraints
• Easy to change
• Serve as reference tool for maintenance etc
IEEE 830-1998. requirements standard

1. Introduction to the Document 3.1 External Interface


1.1 Purpose of the Product Requirements
1.2 Scope of the Product 3.1.1 User Interfaces
1.3 Acronyms, Abbreviations, Definitions 3.1.2 Hardware Interfaces
3.1.3 Software Interfaces
1.4 References 3.1.4 Communications
1.5 Outline of the rest of the SRS Interfaces
2. General Description of Product 3.2 Functional Requirements
2.1 Context of Product 3.2.1 Class 1
2.2 Product Functions 3.2.2 Class 2
2.3 User Characteristics …
2.4 Constraints 3.3 Performance Requirements
3.4 Design Constraints
2.5 Assumptions and Dependencies
3.5 Quality Requirements
3. Specific Requirements 3.6 Other Requirements
4. Appendices
5. Index
System model

You might also like