This document provides an overview of Scrum, an agile software development process. It discusses the history and principles of Scrum, key roles like Product Owner and Scrum Master, artifacts like the Product and Sprint Backlogs, and the Scrum process which involves sprints, daily stand-ups, and sprint reviews. Advantages include delivering working software frequently in short iterations, while disadvantages include potential high implementation costs and training needs. In conclusion, Scrum offers flexibility and a high chance of project success when implemented properly.
Agile software development and extreme Programming Fatemeh Karimi
This document discusses Agile development and eXtreme Programming (XP). It describes XP as an Agile methodology that focuses on frequent delivery of working software through practices like test-driven development, pair programming, and continuous integration. The document outlines the 12 key practices of XP like planning games, simple design, refactoring, and on-site customers. It notes advantages of XP like increased customer focus and quality, and disadvantages like potential issues with certain team members or inflexible requirements.
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.
Agile Development | Agile Process ModelsAhsan Rahim
Agile Development | Agile Process Models
Here you are going to know What is Agile Development & What are Agile Process Models for the development of Software Product.
What are different types of Agile Development, steps involve in Agile Development, XP, Scrum, Traditional Process Models with full text and animated description.
Software Process Models defines a distinct set of activities, actions, tasks, milestones, and work products that are required to engineer high-quality software...
For more knowledge watch full video...
Video URL:
https://youtu.be/3Lxnn0O3xaM
YouTube Channel URL:
https://www.youtube.com/channel/UCKVvceV1RGXLz0GeesbQnVg
Google+ Page URL:
https://plus.google.com/113458574960966683976/videos?_ga=1.91477722.157526647.1466331425
My Website Link:
http://appsdisaster.blogspot.com/
If you are interested in learning more about topics like this so Please don't forget to like, share, & Subscribe to us.
This document provides an introduction and overview of eXtreme Programming (XP), an agile software development methodology. It discusses what XP is, its history and origins, core values and principles, practices, and components like the whole XP team. Key aspects of XP covered include pair programming, short development cycles, test-first development, simple design, frequent integration and feedback. The document aims to explain the philosophy and mechanics of the XP methodology.
This document provides an overview of Agile software development principles and practices. It discusses:
- The problems with traditional waterfall software development approaches
- The evolution and principles of Agile development as outlined in the Agile Manifesto
- Key Agile practices like Scrum, product backlogs, sprints, and sprint planning meetings
- Tips for writing good user stories and splitting stories into smaller tasks
- The typical lifecycle of activities in a Scrum project including release planning, iterations (sprints), daily stand-ups, sprint reviews and retrospectives
The document provides an overview of Agile project management. It discusses the history and origins of Agile, which began in 2001 when 17 software development pioneers created the Agile Manifesto. It defines Agile as an iterative approach to software delivery that builds incrementally from user stories prioritized in two-week sprints. The document outlines the key principles of Agile methodology including Scrum framework with roles of Product Owner, Scrum Master, and development team. It compares the Waterfall and Agile approaches and describes the Scrum process, artifacts, and ceremonies used in Agile development.
6 basic steps of software development processRiant Soft
The document outlines the six basic stages of the software development life cycle: 1) Requirement gathering and analysis, 2) System analysis, 3) System design, 4) Coding, 5) Testing, and 6) Implementation. It describes each stage in the process, from gathering requirements from stakeholders to implementing the final tested software. An effective software development life cycle ensures quality and correctness through rigorous testing and design at each stage of building the software.
Software testing is an important phase of the software development process that evaluates the functionality and quality of a software application. It involves executing a program or system with the intent of finding errors. Some key points:
- Software testing is needed to identify defects, ensure customer satisfaction, and deliver high quality products with lower maintenance costs.
- It is important for different stakeholders like developers, testers, managers, and end users to work together throughout the testing process.
- There are various types of testing like unit testing, integration testing, system testing, and different methodologies like manual and automated testing. Proper documentation is also important.
- Testing helps improve the overall quality of software but can never prove that there
This document provides an overview of agile methodology and compares it to traditional waterfall development. It describes waterfall development as a sequential process with distinct phases completed one after another. Agile approaches like Scrum and Kanban are presented as more iterative and adaptive alternatives that focus on delivering working software frequently in short cycles through self-organizing cross-functional teams. Key aspects of Scrum like sprints, daily stand-ups, and product backlogs are defined. Kanban emphasizes visualizing and limiting work in progress to optimize flow. Both aim to incorporate feedback and respond rapidly to changes over rigidly following pre-defined plans.
Testing is the process of identifying bugs and ensuring software meets requirements. It involves executing programs under different conditions to check specification, functionality, and performance. The objectives of testing are to uncover errors, demonstrate requirements are met, and validate quality with minimal cost. Testing follows a life cycle including planning, design, execution, and reporting. Different methodologies like black box and white box testing are used at various levels from unit to system. The overall goal is to perform effective testing to deliver high quality software.
Agile development focuses on effective communication, customer collaboration, and incremental delivery of working software. The key principles of agile development according to the Agile Alliance include satisfying customers, welcoming changing requirements, frequent delivery, collaboration between business and development teams, and self-organizing teams. Extreme Programming (XP) is an agile process model that emphasizes planning with user stories, simple design, pair programming, unit testing, and frequent integration and testing.
There you can find about definition of agile model.Working of agile model.You can also find where to use agile model.Examples of agile model is also given here.
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.
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
1. Software development life cycle models break down the development process into distinct phases to manage complexity. Common models include waterfall, incremental, evolutionary (like prototyping and spiral), and component-based.
2. The waterfall model follows linear sequential phases from requirements to maintenance. Incremental models iterate through phases. Evolutionary models use prototypes to evolve requirements through customer feedback.
3. The spiral model is an evolutionary model representing phases as loops in a spiral, with risk assessment and reduction at each phase. It aims to minimize risk through iterative development and prototyping.
This slide share will help users to understand the agile software development methodology and how does it work. It also defines the whole process to implement scrum methodology.
The document provides an overview of the Scrum model for agile software development. Scrum divides projects into short sprints of 2-4 weeks to focus development. It utilizes daily stand-up meetings, sprint planning and reviews, and retrospectives. Key roles include the product owner who prioritizes the backlog, the scrum master who facilitates the process, and the cross-functional development team. Scrum aims to provide structure while allowing for flexibility, feedback and adapting to changes.
Extreme Programming (XP) is an agile software development methodology that focuses on rapid feedback, simplicity, communication, and responsiveness to change. The key practices of XP include planning game, small releases, simple design, testing, pair programming, collective ownership, continuous integration, on-site customer, and coding standards. XP aims to improve quality and responsiveness through practices like test-driven development, frequent integration, and refactoring.
The document discusses the principles and practices of extreme programming (XP), an agile software development methodology. It outlines 12 core practices of XP including planning games, small releases, simple design, testing, pair programming, and continuous integration. Benefits include frequent feedback, adapting to change, and delivering working software early. Challenges involve customer availability and determining appropriate levels of documentation and planning.
eXtreme Programming (XP) is an agile software development methodology that aims to improve quality and responsiveness to changing requirements. It consists of values like communication, simplicity, feedback and courage, as well as practices like planning, small releases, testing, pair programming and refactoring. XP attempts to address common software project problems like schedule slips, defects, and inability to adapt to changing business needs. It advocates short iterations, frequent integration and customer feedback to deliver working, tested software rapidly and allow requirements to evolve over time at low cost.
eXtreme Programming (XP) is an agile software development methodology that focuses on rapid software development and delivery through practices like continuous integration, pair programming, and frequent refactoring. It aims to address common software project problems like schedule slips, high defect rates, and changing requirements by having short development cycles, automated testing, and close collaboration between developers and customers. Key XP practices include planning game, small releases, simple design, testing, refactoring, pair programming, and on-site customer involvement. Adopting XP can benefit both developers through better requirements and technical empowerment, and customers through timely delivery of valuable software that can adapt to changes.
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.
Sof tbgffjjdxb. HwvnThe history of software engineering is relatively new, with the first computers being women who computed manually.
The term "software engineering" was first used in the 1960s, and Margaret Hamilton is considered the inventor of the phrase.
Using Agile Processes on Documentum Projectsmufflerdog
Blue Fish Founder Michael Trafton builds a case against the software development methodologies we have been using since the 80s and proposes an alternative.
The document provides an overview of the waterfall model and agile methodologies for software development projects. It discusses:
- The linear sequential phases of the waterfall model and when it is suitable.
- Issues with the waterfall model like inability to handle changes and lack of testing throughout.
- Benefits of agile like ability to adapt to changes, early delivery of working software, and improved success rates.
- Key aspects of the Scrum agile framework like sprints, daily stand-ups, and product backlogs.
- Differences in how development costs are treated as capital expenditures or operating expenses between waterfall, agile, and cloud-based models.
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.
Using Agile Processes on Documentum ProjectsBlueFish
The document discusses using agile processes for Documentum projects. It provides background on the origins of agile methodologies and practices like Extreme Programming (XP). It then discusses how agile is well-suited for Documentum projects due to factors like small teams and internal projects. The document also presents a case study of how one company, Blue Fish, switched from waterfall to a hybrid agile methodology incorporating elements from RUP, XP, Scrum, and Crystal Clear. They realized benefits like higher user adoption, things getting done sooner, and improved management confidence.
This document provides an overview of several agile software development methodologies:
- Extreme Programming (XP) focuses on incremental planning, small releases, simple design, test-first development, refactoring, pair programming, collective ownership, continuous integration, and sustainable pace.
- Adaptive Software Development is cyclical like evolutionary models and involves speculation, collaboration, and learning phases with short iterations.
- Lean development aims to maximize customer value while minimizing waste through practices like eliminating waste, amplifying learning, and continuous improvement.
software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.software design and architecture and its brief description about software patterns as well.
The document discusses agile engineering practices for software development, including user stories/use cases, test-driven development, continuous integration, precise design, merciless refactoring, collective code ownership, coding conventions, pair programming, code reviews, and steps for adopting agile practices. It provides an overview of each practice and emphasizes adopting test-driven development first when transitioning to agile.
1) Complex software is everywhere and software development is difficult, time-consuming, and expensive.
2) There are often large gaps in software development processes which creates risks like inconsistent processes, lack of productivity reporting, and unpredictable development.
3) Visual Studio 2012 aims to address issues in software development through features like integrated testing tools, storyboarding for early feedback, load testing, and monitoring of applications in production.
This document discusses rapid software development methods like agile development and extreme programming (XP). It explains that agile methods use iterative development with customer involvement to quickly deliver working software. XP in particular emphasizes practices like test-driven development, pair programming, and frequent small releases. The document also covers rapid application development tools and the use of prototypes to help define requirements before full system development.
The document discusses various software development processes including traditional/waterfall methods, prototyping, rapid application development, evolutionary/incremental/spiral development, agile methods like extreme programming, formal methods, and fourth generation techniques. It provides details on the characteristics, advantages, and disadvantages of each approach.
Overview of SCRUM development process. I put this together to present to my company/group.
Most slides are "borrowed" from Alan Shalloway's presentation.
The document outlines chapters from a book on developer testing. It discusses working in cross-functional teams and the roles of developers and testers. Developers are responsible for unit testing and some integration testing, while other types of testing like security and performance are usually not done by developers. The document also discusses testing terminology, styles, objectives, and what makes software testable from a developer's perspective. Testability brings benefits like being able to easily verify functionality and make changes without surprises.
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.
Test-driven development (TDD) is a software development process that relies on the repetition of a short development cycle of requirements, design, and coding. It promotes writing tests before writing code (test-first design) and helps improve code quality by reducing defects. The TDD cycle involves writing an automated test, running the test and seeing it fail, writing the minimum amount of code to pass the test, and refactoring the code as needed. TDD brings benefits like clarifying requirements, adding executable documentation, and detecting errors early. Acceptance TDD involves automating acceptance tests to define and validate requirements. It helps establish a definition of done and improves team collaboration.
MYIR Product Brochure - A Global Provider of Embedded SOMs & SolutionsLinda Zhang
This brochure gives introduction of MYIR Electronics company and MYIR's products and services.
MYIR Electronics Limited (MYIR for short), established in 2011, is a global provider of embedded System-On-Modules (SOMs) and
comprehensive solutions based on various architectures such as ARM, FPGA, RISC-V, and AI. We cater to customers' needs for large-scale production, offering customized design, industry-specific application solutions, and one-stop OEM services.
MYIR, recognized as a national high-tech enterprise, is also listed among the "Specialized
and Special new" Enterprises in Shenzhen, China. Our core belief is that "Our success stems from our customers' success" and embraces the philosophy
of "Make Your Idea Real, then My Idea Realizing!"
Quality Patents: Patents That Stand the Test of TimeAurora Consulting
Is your patent a vanity piece of paper for your office wall? Or is it a reliable, defendable, assertable, property right? The difference is often quality.
Is your patent simply a transactional cost and a large pile of legal bills for your startup? Or is it a leverageable asset worthy of attracting precious investment dollars, worth its cost in multiples of valuation? The difference is often quality.
Is your patent application only good enough to get through the examination process? Or has it been crafted to stand the tests of time and varied audiences if you later need to assert that document against an infringer, find yourself litigating with it in an Article 3 Court at the hands of a judge and jury, God forbid, end up having to defend its validity at the PTAB, or even needing to use it to block pirated imports at the International Trade Commission? The difference is often quality.
Quality will be our focus for a good chunk of the remainder of this season. What goes into a quality patent, and where possible, how do you get it without breaking the bank?
** Episode Overview **
In this first episode of our quality series, Kristen Hansen and the panel discuss:
⦿ What do we mean when we say patent quality?
⦿ Why is patent quality important?
⦿ How to balance quality and budget
⦿ The importance of searching, continuations, and draftsperson domain expertise
⦿ Very practical tips, tricks, examples, and Kristen’s Musts for drafting quality applications
https://www.aurorapatents.com/patently-strategic-podcast.html
Sustainability requires ingenuity and stewardship. Did you know Pigging Solutions pigging systems help you achieve your sustainable manufacturing goals AND provide rapid return on investment.
How? Our systems recover over 99% of product in transfer piping. Recovering trapped product from transfer lines that would otherwise become flush-waste, means you can increase batch yields and eliminate flush waste. From raw materials to finished product, if you can pump it, we can pig it.
Implementations of Fused Deposition Modeling in real worldEmerging Tech
The presentation showcases the diverse real-world applications of Fused Deposition Modeling (FDM) across multiple industries:
1. **Manufacturing**: FDM is utilized in manufacturing for rapid prototyping, creating custom tools and fixtures, and producing functional end-use parts. Companies leverage its cost-effectiveness and flexibility to streamline production processes.
2. **Medical**: In the medical field, FDM is used to create patient-specific anatomical models, surgical guides, and prosthetics. Its ability to produce precise and biocompatible parts supports advancements in personalized healthcare solutions.
3. **Education**: FDM plays a crucial role in education by enabling students to learn about design and engineering through hands-on 3D printing projects. It promotes innovation and practical skill development in STEM disciplines.
4. **Science**: Researchers use FDM to prototype equipment for scientific experiments, build custom laboratory tools, and create models for visualization and testing purposes. It facilitates rapid iteration and customization in scientific endeavors.
5. **Automotive**: Automotive manufacturers employ FDM for prototyping vehicle components, tooling for assembly lines, and customized parts. It speeds up the design validation process and enhances efficiency in automotive engineering.
6. **Consumer Electronics**: FDM is utilized in consumer electronics for designing and prototyping product enclosures, casings, and internal components. It enables rapid iteration and customization to meet evolving consumer demands.
7. **Robotics**: Robotics engineers leverage FDM to prototype robot parts, create lightweight and durable components, and customize robot designs for specific applications. It supports innovation and optimization in robotic systems.
8. **Aerospace**: In aerospace, FDM is used to manufacture lightweight parts, complex geometries, and prototypes of aircraft components. It contributes to cost reduction, faster production cycles, and weight savings in aerospace engineering.
9. **Architecture**: Architects utilize FDM for creating detailed architectural models, prototypes of building components, and intricate designs. It aids in visualizing concepts, testing structural integrity, and communicating design ideas effectively.
Each industry example demonstrates how FDM enhances innovation, accelerates product development, and addresses specific challenges through advanced manufacturing capabilities.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/07/intels-approach-to-operationalizing-ai-in-the-manufacturing-sector-a-presentation-from-intel/
Tara Thimmanaik, AI Systems and Solutions Architect at Intel, presents the “Intel’s Approach to Operationalizing AI in the Manufacturing Sector,” tutorial at the May 2024 Embedded Vision Summit.
AI at the edge is powering a revolution in industrial IoT, from real-time processing and analytics that drive greater efficiency and learning to predictive maintenance. Intel is focused on developing tools and assets to help domain experts operationalize AI-based solutions in their fields of expertise.
In this talk, Thimmanaik explains how Intel’s software platforms simplify labor-intensive data upload, labeling, training, model optimization and retraining tasks. She shows how domain experts can quickly build vision models for a wide range of processes—detecting defective parts on a production line, reducing downtime on the factory floor, automating inventory management and other digitization and automation projects. And she introduces Intel-provided edge computing assets that empower faster localized insights and decisions, improving labor productivity through easy-to-use AI tools that democratize AI.
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
UiPath Community Day Kraków: Devs4Devs ConferenceUiPathCommunity
We are honored to launch and host this event for our UiPath Polish Community, with the help of our partners - Proservartner!
We certainly hope we have managed to spike your interest in the subjects to be presented and the incredible networking opportunities at hand, too!
Check out our proposed agenda below 👇👇
08:30 ☕ Welcome coffee (30')
09:00 Opening note/ Intro to UiPath Community (10')
Cristina Vidu, Global Manager, Marketing Community @UiPath
Dawid Kot, Digital Transformation Lead @Proservartner
09:10 Cloud migration - Proservartner & DOVISTA case study (30')
Marcin Drozdowski, Automation CoE Manager @DOVISTA
Pawel Kamiński, RPA developer @DOVISTA
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
09:40 From bottlenecks to breakthroughs: Citizen Development in action (25')
Pawel Poplawski, Director, Improvement and Automation @McCormick & Company
Michał Cieślak, Senior Manager, Automation Programs @McCormick & Company
10:05 Next-level bots: API integration in UiPath Studio (30')
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
10:35 ☕ Coffee Break (15')
10:50 Document Understanding with my RPA Companion (45')
Ewa Gruszka, Enterprise Sales Specialist, AI & ML @UiPath
11:35 Power up your Robots: GenAI and GPT in REFramework (45')
Krzysztof Karaszewski, Global RPA Product Manager
12:20 🍕 Lunch Break (1hr)
13:20 From Concept to Quality: UiPath Test Suite for AI-powered Knowledge Bots (30')
Kamil Miśko, UiPath MVP, Senior RPA Developer @Zurich Insurance
13:50 Communications Mining - focus on AI capabilities (30')
Thomasz Wierzbicki, Business Analyst @Office Samurai
14:20 Polish MVP panel: Insights on MVP award achievements and career profiling
The DealBook is our annual overview of the Ukrainian tech investment industry. This edition comprehensively covers the full year 2023 and the first deals of 2024.
How RPA Help in the Transportation and Logistics Industry.pptxSynapseIndia
Revolutionize your transportation processes with our cutting-edge RPA software. Automate repetitive tasks, reduce costs, and enhance efficiency in the logistics sector with our advanced solutions.
Details of description part II: Describing images in practice - Tech Forum 2024BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and transcript: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsMydbops
This presentation, delivered at the Postgres Bangalore (PGBLR) Meetup-2 on June 29th, 2024, dives deep into connection pooling for PostgreSQL databases. Aakash M, a PostgreSQL Tech Lead at Mydbops, explores the challenges of managing numerous connections and explains how connection pooling optimizes performance and resource utilization.
Key Takeaways:
* Understand why connection pooling is essential for high-traffic applications
* Explore various connection poolers available for PostgreSQL, including pgbouncer
* Learn the configuration options and functionalities of pgbouncer
* Discover best practices for monitoring and troubleshooting connection pooling setups
* Gain insights into real-world use cases and considerations for production environments
This presentation is ideal for:
* Database administrators (DBAs)
* Developers working with PostgreSQL
* DevOps engineers
* Anyone interested in optimizing PostgreSQL performance
Contact info@mydbops.com for PostgreSQL Managed, Consulting and Remote DBA Services
Performance Budgets for the Real World by Tammy EvertsScyllaDB
Performance budgets have been around for more than ten years. Over those years, we’ve learned a lot about what works, what doesn’t, and what we need to improve. In this session, Tammy revisits old assumptions about performance budgets and offers some new best practices. Topics include:
• Understanding performance budgets vs. performance goals
• Aligning budgets with user experience
• Pros and cons of Core Web Vitals
• How to stay on top of your budgets to fight regressions
2. Introduction Extreme Programming?
An agile development methodology XP is “a light-
weight methodology for small to medium-sized
teams developing software in the face of vague or
rapidly changing requirements
It works by bringing the whole team together in the
presence of simple practices, with enough feedback
to enable the team to see where they are and to
tune the practices to their unique situation?
Created by Kent Beck in the mid 1990’s
A set of 12 key practices taken to their “extremes”
A mindset for developers and customers
3. Extreme Programming
Hence XP is a lightweight (agile) process:
Instead of lots of documentation nailing down what
customer wants up front, XP emphasizes plenty of
feedback
Embrace change: iterate often, design and
redesign, code and test frequently, keep the
customer involved
Deliver software to the customer in short (2 week)
iterations
Eliminate defects early, thus reducing costs
8. Four Core Values of XP
Communication
Simplicity
Feedback
Courage
9. XP Practices
The Planning Game
Small Releases
Metaphor
Simple Design
Testing
Refactoring
Pair Programming
Collective Ownership
Continuous Integration
40-Hour Workweek
On-site Customer
Coding Standards
10. The Planning Game
Planning for the upcoming iteration
Uses stories provided by the customer
Technical persons determine schedules, estimates, costs, etc
A result of collaboration between the customer and the
developers
Advantages
Reduction in time wasted on useless features
Greater customer appreciation of the cost of a feature
Less guesswork in planning
Disadvantages
Customer availability
Is planning this often necessary?
11. Small Releases
Small in terms of functionality
Less functionality means releases happen more frequently
Support the planning game
Advantages
Frequent feedback
Tracking
Reduce chance of overall project slippage
Disadvantages
Not easy for all projects
Not needed for all projects
Versioning issues
12. Metaphor
The oral architecture of the system
A common set of terminology
Advantages
Encourages a common set of terms for the system
Reduction of buzz words and jargon
A quick and easy way to explain the system
Disadvantages
Often the metaphor is the system
Another opportunity for miscommunication
The system is often not well understood as a metaphor
13. Simple Design
K.I.S.S (Keep it simple Stupid)
Do as little as needed, nothing more
Advantages
Time is not wasted adding superfluous functionality
Easier to understand what is going on
Refactoring and collective ownership is made possible
Helps keeps programmers on track
Disadvantages
What is “simple?”
Simple isn’t always best
14. Testing
Unit testing
Test-first design
All automated
Advantages
Unit testing promote testing completeness
Test-first gives developers a goal
Automation gives a suite of regression test
Disadvantages
Automated unit testing isn’t for everything
Reliance on unit testing isn’t a good idea
A test result is only as good as the test itself
15. Refactoring
Changing how the system does something but not what is done
Improves the quality of the system in some way
Advantages
Prompts developers to proactively improve the product as a whole
Increases developer knowledge of the system
Disadvantages
Not everyone is capable of refactoring
Refactoring may not always be appropriate
Would upfront design eliminate refactoring?
16. Pair Programming
Two Developers, One monitor, One Keyboard
One “drives” and the other thinks
Switch roles as needed
Advantages
Two heads are better than one
Focus
Two people are more likely to answer the following questions:
Is this whole approach going to work?
What are some test cases that may not work yet?
Is there a way to simplify this?
Disadvantages
Many tasks really don’t require two programmers
A hard sell to the customers
17. Collective Ownership
The idea that all developers own all of the code
Enables refactoring
Advantages
Helps mitigate the loss of a team member leaving
Promotes developers to take responsibility for the system as a
whole rather then parts of the system
Disadvantages
Loss of accountability
Limitation to how much of a large system that an individual can
practically “own”
18. Continuous Integration
New features and changes are worked into the system
immediately
Code is not worked on without being integrated for more
than a day
Advantages
Reduces to lengthy process
Enables the Small Releases practice
Disadvantages
The one day limit is not always practical
Reduces the importance of a well-thought-out architecture
19. 40-Hour Week
The work week should be limited to 40 hours
Regular overtime is a symptom of a problem and not a long
term solution
Advantages
Most developers lose effectiveness past 40-Hours
Value is placed on the developers well-being
Management is forced to find real solutions
Disadvantages
The underlying principle is flawed
40-Hours is a magic number
Some may like to work more than 40-Hours
20. On-Site Customer
Acts to “steer” the project
Gives quick and continuous feedback to the development team
Advantages
Can give quick and knowledgeable answers to real development
questions
Makes sure that what is developed is what is needed
Functionality is prioritized correctly
Disadvantages
Difficult to get an On-Site Customer
The On-Site customer that is given may not be fully knowledgeable about what
the company
May not have authority to make many decisions
Loss of work to the customer’s company
21. Coding Standards
All code should look the same
It should not possible to determine who coded what
based on the code itself
Advantages
Reduces the amount of time developers spend reformatting
other peoples’ code
Reduces the need for internal commenting
Call for clear, unambiguous code
Disadvantages
Degrading the quality of inline documentation
22. Extreme Programming Roles
Customer
Writes User Stories and specifies Functional Tests
Sets priorities, explains stories
May or may not be an end-user
Has authority to decide questions about the stories
Programmer
Estimates stories
Defines Tasks from stories, and estimates
Implements Stories and Unit Tests
Coach
Watches everything, sends obscure signals, makes sure
the project stays on course
Helps with anything
23. XP Roles continued
Tracker
Monitors Programmers’ progress, takes action if things seem to be
going off track.
Actions include setting up a meeting with Customer,
Coach or another Programmer to help
Tester
Implements and runs Functional Tests (not Unit Tests!)
Graphs results, and makes sure people know when test results decline.
Doomsayer
Ensures that everybody knows the risks involved
Ensures that bad news isn't hidden, glossed over, or blown out of
proportion
24. XP Roles continued
Manager
Schedules meetings (e.g. Iteration Plan, Release Plan), makes
sure the meeting process is followed, records results of meeting
for future reporting, and passes to the Tracker
Possibly responsible to the Gold Owner.
Goes to meetings, brings back useful information
Gold Owner
The person funding the project, which may or may not be the
same as the Customer
25. Extreme Programming
Activities
Coding: You code because if you don't code, at the end of the day
you haven't done anything.
Testing: You test because if you don't test, you don't know when
you are done coding
Listening: You listen because if you don't listen you don't know
what to code or what to test
Designing: And you design so you can keep coding and testing and
listening indefinitely (good design allows extension of the system
with changes in only one place)
26. Release Planning Phases
Exploration Phase: In this phase the customer will provide a
shortlist of high-value requirements for the system. These will be
written down on user story cards.
Commitment Phase: Within the commitment phase customer and
developers will commit themselves to the functionality that will be
included and the date of the next release.
Steering Phase: In the steering phase the plan can be adjusted,
new requirements can be added and/or existing requirements can
be changed or removed
27. Exploration Phase
Iterative process of gathering requirements and estimating the work
impact of each of those requirements.
Write a Story:
Customer has come with a problem; during a meeting, Developer
will try to define this problem and get requirements. Based on the
business problem, a story (user story) has to be written. This is
done by Customer, where they point out what they want a part of
the system to do. It is important that developer has no influence on
this story. The story is written on a user story card.
Roles : Customer , Developer
Artifact : User Stories
28. Exploration Phase
Estimate a Story: Developer estimates how long it will
take to implement the work implied by the story card.
Developer can analyze or solve the problem. These
solutions are used for estimation and discarded once
everyone gets clear visualization of the problem. Again,
this may not influence the business requirements.
Split a Story: Design critical complexity has to be
addressed before starting the iteration planning. If
developer isn't able to estimate the story, it needs to be
split up and written again.
29. Commitment phase
This phase involves the determination of costs, benefits,
and schedule impact. It has four components:
Sort by Value: Customer sorts the user stories by business
value
Sort by Risk: Developer sorts the stories by risk.
Set Velocity: Developer determines at what speed they can
perform the project.
Choose scope: The user stories that will be finished in the next
release will be picked. Based on the user stories the release
date is determined.
30. Steering phase
Within the steering phase the developer
and customer can "steer" the process.
That is to say, they can make changes.
Individual user stories, or relative priorities
of different user stories, might change;
estimates might prove wrong. This is the
chance to adjust the plan accordingly.
31. Iteration Planning
Plans the activities and tasks of the
developers. In this process the customer
is not involved..
Role : Developers
3 Phases of Iteration Planning
32. Iteration Planning Phases
Exploration Phase: requirement will be translated to different tasks.
The tasks are recorded on task cards.
Commitment Phase: The tasks will be assigned to the programmers
and the time it takes to complete will be estimated.
Steering Phase: The tasks are performed and the end result is
matched with the original user story
33. Exploration phase
It is about creating tasks and estimating their
implementation time.
Translate the requirement to tasks: Place on task cards.
Combine/Split task: If the programmer cannot estimate
the task because it is too small or too big, the
programmer will need to combine or split the task.
Estimate task: Estimate the time it will take to implement
the task
34. Commitment phase
Within the commitment phase of the iteration planning
programmers are assigned tasks that reference the different
user stories.
A programmer accepts a task, each programmer picks a task
for which he or she takes responsibility.
Programmer estimates the task, because the programmer is
now responsible for the task, he or she should give the
eventual estimation of the task.
35. Commitment phase Cont….
Set load factor: The load factor represents the ideal amount of
hands-on development time per programmer within one
iteration. For example, in a 40-hour week, with 5 hours
dedicated to meetings, this would be no more than 35 hours.
Balancing: When all programmers within the team have been
assigned tasks, a comparison is made between the estimated
time of the tasks and the load factor. Then the tasks are
balanced out among the programmers. If a programmer is
overcommitted, other programmers must take over some of
his or her tasks and vice versa.
36. Implementation
The implementation of the tasks is done during the
steering phase of the iteration planning.
Get a task card: The programmer gets the task card for
one of the tasks to which he or she has committed.
Find a Partner: The programmer will implement this task
along with another programmer. This is further discussed
in the practice Pair Programming.
Design the task: If needed, the programmers will design
the functionality of the task.
37. Implementation Cont…
Write unit test: Before the programmers start coding the
functionality they first write automated tests. This is
further discussed in the practice Unit Testing.
Write code: The programmers start to code.
Run test: The unit tests are run to test the code.
Refactor: Remove any code smell from the code.
Run Functional test: Functional tests (based on the
requirements in the associated user story and task card)
are run.
39. User Stories
A short description of the behavior of the system from
the point of view of the Customer
Use the Customer’s terminology without technical jargon
One for each major feature in the system
Must be written by the users
Are used to create time estimates for release planning
Replace a large Requirements Document
40. User Stories continued
Drive the creation of the acceptance tests
Must be one or more tests to verify that a story has been
properly implemented
Should only provide enough detail to make a reasonably low
risk estimate of how long the story will take to implement.
Written by the Customer, not the Programmers, using the
Customer’s terminology
More “friendly” than formal Use Cases
41. User Stories continued
User stories have three crucial aspects:
Card
Enough information to identify the story
Conversation
Customer and Programmers discuss the story to elaborate on
the details
Verbal when possible, but documented when required
Confirmation
Acceptance tests to confirm that the story has been properly
implemented
42. User Story Examples
A user wants access to the system, so
they find a system administrator, who
enters in the user's First Name, Last
Name, Middle Initial, E-Mail Address,
Username (unique), and Phone Number.
Risk: Low Cost: 2 points
44. Research Issues
What kind of projects can benefit from XP? What
projects are “too big” and therefore outside the
scope of XP?
How do we reconcile past research, which suggests
that the lack of a formal specification is a recipe for
project disaster?
What is the effect of the lack of focus, in general,
with a formal requirements engineering process?
XP requires customers that can write user stories,
assist in planning releases, perform acceptance
tests, and be available to answer questions on-site
with the developers. Ideally, this is one person who
can represent a group of users.
45. Research Issues
What are the “ideal” characteristics that this person
must possess? How are different, and potentially
conflicting, stories from multiple “customers”
handled?
What are the implications of not having a formal
document (such as an SRS) to serve as a binding
contract?
How is change managed after release? How is the
potential impact of changes assessed? Can the
“cost of change” curve truly be flattened with XP?
Does the use of XP indeed result in project
“success”? Are the success factors for XP
implementation different than for the traditional
methodologies?