Beruflich Dokumente
Kultur Dokumente
CHAPTER 1: AGILE
WHAT IS AGILE?
Agile methodology in project management is a process by which a team can manage a project
by breaking it up into several stages called "sprints".
Clients can make small objective changes without huge amendments to the budget or schedule.
The process involves breaking down each project into prioritized requirements, and delivering
each individually within an iterative cycle. An iteration is the routine of developing small
sections of a project at a time.
During the first step of the agile software development life cycle, the team scopes out and
prioritizes projects. Some teams may work on more than one project at the same time depending
on the department’s organization.
For each concept, you should define the business opportunity and determine the time and work
it’ll take to complete the project. Based on this information, you can assess technical and
economic feasibility and decide which projects are worth pursuing.
Once you have identified the project, work with stakeholders to determine requirements. You
might want to use user flow diagrams or high-level UML diagrams to demonstrate how the new
feature should function and how it will fit into your existing system.
From there, select team members to work on the project and allocate resources. Create
a timeline or a swimlane process map in Lucidchart to delineate responsibilities and clearly show
when certain work needs to be completed for the duration of the sprint.
For example, our product team created the following diagram to visualize how the team would
implement the Print & Ship feature for Lucidpress, Lucidchart’s sister product. The columns
show each team member’s workload, and the rows show the work completed during each sprin
3. Construction/iteration
Once a team has defined requirements for the initial sprint based on stakeholder feedback and
requirements, the work begins. UX designers and developers begin work on their first iteration of
the project, with the goal of having a working product to launch at the end of the sprint.
Remember, the product will undergo various rounds of revisions, so this first iteration might only
include the bare minimum functionality. The team can and will have additional sprints to expand
upon the overall product.
You’re nearly ready to release your product into the world. Finish up this software iteration with
the following steps:
Test the system. Your quality assurance (QA) team should test functionality, detect
bugs, and record wins and losses.
Address any defects.
Finalize system and user documentation. Lucidchart can help you visualize your code
through UML diagrams or demonstrate user flows so everyone understands how the
system functions and how they can build upon it further.
Release the iteration into production.
This phase involves ongoing support for the software release. In other words, your team should
keep the system running smoothly and show users how to use it. The production phase ends
when support has ended or when the release is planned for retirement.
6. Retirement
During the retirement phase, you remove the system release from production, typically when you
want to replace a system with a new release or when the system becomes redundant, obsolete, or
contrary to your business model.
Within the agile SDLC, work is divided into sprints, with the goal of producing a working
product at the end of each sprint. A sprint typically lasts two weeks, or 10 business days. The
workflow of a sprint should follow this basic outline:
Plan. The sprint begins with a sprint planning meeting, where team members come
together to lay out components for the upcoming round of work. The product manager
prioritizes work from a backlog of tasks to assign the team.
Develop. Design and develop the product in accordance with the approved guidelines.
Test/QA. Complete thorough testing and documentation of results before delivery.
Deliver. Present the working product or software to stakeholders and customers.
Assess. Solicit feedback from the customer and stakeholders and gather information to
incorporate into the next sprint.
In addition to sprint planning meetings, your team should gather for daily meetings to check in
and touch base on the progress, hash out any conflicts, and work to keep the process moving
forward.
Remain flexible and open to changes, too. After all, this methodology is called “agile” for a
reason.
Bottom line: The goal of the agile software development life cycle is to create and deliver
working software as soon as possible.
Scrum - Scrum is one of the most popular implementation of agile where different roles
like - product owner, scrum master and team members are assigned to different
participants of software development. Daily scrum meeting are organisved for the
updates and a build is delivered in a two to three week cycle called sprint.
Extreme Programming (XP) - Extreme programming is an agile implementation in
which frequent customer feedback and changes are incorporated with focus on quality
software. Quality of software is maintained by following the coding practices like pair
programming(code reviews, unit testing etc.) to the extreme level. Hence, the name
extreme programming.
Kanban - Kanban is a development approach in which the tasks are organized in a
Kanban board, wherein we can track the progress of the work, helping in decision
making.
Crystal Clear - Crystal clear development like other agile methodologies focusses on
frequent delivery and feedback. It is a lightweight approach based on the fact that
customization of process and practices is required to meet the project specific
requirements.
Lean Software Development - Lean software developement methodology is based on
seven lean principles - eliminate waste(like any code not adding value), amplify learning,
decide late, deliver fast, empower team, build integrity and See the Whole(see the
product as a whole).
FEATURES OF AGILE
ADVANTAGES OF AGILE
1. Agile is very much suited for projects where requirements and the end product is not very
clear.
2. It promotes customer satisfaction as their feedbacks and changes are embraced.
3. It reduces risk factor as early deliverables are made visible to the end users.
4. Exhaustive planning is not required at the beginning of the development process.
5. It is easy to manage with minimal rules and more flexibility.
6. Dividing the project into incremental deliverable builds leads to more focus on quality of
the product.
DISADVANTAGES OF AGILE
1. As it is highly customer-centric, so it can pose problem when the customer does not have
clear understanding of the product and process.
2. Lack of formal documentation and designing leads to very high dependency on the
individuals for traning and other tasks.
3. For complex projects, the resource requirement and effort are difficult to estimate.
4. Frequent deliverables, feedback and collaboration can be very demanding for some
customers.
5. Because of the ever-evolving features, there is always a risk of ever-lasting project.
INTRODUCTION
Crystal methods are a family of methodologies (the Crystal family) that were developed by
Alistair Cockburn in the mid-1990s. The methods come from years of study and interviews of
teams by Cockburn. Cockburn’s research showed that the teams he interviewed did not follow
the formal methodologies yet they still delivered successful projects. The Crystal family is
Cockburn’s way of cataloguing what they did that made the projects successful.
Crystal methods are considered and described as “lightweight methodologies”. The use of the
word Crystal comes from the gemstone where, in software terms, the faces are a different view
on the “underlying core” of principles and values. The faces are a representation of techniques,
tools, standards and roles.
1. People
2. Interaction
3. Community
4. Skills
5. Talents
6. Communications
Cockburn says that Process, while important, should be considered after the above as a
secondary focus. The idea behind the Crystal Methods is that the teams involved in developing
software would typically have varied skill and talent sets and so the Process element isn’t a
major factor.
Since teams can go about similar tasks in different ways, the Crystal family of methodologies are
very tolerant to this which makes the Crystal family one of the easiest agile methodologies to
apply.
“People are communicating beings, doing best face-to-face, in person, with real-time
question and answer.”
“People have trouble acting consistently over time.”
“People are highly variable, varying from day to day and place to place.”
“People generally want to be good citizens, are good at looking around, taking initiative, and
doing ‘whatever is needed’ to get the project to work.”
The points above are why Crystal methods are so flexible and why they avoid strict and rigid
processes typically found in older methodologies.
Cockburn developed the different methods in the family of methodologies to suit teams of
different sizes which need different strategies to solve diverse problems.
The Crystal family of methodologies use different colours to denote the “weight” of which
methodology to use. If a project were a small one a methodology such as Crystal Clear, Crystal
Orange or Crystal Yellow may be used or if the project was a mission-critical one where human
life could be endangered then the methods Crystal Diamond or Crystal Sapphire would be used.
1. Crystal Clear
2. Crystal Yellow
3. Crystal Orange
4. Crystal Orange Web
5. Crystal Red
6. Crystal Maroon
7. Crystal Diamond
8. Crystal Sapphire
There are five “colors” which represent the five families of Crystal methodogies, which are to be
adopted based on the size of the project (i.e., the number of people involved on a project
Clear–upto 6 people
Yellow–upto 20 people
Orange–upto 40 people
Red–upto 80 people
Maroon–upto 200 people
On the other hand, Crystal Sapphire or Crystal Diamond methods are used in large projects that
involve potential risk to human life.
If you are in a project that has a Crystal Clear framework, and you increase the people in your
project to greater than 6, then Alistair Cockburn recommends the project the next higher
framework level (Crystal Yellow), rather than trying to expand the prior Crystal Clear practices.
Besides having a “size” factor which determines the framework, the other factor mentioned
above which effects the framework is that of “criticality”, which is the level of potential damage
the system can cause if it does not perform as designed
Comfort (C) Discretionary Money (D) Essential Money (E) Life (L)
The Crystal Family of Methodologies. One characteristic of Crystal is its intentional scaling to
projects based on size and criticality. The larger a project gets (from left to right), the darker the
colour.
The Crystal approach defines a number of roles: Project Sponsor, Senior Designer/Programmer,
Designer/Programmers (Business Class Designers, Programmers, Software Documenters and
Unit Testers) and Users. Also, there are a number of other roles such as Architect, Coordinator,
Requirements Gatherer, Business Expert, Business Analyst/Designer, Project Manager, Design
Mentor, Usage Expert, Lead Design Programmer, UI designer, Technical Facilitator and
Technical Writer.
COMMONALITY
Between all the methods in the Crystal family, there are seven prevailing common properties.
Cockburn found that the more of these properties that were in a project, the more likely it was to
succeed.
1. Frequent delivery
2. Reflective improvement
3. Close or osmotic communication
4. Personal safety
5. Focus
6. Easy access to expert users
7. Technical environment with automated tests, configuration management, and frequent
integration
Frequent delivery
Frequent Delivery is the regular releasing of iterations of the software program. This idea comes
from agile methodologies. Designers and developers decide what features to include in each
release and they design and test for each release. With Crystal methods, iterations are to be
released weekly up to quarterly – the release times are dependant on the length of the project.
By releasing iterations, stakeholders will be able to spot problems earlier in the project which
will save a lot of hassle later on. Another point on this is that if the end users decide that the
project does not do things the way they’d like it to be done, then steps can be taken to resolve
this before it is too late.
With Crystal methods, there can be more than one iteration in a release. This is because it may
not be feasible to release every iteration, so a collection of iterations are gathered and delivered
in a single release.
Reflective improvement
Reflective improvement involves developers taking a break from regular development and trying
to find ways to better their processes. Iterations help with this by providing feedback on whether
or not the current process is working.
With Crystal methods, the idea of teams holding “reflection workshop” meetings every couple of
weeks is encouraged. These workshops help find processes that are and aren’t working well and
help the team to modify them so that a strategy can be developed that works well for the team.
In Crystal Clear and the smaller of the Crystal methodologies, Osmotic Communication is used.
Osmotic communication involves the team being together in a room and getting information to
flow around it. With regards to larger teams (over 8 or so), where distraction can arise, Close
Communication is used.
The team must be in the same room for this to work. This is because if the developer has to break
concentration to move somewhere else to ask a question then their thought process will probably
be lost.
By using this type of communication, information flows quickly throughout the team. Questions
can be rapidly answered and all the team members know what is going on as well as having the
ability to correct any misconceptions that may arise.
By listening to the others in the team, a developer can pick up on what the others are doing, gain
experience and develop new ideas. Developers working near each other can help with problems
that the other is encountering.
Communication overhead is greatly reduced by using this type of communication. The need for
email updates, extra documentation, etc is lowered. By having the team together, each member
knows what the others are doing so they should be able to take over their team-mate's parts of the
project if needed.
Personal safety
This has got to do with the issue of free speaking within a group of people. If a person is
ridiculed whenever they ask a question, suggest an idea, etc then they will be less likely to speak
up the next time. The people in the team must be able to trust each other and feel free to speak up
about issues or whatever arises.
Focus
Focus in crystal refers to two things; firstly focusing on an individual task in a project for enough
time that progress will be made and secondly, it refers to the direction in which the project is
heading.
With the first, the flow of progress is taken into account while thinking of issues that would
affect it such as interruptions, meetings, long questions, phone calls, etc. It can take a while to
get back into the flow again so this delays completion of the current task.
Crystal defines two rules for dealing with issues that may interrupt focus. One is to set a two-
hour period where the developer is to have no interruptions. The other is to assign a developer to
a project for at least two days before being switched to another project.
With the second meaning of focus, issues such as definition of goals are discussed. The
definitions should be clear and the developers should know exactly what the goals of the project
are. The project leader should prioritise the goals which will allow developers to focus on
particular areas.
This involves the developers working with a person of expertise in the project area so that the
expert answers any questions, suggest solutions to problems, etc. The expert user should be an
actual/real-life user and not just a tester from the development team. The more involved the
expert user is (in practical terms), the better since they would have more hands-on experience.
The more time that the expert user can give will greatly help the overall project but this is not
always feasible. There should be a minimum of a once a week, two-hour meeting with the expert
user, and the ability to make phone calls to the expert user too.
The idea behind this is that there should be continuous integration and testing so that if any
changes are made, then errors, breakages, etc can be spotted. Since this is done on a regular
basis, problems are less likely to grow as they can be resolved earlier in the project.
The process of checking-in code into a repository can help in identifying the problem code and
remove it by reverting back or updating with correct code. This is where configuration
management and automated testing come in. These allow for quicker unit testing and eventual
resolution of problems.
Types of Crystal methodologies: Clear, Yellow, Orange, Orange Web, Red, Maroon,
Diamond, Sapphire
o Ranging from the most lightweight and the least mission critical, operating with
the smallest team to the most described, most mission critical, huge team projects.
Common properties
o Frequent delivery through iterations
o Reflective improvements through dedicated brainstorming
o Close communication: developer team is in the same room/building
o Personal safety: speak freely in groups without managerial consequences
o Focus: 2 hour periods without interruptions on a task basis; clear project goals and
definition
o Easy access to expert users: project domain experts answer questions and suggest
solutions; minimally meet every week for 2 hours
Crystal methodologies have multiple flavours, which are only minimally differing from one an
other on the different steps. Hereby due to space and time constraints we list the ones that could
be used for highly different type of projects and are having multiple different approaches.
Effectiveness
Focus on people not on processes or deliverables
Suitable for teams of 2-6 in the same room
o Orange (more complex, medium sized projects)
More roles: Architect, Business Analyst, Project manager, …
Expect a release in every ~100 days
Safer: emphasis on testing
Defines a set of deliverables
Requirement documentation
Release schedule
Project plan
Status reports
UI design mock-ups
Object Model
User Manual
Test plan
Suitable for teams of 21-40
People inventing and communicating, solving a problem they don't yet understand (which keeps
changing),
Creating a solution they don't really understand (and which keeps changing),
Expressing ideas in restricted languages they don’t really understand, (and which keep
changing)
Naur 1986: The primary result of programming is the theory held by the programmers
1. Theory: The knowledge a person must have to do certain things intelligently, explain, answer
queries, argue about them...
2. The programmer must Build a Theory of how certain affairs of the world will be handled by a
program; Explain how the affairs of the world are mapped into the program and documentation;
Respond to demands for modifications, perceiving the similarity of the new demand with the
facilities built. • This knowledge transcends that possible in documentation.
3. This theory is the mental possession of a programmer; the notion of programmer as an easily
replaceable component in program production has to be abandoned.
Naur 1986: Modifying a program depends on the new programmers building the same
theory !
4. Problems of program modification arise from assuming that programming consists of text
production, instead of theory building.
5. The decay of a program from modifications made by programmers without proper grasp of the
underlying theory becomes understandable. The need for direct participation of persons who
possess the appropriate insight becomes evident. For a program to retain its quality it is
mandatory that each modification is firmly grounded in its theory.
6. The conclusion seems inescapable that at least with certain kinds of large programs, the
continued adaption, modification, and correction, is essentially dependent on a certain kind of
knowledge possessed by a group of programmers who are closely and continuously connected
with them
COMMUNICATION
• What you “know” depends on your individualized parsing of the world around you;
PEOPLE
PEOPLE are essential but non-linear active components in the development process
Weak on
Consistency
Discipline
Following instructions
Changing habits
Strong on:
Communicating
Looking around
Copy/modify
Motivated on:
Pride in work
Pride in contributing
Pride in accomplishment
Normal Aliged
team Team
The “amicability index” indicates how easily information passes from one part of the
organization to another.
A low amicability index implies that people block the flow of information, intentionally or
through not listening well.
Can they easily detect something needs attention? (Good at Looking Around)
Can they effectively pass along the information? (Proximity; face-to-face, convection currents)
Crystal is the lightest, least intrusive set of rules that puts a project in the safety zone.
Crystal’s purpose: Keep people from hurting each other, keeping each other informed
Crystal’s Philosophy:
•Methodology Shaping
•Reflection Workshop
•Blitz Planning
•Delphi Estimation
•Daily Stand-ups
•Process Miniature
•Side-by-Side Programming
•Burn Charts
•Exploratory 360°
•Early Victory
•Walking Skeleton
•Incremental Rearchitecture
•Information Radiators
shipping buggy
code
• Project Safety
• Development Efficiency
• Process Habitability
Interactive face-to-face communication is the cheapest and fastest channel for exchanging
information
PROJECT VISIBILITY
The “burn-down” chart and variations show a project’s progress visibly and publicly
Advantages: Disadvantages: