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

Agile Revision Notes

The document provides comprehensive notes on Agile software engineering, covering its principles, methodologies, and various models like Waterfall and Incremental Development. It emphasizes the importance of maintainability, dependability, and efficiency in software, along with ethical considerations in software engineering. Additionally, it outlines the Scrum framework, roles within Agile teams, and estimation techniques such as Story Point Estimation and Planning Poker.

Uploaded by

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

Agile Revision Notes

The document provides comprehensive notes on Agile software engineering, covering its principles, methodologies, and various models like Waterfall and Incremental Development. It emphasizes the importance of maintainability, dependability, and efficiency in software, along with ethical considerations in software engineering. Additionally, it outlines the Scrum framework, roles within Agile teams, and estimation techniques such as Story Point Estimation and Planning Poker.

Uploaded by

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

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?

Computer program associated with documentation.

What are the attributes of good software?


Deliver the required functionalities and performance.
Should be maintainable, dependable, usable.

What are the fundamental software engineering activities?

Software Specifications
Software Development
Software Validation
Software Evolution

What is the difference between software engineering and computer science?

Computer Science: focuses on theories and fundamentals.


Software Engineering: focuses on practicalities.

What is the difference between software engineering and system engineering?

System Engineering: Concerned with all aspects of computer-based systems,


development cycle includes hardware, software and process engineering
Software Engineering: Part of more general process.

What are the key challenges facing software engineering?

Demands for reducing the delivery time.


Coping with increasing diversity.

What are the cost of software engineering?

60% software development


40% maintenance

What are the best software engineering techniques?

All software projects have to be professionally managed and developed, different


techniques are appropriate for different types of system.
Games should always be developed using a series of prototypes
Critical Safety control systems require complete analysis
No one method is better than the other

What is the difference between web made to software engineering?

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?

Increasing System Complexity


Failure to use software engineering Methods

Software engineering is an engineering discipline that is concerned With all aspects of


software production, discuss !

it involves the application of engineering principles to software development in a


systematic method.
Encompasses theories, methods, and tools for professional software development.
Covers stages from system specification to maintenance, considering organizational,
financial, and technical aspects.

What are the fundamental activities of software engineering?

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?

The complexity of the software.


The duration of the development process.
The quality of the developers.
The technology used.
Maintenance requirements.

What is the major difference between generic & custom software product types?

Generic software is stand-alone, designed for a general audience (e.g., Photoshop).


Custom software is tailored for a specific client's needs (e.g., a bespoke mobile
application).

Why is maintainability an essential attribute for good software products?

Essential for adapting to changing needs and technologies.


Facilitates updates, fixes, and enhancements.

Discuss and mention the pillars of the active software!

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)

Specification: Defining what the software should do.


Development: Constructing the software.
Validation: Checking for correctness.
Evolution: Adapting to changing needs.

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?

Clear communication and collaboration.


Regular and thorough testing.
Continuous learning and improvement.
Effective project management and planning.

Confidentiality and computer misuse are two factors in software engineering ethics
discuss:

Confidentiality: Respecting the privacy of data and information.


Computer Misuse: Avoiding illegal or unethical use of software and computing resources
Briefly discuss why it is, usually cheaper in the long run to use software engineering
methods, and techniques for software systems.

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

Do you think that waterfall model are no longer used? why?

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.

What is incremental development model?

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.

What are the possible activities of any software process model?

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

Define Agile approach in a nutshell?


Agile is an iterative and incremental approach to software development which focuses on
collaboration, customer feedback, and small, rapid releases.
- Rapid development and delivery
- Frequent delivery
- Incremental versions
- Minimal documentation
- Extensive tool support
- Interleaved activities
- Responds to changes quickly
- Reduce product overhead

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:

1. individuals and interaction over process and tools


2. working software over comprehensive document
3. costumer collaboration over contract negotiation
4. responding to changes over following a plan
principles:
5. costumer involvement
6. incremental delivery
7. people not process
8. embrace change
9. maintain simplicity

Mention When Agile is applicable?

1. Small/medium size product


2. Costumer involvement
3. Cross functional team
4. Organizational mindset

State with diagram the Extreme programming release cycle?


“Due to the difficulty of integrating XP practices with management strategy in most
organizations” what are the practical XP practices to be applied?

User stories for specification


Refactoring
Test-first development
Pair programing

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

What is the main difference between Theme, Epic, User story?

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:

Unit test passed


Code reviewed
Acceptance criteria met
Functional test passed
Non-functional test passed
Product owner accepted the user story

What does Refactoring mean in XP? Give some examples?


Refactoring keeps the code simple and maintainable
Examples:

Remove duplicate code.


Logical naming for attributes and methods
Replace inline with method calls.
Enhancing performance
Documenting complex functions
Re-architecture

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 phases of the scrum development framework?

Discovery: plane & design


Implementation: series of sprints cycles
Closure: user manuals, project retrospective, lesson learnt

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

Define the following scrum terms: Velocity- sprint-scrum- Backlog –” Potentially


shippable product increment”?

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

What is the Story Point Estimation?

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.

Mention some benefits of Using Story Points for estimation.


Benefits of using story points include:

1. Fast estimation process.


2. Building consensus and collaboration among team members.
3. Avoiding artificial deadlines, which reduces unnecessary pressure.
4. Allowing better planning and forecasting.
5. Facilitating team commitment.
6. Enhancing adaptability.
7. Enabling performance measurement and improvement.

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?

When estimating the size of each user story, consider:


1. The complexity of the work involved.
2. The effort needed to complete the work.
3. The risk or uncertainty associated with the work.

When does the agile team play Planning Poker?

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.

Why does the agile team play Planning Poker?


The agile team plays Planning Poker to:
1. Arrive at an understanding of the correct story point approximation for each backlog
item.
2. Improve collaboration and strategize the work to be done.
3. Accurately estimate product development time frames.

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

How is plan-driven development different from agile development?

Plan-driven development typically involves a sequential process where stages like


requirements, design, implementation, and testing are distinct and follow a rigid order. In
contrast, agile development is more iterative and flexible, with these stages being more
integrated and adaptable to change.

A sustainable pace means?

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.

How many phases are there in Scrum?

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.

A term Velocity is used for __?

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.

What do we mean by a cross-functional Development Team?

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.

Mention and explain five steps of making a successful transition to an


agile environment.

Five steps for transitioning to an Agile environment are:


Educate the Team: Provide Agile training through workshops or online courses. Start
with a Pilot Project: Begin with a small, low-risk project to apply Agile practices.
Define Roles and Responsibilities: Clearly outline the roles within the Agile team.
Implement Scrum or Kanban: Choose an Agile framework suitable for your
organization. Encourage Collaboration and Communication: Foster open
communication and collaboration among team members.

Can the agile approach be applicable for non-software projects?

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:

Agile in marketing for flexible and responsive campaign management.


Agile in manufacturing for iterative product development.
Agile in event planning for adaptive and customer-focused event organization.

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.

Why Burn-up chart is used? (at least 2 reasons)

Burn-up charts are used for clear visualization of completed work and project scope,
aiding in communication with stakeholders and managing scope changes effectively.

What does the “Ideal line” represent in the Burndown chart?

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.

Why Burn-down chart is used? (at least 2 reasons)

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.

What is the main difference between Burn-up and Burn-down charts?

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.

You might also like