This document provides an overview of agile methodology and several agile frameworks. It begins with a brief history of the traditional waterfall model and its limitations. It then introduces the agile manifesto and some core agile principles. Several agile frameworks are described at a high level, including scrum, kanban, extreme programming, and others. Key practices of scrum and extreme programming like iterations, user stories, stand-up meetings, and test-driven development are defined. The document aims to give the reader a broad understanding of agile concepts and some of the most commonly used agile frameworks and practices.
The document provides an overview of Agile methodology and Scrum framework. It describes that Agile is an alternative project management approach that uses short iterative cycles called sprints to incrementally deliver working software. Scrum is the most commonly used Agile framework and involves roles of Product Owner, Scrum Master, and team. It uses artifacts like Product Backlog and Sprint Backlog and events like Sprint Planning, Daily Scrum, and Sprint Review.
This document provides an overview of agile methodology for software development. It discusses how agile practices arose in response to the limitations of traditional waterfall approaches. The core principles of agile include valuing individuals and interactions, working software, customer collaboration, and responding to change. Agile methods embrace changing requirements, frequent delivery of working software, collaboration between business and technical teams, self-organizing teams, and continuous improvement.
This presentation introduces agile methodology, talks about scrum and the pros and cons of agile from a various perspectives. It also talks about cost of an agile project
Scrum is a framework for managing product development that divides work into sprints. Key roles include the Product Owner who manages the product backlog, the Development Team who does the work, and the Scrum Master who facilitates the process. The team holds regular stand-up meetings, sprint planning meetings, sprint reviews, and retrospectives. They track progress using artifacts like the product backlog, sprint backlog, and burndown charts. The framework aims to be transparent, inspect progress frequently, and adapt as needed.
Scrum is an agile framework for managing product development that uses short cycles of work called sprints to incrementally build a product. Key aspects of scrum include self-organizing cross-functional teams, a product backlog maintained by a product owner, and regular sprints, daily scrums, sprint planning and retrospectives to facilitate collaboration and continuous improvement. Scrum provides principles for iterative development and adaptation to change throughout the product life cycle.
Agile software development is an iterative approach that emphasizes collaboration between self-organizing teams. It promotes adaptive planning, evolutionary development, and rapid response to change. Key characteristics include breaking work into small increments, short iterations of 1-4 weeks with full development cycles, cross-functional teams without hierarchy, and face-to-face communication. Agile differs from traditional methods by focusing more on collaboration and working software than documentation. Common challenges to adopting agile include getting individuals to work as cohesive teams and increasing transparency.
The Values and Principles of Agile Software DevelopmentBrad Appleton
The document discusses the values and principles of agile software development. It begins by introducing the presenter and their experience and background. It then outlines the core values of agile development as defined in the Agile Manifesto: individuals and interactions, working software, customer collaboration, and responding to change. The document continues by explaining that principles guide behavior towards upholding these values. It proceeds to define several key agile principles in more detail, including continuous delivery of customer value, welcoming change, and collaborating daily across functions.
The document provides an overview of Agile development and Scrum methodology. It discusses key Agile concepts like the Agile Manifesto, Scrum roles and artifacts, timeboxing, and metrics like velocity and burndowns. It also addresses adopting Agile, working with requirements and QA, and challenges of offshore development in an Agile model.
Introduction to the scrum framework: roles, activities and artifacts.
Scrum is an agile methodology for project management, to create a high quality product.
www.nieldeckx.be
This document provides an overview of Scrum and its key concepts. It introduces Scrum as an Agile methodology used to manage product development. The document outlines the Scrum process including sprints, daily stand-ups, sprint planning and reviews. It describes Scrum roles like Product Owner and Scrum Master and artifacts like the product and sprint backlogs. Charts are presented to track work like burndowns and velocity. The document aims to explain how Scrum can help teams adapt to change and deliver working software frequently.
Learn the basics of the agile way-of-life that has helped many companies realize their potential in the market. The agile secret sauce was once a thing that was only enjoyed by software organizations on the East and West coasts, but is now invading Indianapolis -- increasing productivity, making teams empowered (and happier!), and helping managers focus less on the taskmaster role and more on the important stuff.
This document provides an overview of Agile methodology and Scrum framework. It defines key Agile concepts like iterations called sprints and artifacts like product backlog, sprint backlog, and product increment. It describes Scrum roles of product owner, Scrum master, and team. It outlines Scrum activities like sprint planning, daily scrum, sprint review, and retrospective. Finally, it discusses tools like task boards and burn down charts used to provide transparency and track progress.
The "2017 Scrum by Picture" is something you can call Scrum Guide illustrated. It is based on the newest version of "Scrum Guide".
You will find the theory, scrum values, scrum team, scrum events including sprint, sprint planning, daily scrum, review and retrospective as well as scrum artifacts. All of those is explained in easy to follow, illustrated nicely presentation, which can assist you to catch the idea behind Scrum.
Feel free to share "2017 Scrum by Picture" with your Scrum friends.
Scrum 101 Learning Objectives:
1. Waterfall project methodology basics - what is waterfall and where did it come from?
2. Agile umbrella practices and frameworks - what is agile? what isn't agile? Where does Scrum fit in?
3. Scrum empirical theory - emperical vs. theoretical
4. Parts of the Scrum framework - roles, events / ceremonies, artifacts and rules
5. Features of cultures that use Scrum
The document provides an overview of agile methodology and scrum framework. It begins with a short history of traditional waterfall software development processes and their limitations. It then introduces the agile manifesto and values, as well as the 12 agile principles. A key part of agile is iterative development with short sprints. Scrum is discussed as one of the major agile frameworks, outlining its ceremonies like sprint planning, daily standups, and retrospectives. Scrum roles of product owner, scrum master, and self-organizing team are also summarized.
This document provides an overview of Agile project management principles and practices. It begins with introductions of the presenter and their experience in Agile software development. It then discusses various project methodologies like Waterfall, Kanban, Scrum, and Test Driven Development. Key Agile principles are outlined from the Agile Manifesto. The roles of Product Owner, Scrum Master, and development team are defined. Practices like sprint planning, daily standups, reviews and retrospectives are described. The document aims to provide a high-level introduction to Agile concepts, roles and processes.
Scrum is an agile framework for managing product development. It defines three roles - Scrum Master, Product Owner, and Development Team - and three artifacts - Product Backlog, Sprint Backlog, and Product Increment. It also includes five ceremonies - Product Backlog Refinement, Sprint Planning, Daily Scrum, Sprint Review, and Sprint Retrospective. Scrum was first defined in 1986 and evolved through the 1990s, with Ken Schwaber and Jeff Sutherland formalizing the method in 2001 in their book Agile Software Development with Scrum.
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
1. Agile development and Extreme Programming (XP) are methodologies that focus on iterative development, collaboration, and adaptability.
2. XP consists of 12 key practices including simple design, test-driven development, pair programming, and small releases. It aims to improve quality, reduce risks, and adapt to changing requirements.
3. While XP works well for some projects and teams, its practices may not be suitable or flexible enough for all situations. Developers should understand the principles behind XP and tailor practices as needed for their specific projects.
The document provides an overview of agile methodology compared to traditional waterfall methodology. Waterfall development completes each phase sequentially before moving to the next, which can be risky and inefficient. Agile is iterative and adaptable, prioritizing working software over documentation. Scrum is an agile framework that uses short sprints, daily stand-ups, and backlogs to deliver working software frequently. Kanban also uses iterative development but visualizes workflows on boards to limit work in progress and optimize lead times.
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...Roberto Pérez Alcolea
It is well known that organizations connect software testing with software quality: making sure that the code does what it supposed to do.
Unfortunately, many organizations believe that testing is a slow process that causes stagnancy in the project. Organizations say that due to slow testing process they are not able to meet set milestones, but it doesn’t have to be this way.
The testing stage is also part of the developer experience, and making it such that engineers are productive and continue delivering software not only fast but with confidence is crucial.
In this talk, we will explore a few approaches that we are taking in order to deliver a more consistent and delightful testing experience for JVM engineers at Netflix. The end goal: speed up engineers’ feedback loop by running tests locally constantly as much as possible.
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
The document discusses Agile development and Extreme Programming (XP). It provides an overview of 12 key practices of XP, including planning games, small releases, test-driven development, pair programming, collective ownership, continuous integration and 40-hour work weeks. It also discusses how XP aims to solve software engineering problems through intensive teamwork, handling changes and staff turnover, and involving customers.
Cucumber and RSpec are testing tools used in behavior-driven development and test-driven design. Cucumber tests user stories written in a business-readable language and converts them to automated acceptance tests. RSpec is a testing framework that allows writing unit tests in a domain-specific language. Together, Cucumber and RSpec support a test-first approach to agile software development where user requirements are tested through acceptance tests before code is written to pass unit tests.
The document provides an overview of agile software development and extreme programming (XP) practices from the perspective of a software developer. It discusses key aspects of agile development including:
- The core values of agile like communication, simplicity, feedback, courage, and respect.
- XP practices like test-driven development, pair programming, continuous integration, refactoring, and small frequent releases that support the agile values.
- How agile methods differ from traditional waterfall approaches in emphasizing feedback, adapting to change, and delivering working software frequently.
- Factors that can enable or hinder effective agile teams like unit testing, refactoring, communication, and collective code ownership.
The document provides an introduction to agile software development processes. It discusses the waterfall model and iterative and incremental model. It then defines agile as a collection of iterative development methodologies that are lightweight and value individuals, interactions, working software, and responding to change. The document outlines agile principles and practices like user stories, story points, test-driven development, pair programming, daily stand-up meetings, story boards, burn down charts, continuous integration, and retrospectives. It concludes with feedback from an agile team noting benefits like earlier defect detection but also challenges in applying new techniques and lack of product management involvement.
This document provides an overview of agile methodology and compares it to traditional waterfall development processes. It describes how agile is iterative and adaptive rather than moving in sequential phases. Specific agile frameworks like Scrum and Kanban are then explained. Scrum uses short sprints, daily stand-ups, and prioritized backlogs. Kanban uses visualization, limits work-in-progress, and aims to eliminate waste. Both frameworks emphasize iterative development, collaboration, and responding to change over rigid plans.
Managing a team and project are quite synonymous. Especially, teams require effective distribution of responsibility / roles. Once that is setup, a proper process guides people to make progress. All this fits into a product lifecycle, which is essential to develop the right product, in the right way, and deliver it at the right time.
This document provides an overview of Extreme Programming (XP), an agile software development methodology. It discusses XP's history and features, which include short 2-week development cycles, pair programming, test-driven development, and frequent refactoring. The core principles of XP are also examined, such as incremental planning, small releases, simple design, and sustainable pace. Various phases of the XP process are outlined, from exploration to productionizing. Requirements are captured as scenarios and prioritized by the customer. Automated testing is a key practice in XP. Both advantages like collective code ownership and disadvantages like its unsuitability for large projects are noted.
This document provides an overview of agile software development. It discusses the differences between the waterfall model and agile approaches. The key principles of agile include prioritizing individuals and interactions, working software, customer collaboration, and responding to change. An example agile process used by Elsevier is described, involving roles like product owners, business analysts, developers, and quality analysts. Extreme programming is mentioned as an agile method that focuses on user stories, small releases, pair programming, unit testing, and simplicity.
The document provides an overview of the Rational Unified Process (RUP) and Extreme Programming (XP). RUP is a configurable software development process that uses iterative development, UML modeling, and documentation of artifacts. It consists of four main phases - inception, elaboration, construction, and transition. XP is an agile methodology based on values of communication, simplicity, feedback, and courage, and practices like planning games, test-driven development, pair programming, and frequent integration.
The document discusses the software development process and defines key terms. It states that a software process organizes development activities and includes roles, workflows, procedures and standards. Following a defined process makes software development more orderly, predictable and repeatable. However, some view following a process as unnecessary overhead. The reality is that not following a process can lead to more rework that outweighs any initial time savings. The document also discusses software life cycle models, such as waterfall and iterative models, and how a good process is repeatable, predictable, adaptable, learnable and measurable.
This document proposes adopting an iterative development methodology that borrows from agile techniques like Scrum and XP. It suggests dividing projects into shorter 30-day iterations, with features estimated and designed at the start of each iteration. At the end of an iteration, working code would be completed along with automated testing. This approach aims to provide more accurate estimates, earlier feedback, better designed features, and more predictable development cycles compared to the current waterfall model. Key aspects to retain include code reviews, continuous integration, testing, and transparency of work.
Learn about Agile Methodology of Software Engineering and study concepts like What is Agile, Why Agile is there, Agile Principles, Agile Manifesto with Pros & Cons of it.
Presentation also include Agile Testing Methodology like Scrum, Crystal Methodologies, DSDM, Feature Driven Development, Lean Software Development & Extreme Programming.
If you watch this one please rate it and do share this presentation to others so then can easily learn more about the Agile Methodology.
Continuous Delivery is a software development practice where code changes are automatically tested, built, and prepared for a release. The key principles are:
1) Make small, incremental code changes continuously that are always ready for production.
2) Automate testing, building, and deploying to reduce risk and make releases boring.
3) Use feature toggles to deploy incomplete features and control their rollout.
This allows software to be updated and released frequently in a sustainable way by catching issues early and improving quality. It is a cultural change that requires investment but provides benefits like faster feedback and the ability to respond quickly to demands.
This document discusses different software development methodologies and frameworks. It provides an overview of the waterfall model and its limitations. Agile methodologies like Scrum are presented as more flexible alternatives that emphasize collaboration, adaptation to change, and working software over documentation. The document also discusses tools like Microsoft ALM, Visual Studio, and Team Foundation Server that can help implement agile practices.
The document describes the Extreme Programming (XP) model, an agile software development methodology created by Kent Beck. It discusses the key assumptions and practices of XP, including short iterative development cycles, frequent integration and testing, pair programming, and prioritizing customer feedback. The advantages are reducing costs and risks through simplicity, spreading work across the team. Disadvantages include potential lack of upfront design and measurement of quality assurance.
Software Engineering and Project Management - Introduction to Project ManagementPrakhyath Rai
Introduction to Project Management: Introduction, Project and Importance of Project Management, Contract Management, Activities Covered by Software Project Management, Plans, Methods and Methodologies, some ways of categorizing Software Projects, Stakeholders, Setting Objectives, Business Case, Project Success and Failure, Management and Management Control, Project Management life cycle, Traditional versus Modern Project Management Practices.
20CDE09- INFORMATION DESIGN
UNIT I INCEPTION OF INFORMATION DESIGN
Introduction and Definition
History of Information Design
Need of Information Design
Types of Information Design
Identifying audience
Defining the audience and their needs
Inclusivity and Visual impairment
Case study.
Understanding Cybersecurity Breaches: Causes, Consequences, and PreventionBert Blevins
Cybersecurity breaches are a growing threat in today’s interconnected digital landscape, affecting individuals, businesses, and governments alike. These breaches compromise sensitive information and erode trust in online services and systems. Understanding the causes, consequences, and prevention strategies of cybersecurity breaches is crucial to protect against these pervasive risks.
Cybersecurity breaches refer to unauthorized access, manipulation, or destruction of digital information or systems. They can occur through various means such as malware, phishing attacks, insider threats, and vulnerabilities in software or hardware. Once a breach happens, cybercriminals can exploit the compromised data for financial gain, espionage, or sabotage. Causes of breaches include software and hardware vulnerabilities, phishing attacks, insider threats, weak passwords, and a lack of security awareness.
The consequences of cybersecurity breaches are severe. Financial loss is a significant impact, as organizations face theft of funds, legal fees, and repair costs. Breaches also damage reputations, leading to a loss of trust among customers, partners, and stakeholders. Regulatory penalties are another consequence, with hefty fines imposed for non-compliance with data protection regulations. Intellectual property theft undermines innovation and competitiveness, while disruptions of critical services like healthcare and utilities impact public safety and well-being.
Development of Chatbot Using AI/ML Technologiesmaisnampibarel
The rapid advancements in artificial intelligence and natural language processing have significantly transformed human-computer interactions. This thesis presents the design, development, and evaluation of an intelligent chatbot capable of engaging in natural and meaningful conversations with users. The chatbot leverages state-of-the-art deep learning techniques, including transformer-based architectures, to understand and generate human-like responses.
Key contributions of this research include the implementation of a context- aware conversational model that can maintain coherent dialogue over extended interactions. The chatbot's performance is evaluated through both automated metrics and user studies, demonstrating its effectiveness in various applications such as customer service, mental health support, and educational assistance. Additionally, ethical considerations and potential biases in chatbot responses are examined to ensure the responsible deployment of this technology.
The findings of this thesis highlight the potential of intelligent chatbots to enhance user experience and provide valuable insights for future developments in conversational AI.
Exploring Deep Learning Models for Image Recognition: A Comparative Reviewsipij
Image recognition, which comes under Artificial Intelligence (AI) is a critical aspect of computer vision,
enabling computers or other computing devices to identify and categorize objects within images. Among
numerous fields of life, food processing is an important area, in which image processing plays a vital role,
both for producers and consumers. This study focuses on the binary classification of strawberries, where
images are sorted into one of two categories. We Utilized a dataset of strawberry images for this study; we
aim to determine the effectiveness of different models in identifying whether an image contains
strawberries. This research has practical applications in fields such as agriculture and quality control. We
compared various popular deep learning models, including MobileNetV2, Convolutional Neural Networks
(CNN), and DenseNet121, for binary classification of strawberry images. The accuracy achieved by
MobileNetV2 is 96.7%, CNN is 99.8%, and DenseNet121 is 93.6%. Through rigorous testing and analysis,
our results demonstrate that CNN outperforms the other models in this task. In the future, the deep
learning models can be evaluated on a richer and larger number of images (datasets) for better/improved
results.
Response & Safe AI at Summer School of AI at IIITHIIIT Hyderabad
Talk covering Guardrails , Jailbreak, What is an alignment problem? RLHF, EU AI Act, Machine & Graph unlearning, Bias, Inconsistency, Probing, Interpretability, Bias
A vernier caliper is a precision instrument used to measure dimensions with high accuracy. It can measure internal and external dimensions, as well as depths.
Here is a detailed description of its parts and how to use it.
Literature Reivew of Student Center DesignPriyankaKarn3
It was back in 2020, during the COVID-19 lockdown Period when we were introduced to an Online learning system and had to carry out our Design studio work. The students of the Institute of Engineering, Purwanchal Campus, Dharan did the literature study and research. The team was of Prakash Roka Magar, Priyanka Karn (me), Riwaz Upreti, Sandip Seth, and Ujjwal Dev from the Department of Architecture. It was just a scratch draft made out of the initial phase of study just after the topic was introduced. It was one of the best teams I had worked with, shared lots of memories, and learned a lot.
Unblocking The Main Thread - Solving ANRs and Frozen FramesSinan KOZAK
In the realm of Android development, the main thread is our stage, but too often, it becomes a battleground where performance issues arise, leading to ANRS, frozen frames, and sluggish Uls. As we strive for excellence in user experience, understanding and optimizing the main thread becomes essential to prevent these common perforrmance bottlenecks. We have strategies and best practices for keeping the main thread uncluttered. We'll examine the root causes of performance issues and techniques for monitoring and improving main thread health as wel as app performance. In this talk, participants will walk away with practical knowledge on enhancing app performance by mastering the main thread. We'll share proven approaches to eliminate real-life ANRS and frozen frames to build apps that deliver butter smooth experience.
3. traditional approach
to software development
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Waterfall Development is
another name for the more
Waterfall Development
4. Waterfall Development (contd..)
You complete one phase (e.g. design) before moving
on to the next phase (e.g. development)
You rarely aim to re-visit a ‘phase’ once it’s
completed. That means, you better get whatever
you’re doing right the first time!
5. This approach is highly risky, often more costly and
generally less efficient than Agileapproaches
REQUIREMENTS
DESIGN
DEVELOPMENT
TESTING
MAINTENANCE
Takes too long
Changes
Skipped
You don’t realize any value until
the end of the project
You leave the testing until the end
You don’t seek approval from the
stakeholders until late in the day
But…
7. Individuals and interactions over
processes and tools
Working software over comprehensive
documentation
Customer collaboration over
contract negotiation
Responding to change over
following a plan
Agile Manifesto
8. Agile Umbrella
Agile
Crystal
XPScrum
DSDM
FDD
Kanban RUP
RUP (120+)
XP (13)
Scrum (9)
Kanban (3)
Do Whatever!! (0)
More Prescriptive
More Adaptive
and few more…
* Check wikipedia for list of all Agile methods
RUP has over 30 roles, over 20
activities, and over 70 artifacts
more rules to follow
fewer rules to follow
9. Agile Methodologies
• eXtreme Programming (XP)
• Scrum
• Crystal family of methodologies
• Feature-Driven Development (FDD)
• Adaptive Software Development (ASD)
• Dynamic System Development Model (DSDM)
• Agile Unified Process (AUP)
10. ScrumA light-weight agile process tool
Split your organization
into small, cross-functional, self-
organizing teams.
Split your work into a list of small, concrete deliverables.
Sort the list by priority and estimate the relative effort of each
item.
Scrum Team
Scrum Master
Product/ Project
Owner
11. Split time into short fixed-length iterations/ sprints (usually 2 – 4
weeks), with potentially shippable code demonstrated after each
iteration.
Scrum (contd..)
January May
Optimize the release plan and update priorities in
collaboration with the customer, based on insights gained by
inspecting the release after each iteration.
Optimize the process by having a retrospective after each
iteration.
14. Things we do in Scrum
The project/ product is described as a list of features: the backlog.
The features are described in terms of user stories.
The scrum team estimates the work associated with each story.
Features in the backlog are ranked in order of importance.
Result: a ranked and weighted list of product features, a
roadmap.
Daily scrum meeting to discuss What did you do y’day? What
will you do today? Any obstacles?
Scrum terminologies
15. Scrum Artifacts
Iteration/ Sprint 1 Iteration/ Sprint 2
Sample Userstory
Efforts
10hrsEfforts: 2hrs IA, 6hrs Development, 2hrs Testing
The total effort each iteration can
accommodate leads to number
of user story per iteration
One release may contains number of iterations
Release
16. Scrum planning example
Iteration cycle of 3 weeks
Working hours per day is 8 120hrs
Total hours of work iteration can
accommodate
8hrs x 5days x 3weeks =
Product backlog of 20 stories
Each story effort is 10 hrs
Iteration backlog or number of stories per iteration
12 user story
17. Scrum in a nutshell
So instead of a large group spending a long time building a
big thing, we have a small team spending a short time
building a small thing.
But integrating regularly to see the whole.
19. KanbanLean approach to agile development
Similar to Scrum in the sense that you focus on features as
opposed to groups of features – however Lean takes this
one step further again.
You select, plan, develop, test and deploy one
feature (in its simplest form) before you select, plan,
develop, test and deploy the next feature.
Aim is to eliminate ‘waste’ wherever possible…
20. Kanban (contd…)
Visualize the workflow
Limit WIP (work in progress)
Split the work into pieces, write each
item on a card and put on the wall
Use named columns to illustrate where
each item is in the workflow
Assign explicit limits to how many items may be in progress at each stage
Measure the lead time (average time to complete one item,
sometimes called “cycle time”)
Optimize the process to make lead time as small and predictable as possible
23. Extreme Programming
• Most prominent Agile Software development
method
• Prescribes a set of daily stakeholder practices
• “Extreme” levels of practicing leads to more
responsive software.
• Changes are more realistic, natural,
inescapable.
25. The XP Guru: Kent Beck
• eXtreme Programming
– The most prominent agile development
methodology
27. The 12 Key Practices
• The Planning Game
• Small Releases
• Metaphor
• Simple Design
• Test-Driven Development
• Refactoring
• Pair Programming
• Collective Ownership
• Continuous Integration
• 40-Hour Workweek
• On-site Customer
• Coding Standards
28. 1. Metaphor
• Guide all development and conversations with a
simple shared story of how the whole system
works
– Gives the team a whole picture of describing the
system, where new parts fit, etc.
• Words used to identify technical entities should be
chosen from the metaphor
• The default metaphor is the business domain, and
it’s usually just fine
29. How It Works for Me?
• Metaphors are good idea
• People should know the business needs and how
their work fits in the project
30. 2. Release Planning
• Requirements via User Stories
– Short cards with natural language description of
what a customer wants
– Prioritized by customer
• Resource and risk estimated by developers
– Via “The Planning Game”
• Play the Planning Game after each increment
32. How It Works for Me?
• Requirements specification (SRS) is better than
user stories
– Written documentation works well for large
projects
• I prefer prototyping the user interface as source
of documentation
• Sometimes its is hard to estimate the required
resources
• Small releases have less risk
33. 3. Testing
• Test-Driven Development (TDD)
– Write tests before code
– Tests are automated
– Often use xUnit framework
– Must run at 100% before proceeding
• Acceptance Tests
– Written with the customer
– Acts as “contract”
– Measure of progress
34. Test-Driven Development
• Developers write unit tests before coding
• Motivates coding
– Improves design
– Provides regression tests
– Provides specification by example
public void TestMultiplication() {
Dollar five = Money.dollar(5);
AssertEqual(new Dollar(10), five.times(2));
AssertEqual(new Dollar(15), five.times(3));
}
35. How It Works for Me?
• TDD is good for most projects, not for all
– The real world is different: you always need the
functionality "for tomorrow"!
• I use unit testing for complex logic only
– Testing simple logic is overhead
36. 4. Pair Programming
• Two software engineers work on one task at
one computer
– The driver has control of the keyboard and mouse
and creates the implementation
– The navigator watches the driver’s implementation
• Identifies defects and participates in on-demand
brainstorming
– The roles of driver and observer are periodically
rotated
37. Pair Programming
• Pairs produce higher quality code
• Pairs complete their tasks faster
• Pairs enjoy their work more
• Pairs feel more confident in their work
38. How It Works for Me?
• Pair programming is great for complex and critical
logic
– When developers need good concentration
– Where quality is really important
– Especially during design
– Reduces time wasting
• Trivial tasks can be done alone
• Peer reviews instead pair programming is often
alternative
39. 5. Refactoring
• Improve the design of existing code without
changing its functionality
– Relies on unit testing to ensure the code is not
broken
• Bad smells in code:
– Long method / class
– Duplicate code
– Methods does several different things (bad
cohesion)
– Too much dependencies (bad coupling)
– Complex / unreadable code
40. How It Works for Me?
• Delivering working software faster is important!
– You can write the code to run somehow
• With simple design
• With less effort
– Later you can refactor the code if necessary
• Refactoring is not a reason to intentionally write
bad code!
– Good coding style is always important!
41. 6. Simple Design
• No Big Design Up Front (BDUF)
– Reduces the overhead
– Ship working functionality faster and get feedback
early
• “Do The Simplest Thing That Could Possibly
Work”
– Later use refactoring to change it
• Not too much formal documentation
42. How It Works for Me?
• Simple design does not mean "no design"
–It is about establishing priorities
–It's a set of tradeoffs you make
–If something is important for this release
and for the whole system, it should be
designed well
–Don't lose time to design something you
will not use soon!
43. 7. Collective Code Ownership
• Code to belongs to the project, not to an
individual engineer!
• Any engineer can modify any code
• Better quality of the code
• Engineers are not required to work around
deficiencies in code they do not own
– Faster progress
– No need to wait for someone else to fix
something
45. How It Works for Me?
• Collective code ownership is absolutely
indispensable
– You need to fight the people who don't agree with
this!
– Fire people writing unreadable and unmaintainable
code
– Don't allow somebody to own some module and be
irreplaceable
46. 8. Continuous Integration
• Pair writes up unit test cases and code for a task
(part of a user story)
• Pair unit tests code to 100%
• Pair integrates
• Pair runs ALL unit test cases to 100%
• Pair moves on to next task with clean slate and
clear mind
• Should happen once or twice a day
47. How It Works for Me?
• Integrating often is really valuable
– Sometimes you cannot finish a task for one day and
integrate it
– For small projects with small teams integration is
not an issue
– For large and complex projects it's crucial
• Think of automated build environment
48. 9. On-Site Customer
• Customer available on site
– Clarify user stories
– Make critical business decisions
• Developers don’t make assumptions
• Developers don’t have to wait for decisions
• Face to face communication minimizes the
chances of misunderstanding
49. How It Works for Me?
• On-site customer actually does not work!
– Customers are busy
• Meetings every day is working better
– Customers are not competent!
• Customers always say "Yes, this is what I want"
and later say the opposite
• You need to think instead of them
• Use prototyping
50. 10. Small Releases
• Timeboxed
• As small as possible, but still delivering
business value
– No releases to ‘implement the database’
• Get customer feedback early and often
• Do the planning game after each iteration
– Do they want something different?
– Have their priorities changed?
51. How It Works for Me?
• Small releases are really valuable
– Manage the risk of delivering something wrong
– Helps the customer to define better requirements
• Release every few weeks
• Large projects are not so flexible
– Try to release something, even you know that it will
be changed
52. 11. Forty-Hour Work Week
• Kent Beck says, “ . . . fresh and eager every
morning, and tired and satisfied every night”
• Burning the midnight oil kills performance
• Tired developers make more mistakes
– Slows you down more in the long run
• If you mess with people’s personal lives (by taking
it over), in the long run the project will pay the
consequences
53. How It Works for Me?
• 40 hours a week or 40 hours without a sleep?
– Come back to the real world!
– Overtime is not recommendable but often can not
be avoided
• Better planning can help
• Highly skilled senior engineers always suffer of
overtime and high pressure
– That's how the business works!
54. 12. Coding Standards
• Use coding conventions
– Rules for naming, formatting, etc.
– Write readable and maintainable code
• Method commenting
– Self-documenting code
– Don't comment bad code, rewrite it!
• Refactor to improve the design
• Use code audit tools (FxCop, CheckStyle, TFS)
55. How It Works for Me?
• Coding standards are important
– Enforce good practices to whole the team – tools,
code reviews, etc.
• Standards should be simple
– Complex standards are not followed
– Standards should be more strict for larger teams
– Developers don't like utter rules like "comment any
class member"
56. The 13th Practice?
The Stand Up Meeting
• Start the day with 15-minute meeting
– Everyone stands up (so the meeting stays short) in
circle
– Going around the room everyone says specifically:
• What they did the day before
• What they plan to do today
• Any obstacles they are experiencing
– Can be the way pairs are formed
57. People Communicate Most Effectively Face-to-
Face
Richness of the communication channel
Communicationeffectiveness
2 people at
whiteboard
2 people
on phone
2 people
on email
Videotape
Paper
58. How XP Solve Some SE Problems
Problem Solution
Slipped schedule Short development cycles
Cancelled project Intensive customer presence
Cost of changes
Extensive, ongoing testing,
system always running
Defect rates Unit tests, customer tests
Misunderstand the
business
Customer part of the team
Business changes Changes are welcome
Staff turnover Intensive teamwork
59. So What does XP Apply to?
• Domains with changing requirements
• High-risk projects (including those with high
schedule risk)
• Small project team: 2 – 12 programmers
– Cannot be used with a large team
• Extended development team
– Developers, managers and customer
– Co-located
• Automated testability
60. Agile Unified Process
• AUP is a simplified version of RUP
Phases of AUP
Inception
Elaboration
Construction
Transition
61. Disciplines of AUP
Model
Implementation
Test
Deployment
Configuration Management
Project Management
Environment
The meanings of the Manifesto items on the left within the agile software development context are described below.
Individuals and Interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.Responding to change – agile development is focused on quick responses to change and continuous development
Prescriptive means “more rules to
follow” and adaptive means “fewer rules to follow”.