Conversation

Your input fuels progress! Share your tips or experiences on prioritizing mental wellness at work. Let's inspire change together!

Join the discussion and share your insights now!

Comments 0


advertisement

What is Crystal in Agile

crystal in agile


Crystal

Crystal was introduced as a family of methodologies in 1998. These are lightweight methodologies and are based on the belief that different projects call for different methodologies. Continuous review and revision of the development process ensures the flexibility of the process. In the Crystal methodologies, projects are categorized according to the size of the project and the criticality of the system being developed.

According to Alistair Cockburn, the core Crystal philosophy is:

"Software development is usefully viewed as a cooperative game of invention and communication, with the primary goal of delivering useful, working software, and the secondary goal of setting up for the next game."

Two consequences of this philosophy are:

  • Different projects require different techniques.
  • The amount of modeling and communication that people require to put in is just the amount they require to jointly move the game forward.

The Crystal family has two common rules:

  • The project must use incremental development, with increments of four months or less.
  • The team must hold pre- and post-increment reflection workshops.

The two basic crystal techniques are:

  • Methodology tuning technique: This uses project interviews and team workshops to convert a base methodology to a starter methodology for the project.
  • Reflection workshop technique: The workshops are conducted every couple of weeks duration to find the processes that are not working well. The strategy is developed to rectify such processes that can help the team.

Crystal methods are mainly focused on:

  • People
  • Interaction
  • Community
  • Skills
  • Talents
  • Communications


The Crystal Family

The Crystal family of methodologies uses different colors to express the 'weight' of each methodology. A methodology such as Crystal Clear, Crystal Orange, or Crystal Yellow is used if a project is a small one, and Crystal Diamond or Crystal Sapphire methods are used if the project is a critical one, where human life could be at risk.

The family is divided into different colors such as:

  • Crystal clear
  • Crystal yellow
  • Crystal Orange
  • Crystal Orange Web
  • Crystal red
  • Crystal Maroon
  • Crystal Diamond
  • Crystal Sapphire

Larger projects, requiring more coordination and communication, map to darker colors (clear, yellow, orange, red, and so on). Projects for systems that can cause more damage need added hardness to the methodology, more validation, and verification rules. A quartz methodology is suited to a few developers creating an invoicing system. The same team controlling the movement of Boron rods in a nuclear reactor needs a diamond methodology, one calling for repeated checks on both the design and the implementation of their algorithms.

Crystal methodologies are characterized by color, according to the number of people being coordinated: Clear is for collocated teams of eight or fewer, Yellow is for teams of 10-20 people, Orange is for 20-50 people, Red is for 50-100 people, and so on, through Maroon, Blue, and Violet.

There are seven prevailing common properties between all the members of the Crystal family. The more these properties are there in a project, the more likely it is to succeed. They are:

  • Frequent delivery
  • Reflective improvement
  • Osmotic communication
  • Trust
  • Focus
  • Easy access for expert users
  • Technical environment with configuration management, frequent automated integration

1. Frequent delivery:

This is a crucial feature of Agile methodologies and implies the regular release of iterations of the software product. Designers and developers decide on the features to be included in each release. The length of the project determines the release time.

By releasing the product in iterations, stakeholders can identify issues earlier in the project which helps to save a lot of time and effort in the later stages. Also, during the initial iteration releases, steps are taken to make redress the situation, in case the customers feel that the output is not up to their expectations. Sometimes, several iterations are gathered and delivered in a single release as it may not be feasible to release each iteration.

2. Reflective improvement:

Developers sometimes take a break from regular development and try to find new and better ways to improve their processes. Iterations help by providing feedback on whether the current process is working.

'Reflection Workshop' meetings are encouraged each couple of weeks. These workshops help identify the processes that are and aren't profitable and help the team to improve their strategies.

3. Osmotic communication:

Osmotic communication is used in Crystal Clear and other smaller Crystal methodologies. Osmotic communication involves the team being together in a room and getting information to flow around it. When it comes to larger teams with the possibility of distraction, close communication is preferred.

The team is encouraged to be in the same room for this to work. Otherwise, there is a chance that a person loses focus. This type of communication enables information to flow quickly throughout the team. Queries can be responded to instantly and any issues or misconceptions can be sorted out. By getting inputs from the others in the team, a developer can get an update on what the others are doing, get new ideas, and gain experience. Developers working together can help each other with their work.

This method reduces communication overhead to a great extent and the necessity for email updates and extra documentation is lowered. Another advantage is that, when the team discusses issues together, each member knows what the others are doing, and can take over their team-mate's part of the project if required.

4. Trust:

The people on the team must be able to speak up about the issues they face and trust each other. If someone is ridiculed whenever they ask a question or suggest an idea, there are fewer chances for them to speak up the next time.

5. Focus:

Focus in crystal refers to two things:

  • Focusing on an individual task in a project until there is progress
  • Focusing on the direction in which the project is heading

With individual tasks, the flow of progress is taken into account while considering distractions such as interruptions, meetings, and phone calls. This delays the completion of the current task as it can take a while to get back into flow again. Crystal defines two rules for dealing with issues that are likely to interrupt focus. One is to fix a two-hour period during which the developer is not to be interrupted. The other one is to assign a project to a developer for a minimum of two days before being switched to another project.

The definition of goals is important when it comes to focusing on the direction of the project. The goals of the project should be clearly defined and the developers should have precise knowledge of them. The project leader should prioritize goals that allow developers to focus on particular areas.

6. Easy access to expert users:

This involves the developers working with a project expert so that they can clarify queries and request solutions to problems. The expert user should be an actual/real-life user. The more involved the expert and the user the better. There should be a minimum of a two-hour meeting at least one time a week with the expert user and the provision to contact them on the phone.

7. Technical environment:

The idea behind a technical environment with automated tests, configuration management, and frequent integration is that errors can be spotted easily when changes are made. Issues are less likely as this is done regularly.

Checking in code in a repository can help identify the code with errors and also help remove them by updating with the correct code. Automated testing and configuration management allow for faster unit testing and the consequent resolution of problems.



Advantages and Disadvantages of Crystal

The advantages and disadvantages of the Crystal methodology are given:

Advantages:

  • Iterative and incremental process
  • Continuous integration
  • Alternative development is managed by planning and reviewing
  • Methodologies used in a low-criticality project can be used for a high-criticality project too
  • Active user involvement
  • Flexible and configurable process
  • Requirements-based (Crystal clear)
  • Early and frequent releases
  • Specific work-products are prescribed
  • Continuous validation
  • Traceability to requirements (though limited) through continuous validation and quality reviews (Crystal Clear).
  • Requirements evolve (Crystal Clear)
  • Test-based development (Crystal Clear)


Disadvantages:

  • Limited scalability
  • Limited applicability. Not suitable for developing highly critical systems
  • Over-dependence on inter-human communication
  • Lack of a clear common process
  • Seamlessness is not addressed (Crystal Clear).
  • Traceability to requirements suffers as planning and development activities are not necessarily
  • ---
  • Design of the entire system is not performed as a team effort and is carried out by individual developers in the manner they choose (Crystal Clear).
  • Behavioral and functional modeling can be of low quality as details of many work products are left to the individual developers to decide (Crystal Clear).
  • No formalism
  • ---
  • ---
  • ---


Agile Crystal methodologies what is crystal in agile crystal in agile crystal methodologies crystal philosophy common rules in crystal basic crystal techniques crystal methods the crystal family crystal family of methodologies crystal methodology advantages and disadvantages crystal methodology colors crystal methodology in agile properties of crystal in agile crystal clear methodology

advertisement