scrum refresher
Post on 19-May-2017
236 Views
Preview:
TRANSCRIPT
AGILE METHODOLOGY Amri HidayatSenior Technology Analystamri.hidayat@gmail.com
SCRUM ROLES
Scrum Team
Taken from:http://en.wikipedia.org/wiki/Dragon_boat
SCRUM CEREMONIES
Sprint PlanningDaily Standup
Showcase (Review)Retrospective
SCRUM VALUES
FocusCourage
OpennessCommitment
Respect
Commitment
ENGINEERING BEST PRACTICES
Scrum• Topless meetings
• No distractions (Scrum Values: Focus, Commitment, Respect)• No phones / tablet / chatting while other team member is contributing in
a conversation• Generate more discussions
• Ad-hoc & frequent communications• Scrum values: Courage, Openness• Face2Face > Skype > Phone > Chat > Nothing
Scrum (cont.)• Smaller handoffs
• Scrum value: Focus
Scrum (cont.)• Smaller handoffs (cont.)
Scrum (cont.)• Estimates & Commitments
• Trade-off between commitment & estimation• Scrum Values: Courage, Openness, Commitment
Scrum (cont.)• Sprint Showcase
• Tell, don’t show (describe what the user story is about)• Describe the impact of the functionality being presented• Show the tests (if running it doesn’t work) [ Hint: Recorded Coded UI ]
Swarming• Pair Programming
• Helps on knowledge sharing between team member• Also helps reducing communication between team member <> product
owner.• Boost confident of the team on taking/conquering more complex
problem (mission critical applications)• Collective Ownership of the whole application
• Anyone can: Change any line of code, Fix bugs, Improve architecture• No one: Becomes a bottle neck for changes (i.e. leaves, holiday, etc)
• Scrum Values: Focus, Openness, Respect, Courage, Commitment• Real world example of swarming ?
Taken from: http://www.navy.mil/view_image.asp?id=20537
http://www.navy.mil/view_image.asp?id=3239
Design Patterns• Data Layer: Nhibernate, Entity Framework, Active Record
• Methods: • Repository, • Data Transfer Object, • Object Relational Mapping
• Support for Agile Database Design:• Migrating (brining UP & bringing DOWN)• Reverting• Seeding
• Dependency Injection: StructureMap, Unity, Ninject• Methods:
• Constructor Injection• Method Injection• Property (Setter Injection)
Test Driven Development• Unit Testing
• Methods: • Red, Green, Refactor• Arrange, Act, Assert
• Mocking: Moq, NMock, Mox, Rspec• Hand-in-hand with Dependency Injection• Helps tester with complex (unrelevant) dependency
• Example: • Assert method which requires a user to be authenticated first (e.g. Oauth) • Assert method which retrieved data from a backend database (time
consuming and prone for error)
Test Driven Development• Demo (MoqExample.zip)
• TDD• Mocking• Dependency Injection
Test Driven Development (cont.)• Automated Regression Test (CodedUI, Selenium, Robotium)
• Note: Use the same programming language (or technology stack) as the main application being tested.
• The developer will have the knowledge on both developing the main application and creating the test scripts for test it.• Example:
• Test .NET desktop/ASP.NET application with CodedUI• Test Android app with Robotium
• Framework for Integrated Testing (FIT)• Customer provide examples of how their software should work• Test data (expected values) provided by product owners/customers.
They now best what to expect for the outcome
Branching & Merging Strategy• Traditional (One development branch)
• Pros:• Easy to maintain• Fast & easy commits
• Cons:• High risk on a big team working on different features (user stories)• Messy Forward Integration
Branching & Merging Strategy (cont.)• Feature-based (One branch per feature/user story)
• Pros:• Scrum Values: Focus, Commitment• Work on 1 (or 2) user story at one time. It encourage team to swarm on a feature• Reduces/Eliminates unrelated (other user stories) bugs introduced in QA release
• Traditional:• Iteration almost ended, showcase about to start (3 user stories in 1 sprint)
• Only 2 user stories completed (DONE DONE), What happens to the last user story which has already being checked in but not yet tested ? Revert back ? Delete files ?
• Feature-based:• Iteration almost ended, showcase about to start (3 user stories in 1 sprint)
• Only 2 user stories completed (DONE DONE), What happens to the last user story which has already being checked in but not yet tested (remember: in different branch) ?• Do Nothing!. Let work on it next sprint.
• Cons:• High maintenance
• Could end up with a lot of branches being created.
Feature-based Branching
Branching & Merging Strategy (cont.)• Feature-based
• Day 1 - Iteration Starts (Tuesday) – Team decides to take “US 510 – a very complicated feature” with ItemID: 21422• Create a branch (called “21422” or “US510”)
• Day 2 to 3 – Team work on US 510 (perform add, change, delete, commit)• Add/Change/Delete/Commit on branch “US510”
• Day 4 – Team completed with the development of US 510 (Development DoD)• Merge back to QA branch. At this point, developer starts manual testing (or trigger
automated ui testing). Product owner starts user acceptance test.• Day 5 – Product owner accepts US 510 (User Story DoD)
• Merge back to Main branch. Close “US510” branch.• Day 6 – Team decides to take “US 511 – also a very complicated feature”
• Create a branch (called “US511”)• Day 10 – SHOWCASE, bug found!
• Create a branch (called “Bug – button is not big enough”)
top related