Agile Revision Notes
Agile Revision Notes
Lecture 1:
Software Engineering is concerned with theories, method & tools for professional
Software development, it's a discipline that is concerned with all aspects of software
production from the early stages of system specification through to maintaining the system
after it has gone into use, using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints, not just technical process of
development, also project management and development tools, methods to support the
software production
Expenditure on software represents a significant fraction of Gross National Product(El
Dakhl el qawmy) in all developed countries
Software cost is more to maintain that it does to develop for systems with a long life, the
maintenance costs may be doubles of the development costs
Software engineering is cost effective in the software development as the engineering
techniques is cost effective on the long run, it helps to build larger and more complex
systems.
Failure to use software engineering methods, Companies that don't use software
engineering methods, their software is more expensive and less reliable.
Generic Products are Stand alone programs the are generally used and not made
custom for a client like photoshop and AutoCad, the specifications are determined by the
software owner.
Customized Products are commissioned by a specific customer to meet their own needs,
like embedded control systems or a custom mobile application, the specifications are
owned by the customer.
Maintainability is that the software should be written in clean code so it could able to
change by changing the developers and written in such a way so that it can evolve to meet
the changing needs of customers, this is critical attribute because software change is an
inevitable requirement of a changing business environment
Dependability is that the software includes a range of characteristics including reliability,
security and safety, it shouldn't cause system failure.
Efficiency is that the software should be efficient in the usage of memory and the machine
resources so that it will be responsive.
Acceptability is that the software must be understandable and accepted by the user so
there's a software user acceptance testing (UAT).
Software Specification: it's set by the customers and engineers what is the software that
will be produced and the constraints on it's operation.
Software validation: where the software is checked to ensure that it is what the customer
requires.
Software Development: where the software is designed and programmed.
Software Evolution: Where the Software is checked to ensure changing the customer
and market requirements.
Application Types:
Stand alone software: applications runs on local computer in includes all the
functionalities and don't need internet connection.
Interactive Transaction based applications: applications that executes on a
remote computer and are accessed by users from their own PCs or terminals, like e-
commerce applications
Embedded Control Systems: Software control that manages and controls hardware
devices
Batch Processing Systems: Design to process data in large batches
Entertainment Systems: they are personal use which are intended to entertain users
Systems for modeling and Simulation: systems are developed by scientists and
engineers to model physical processes or situations which includes many separate,
interacting objects.
Data Collection Systems: Systems that collect data from the users using a set of
sensors and send data to other systems to be processed.
Systems of systems: These Systems that are composed of a number of other
software systems.
Software Engineering Ethics:
Confidentiality: Engineers should respect the confidentiality of their employees or
clients
Competence: Engineers should not misrepresent their level of competence they
should not knowingly accept work which is outwits their competence.
Lecture 1
What is Software?
Software Specifications
Software Development
Software Validation
Software Evolution
the web has led availability of software services and the possibility of developing highly
distributed service based systems
Web-based systems development has led to important advances in programming
languages and software reuse.
Based on your understanding, what are the reasons for software failure?
Software Specification: Defining what the software should do and its constraints.
Software Development: Designing and programming the software.
Software Validation: Ensuring the software meets customer requirements.
Software Evolution: Modifying the software to adapt to changing needs.
no ONE, method fits all, discuss the concept in the context of software engineering?
Different software projects require different approaches depending on their nature and
requirements.
Techniques suitable for one type of software (e.g., games) may not be suitable for others
(e.g., safety-critical systems).
Based on your understanding, what are the main factors that affect the software cost?
What is the major difference between generic & custom software product types?
Active software adapts, responds, and evolves based on user interactions and changing
environments.
Based on your understanding, discuss the activities of software process (no more than
one statement per activities)
Based on your understanding, mention some issues, that might affect software.
Heterogenity
Business and social changes
Security and Trust
Scale
Consider you have been promoted to a team leader in your company, what ae the
fundamental factors, that you would adopt for better software development?
Confidentiality and computer misuse are two factors in software engineering ethics
discuss:
it's a discipline that is concerned with all aspects of software production from the early
stages of system specification through to maintaining the system after it has gone into use,
using appropriate theories and methods to solve problems bearing in mind organizational
and financial constraints, not just technical process of development, also project
management and development tools, methods to support the software production.
Lecture 2
Although they are still use today, waterfall models are becoming less common.
They Lack Flexibility and cannot easily adapt to change in requirements.
if needs are not clearly established at the beginning of the project, they may result in
delays and cost overuns.
They Might make stakeholders and developers less likely to work together.
This model involves dividing the project into smaller parts or increments. Each increment
is a mini-software project encompassing a full software development cycle (requirements,
design, coding, testing, and documentation). Each increment adds functionalities in a
systematic sequence until the complete system is delivered.
Incremental software development could be very effectively used for customers who do
not have a clear idea about the systems needed for their operations. Discuss!
For clients unsure about their system needs, incremental development is effective as it
allows for flexibility and continuous feedback. Clients can see the system evolve with each
increment, providing opportunities to refine and alter requirements based on the
functioning software they interact with.
Requirements Analysis: Understanding and documenting what the software must do.
Design: Planning the structure of the software.
Implementation: Writing and compiling the code.
Verification: Testing to ensure the software meets specifications.
Maintenance: Ongoing support after deployment.
Based on your understanding, What is the incremental delivery and development? what
is the pros of using it?
Involves delivering software in parts or increments. Each part is usable on its own and
adds functionality to the previous release.
Pros: Allows for feedback and changes at each stage, reduces time to market for some
features, spreads out the cost, and provides early indications of project progress or issues.
What are the drawbacks of using both the waterfall model and the Re-use oriented
software?
Waterfall Model:
Inflexible to changes post-design phase.
Late discovery of flaws or misunderstood requirements.
Long wait times before seeing a working product.
Re-use Oriented Software:
The complexity of integrating reusable components.
Dependence on the availability of suitable components.
Potential mismatches between existing components and current requirements.
Explain why the rapid delivery and deployment of new systems is often more important
to business than the detailed functionality of these systems.
1. Competitive Advantage: Being first to market with a new system can capture market
share and establish a business as a leader in its field.
2. Customer Feedback: Early deployment allows businesses to collect user feedback and
make improvements quickly, leading to a product that better meets user needs over time.
3. Adaptability to Change: Rapid deployment means that a business can respond to
changes in the market or technology quickly, avoiding the risk of a system becoming
obsolete before it is launched.
Lecture 3
Agile is a mindset defined by values guided by principles and manifested through many
different practices” What are the main agile values and mention a 5 of its principles?
values:
What are the meaning of these XP practices: Sustainable pace - Collective ownership -
Test – first development?
Sustainable pace: large amount of time is not considered acceptable as the net effect
often to reduce code quality and medium term productivity
Collective ownership: the pair of developers work on any area of the system, anyone can
change anything
Test-first development: an automated unit test framework
Theme
Epic
User story
Define with examples the definition of done (DoD) for a user story?
DOD is an agreed-upon set of items that must be completed before a project or user story can
be considered complete.
Examples:
Based on your understanding, what could be the benefits of pair programming practice
in XP?
Collective ownership
It encourages refactoring as the whole team can benefit from improving the system code.
Knowledge sharing
Lecture 4
What are the main differences between Release & Sprint through the Scrum?
Release:
1. Tested, package group of requirements
2. Ready to go live to be used by the end user
3. Deliver value to the costumer
4. Within 3-6 months
Scrum:
1. Timeboxed development cycle within a release
2. Output “potentially shipped product increment”
3. Within 1-4 weeks
Clarify the role/ responsibility of both Development team, Product owner and the Scrum
master?
Development team: they are responsible for developing the software and other essential
project documents.
Product owner: his/her job is to identify product features and requirements, prioritize these
for development, continually review the product backlog to ensure that the project continue
to meet critical business needs.
Scrum master: responsible for ensuring the scrum process is followed and guide the team
in the effective use of scrum
Velocity: an estimate of how much product backlog effort that a team can cover in a single
sprint
Sprint: a development iteration. Usually 2-4 weeks long
Scrum: a daily meeting of the scrum team that review progress and prioritize work to be
done that day
Backlog: a list of to do items that the scrum team must tackle
Lecture 5
Story Point Estimation is a technique used in Agile project management to estimate the
effort required to complete a user story. Unlike traditional methods that measure effort in
hours or days, Agile uses story points which are relative and abstract units based on the
complexity, effort needed, and risk or uncertainty involved in completing the story.
From the available estimation tools, what is the best choice to plan the future Releases
for your project?
The document suggests two main tools for estimation: the Fibonacci sequence and
Planning Poker. The best choice depends on the specific needs and context of the project.
Planning Poker is particularly effective for collaborative and consensus-driven estimation,
while the Fibonacci sequence provides a structured and scalable approach.
What are the three attributes to consider in estimating the size of each user story?
Planning Poker is played after creating the product backlog, usually before each sprint
during the sprint planning meeting. This helps in estimating each user story and deciding
the priority of tasks.
Briefly describe how the team plays Planning Poker in story point estimation.
In Planning Poker, each team member uses a deck of cards with numbers representing
story points, typically based on the Fibonacci sequence. For each user story, team
members simultaneously reveal their chosen card, indicating their estimate of story points.
Discussion follows if there are significant differences in estimates, leading to a consensus
on the story points to be assigned.
What is the difference between Team Velocity and Team Capacity in Agile?
Team Velocity measures the average number of story points or tasks an Agile team can
deliver per sprint. Team Capacity, on the other hand, refers to the total number of
development hours available for a sprint, indicating the team's productive worth.
What are the responsibilities of both the scrum master and the Product owner?
The Scrum Master is responsible for planning and executing Agile methodology,
monitoring sprint progress, removing roadblocks, ensuring the product backlog is up to
date, and motivating the team. The Product Owner creates and maintains the product
backlog, collaborates with the Product Manager for vision and roadmap, prioritizes tasks,
and evaluates progress throughout development.
Lecture 6
A sustainable pace in Agile means establishing a velocity at which the team can work
without undue stress or overtime, ensuring long-term productivity and well-being. It usually
involves working reasonable hours and avoiding burnout.
Scrum, as an agile methodology, does not strictly adhere to a phased approach. Instead, it
focuses on iterative development through sprints, without distinct phases as in traditional
project management.
In Agile, the term 'Velocity' is used to refer to the rate of progress a team makes, typically
measured in story points or tasks completed per sprint.
A cross-functional Development Team in Agile means a team that possesses all the
necessary skills to produce a shippable increment of work at the end of each sprint. This
includes design, development, testing, and other skills required to deliver a completed
product increment.
Lecture 7
What are the key elements for making a successful transition to Agile software
development environment?
Key elements include understanding Agile principles and values, educating the team,
starting with a pilot project, defining roles and responsibilities, and implementing Agile
frameworks like Scrum or Kanban.
Yes, Agile principles and methodologies can be adapted for a variety of non-software
projects, focusing on customer collaboration, responding to change, and delivering value
iteratively.
Give three examples clarifying how the Agile approach can be used in non-software
projects.
Examples include:
Lecture 8
Why checking Burnup charts regularly is an important part of Agile project
management?
Regularly checking Burnup charts is crucial for tracking project progress toward
completion, identifying scope changes, and allowing early corrective actions for issues like
scope creep.
What is the importance of both “Ideal line” & “Scope line” in the Burnup chart?
The "Ideal line" represents the desired progress rate, helping to track if the project is
ahead or behind schedule. The "Scope line" shows changes in project scope, important for
adjusting timelines and expectations.
Burn-up charts are used for clear visualization of completed work and project scope,
aiding in communication with stakeholders and managing scope changes effectively.
In a Burndown chart, the "Ideal line" represents the required rate of progress to meet the
project goals on time, serving as a benchmark for actual progress.
Burn-down charts are used to track the remaining work to reach project goals and to
provide a simple, visual measure of project progress and pace.
The main difference is that Burn-up charts show the amount of work completed and the
total scope, while Burn-down charts focus on the remaining work to be done.