software development methodology

Software Development Methodology – Crystal

Crystal or also known as Crystal Methods are a family of methodologies (the Crystal family) developed by Alistair Cockburn from his study and interviews of teams in 1998.

The word Crystal comes from a gemstone, where in software terms, the faces (representing the techniques, tools, standards and roles) are a different view on the “underlying core” of principles and values.

It primarily focuses on people and their interactions when they work on a certain software development project rather than on processes and tools.

Plus, it also centers on business-criticality and business-priority of the system under development.

Crystal methods are said to be “lightweight methodologies”, promoting early, frequent delivery of working software, adaptability, high user involvement, and the removal of bureaucracy or distractions.

As based straight from Cockburn’s words, “Crystal is a family of human-powered, adaptive, ultra light, ‘stretch-to-fit’ software development methodologies.”

crystal

Source: ActiveCollab

Tl; dr;

Crystal is a collection of Agile software development approaches introduced by Alistair Cockburn in 1998. The concept focuses on communication, with special emphasis on interaction, community, people and skills.

Cockburn believes that the people’s skills and talents, as well as the way they communicate has the biggest impact on the project outcome.

He adds that we should view the product development as a game which should stimulate everyone to interact, become creative and produce brilliant ideas. Instead of focusing on questions like “is our model accurate?” we should be looking for answers to the questions like “Is our product meeting the customer’s needs? Or “Do we have our goals aligned as a team?”

The Crystal Methods

crystal lifecycle

Source: A Practical Guide to Seven Agile Methodologies Part 2

One of the most lightweight, adaptable approaches to software development, Crystal methodology is based on two (2) fundamental assumptions:

  • Teams can streamline their processes as their work and become a more optimized team.
  • Projects are unique and dynamic and require specific methods.

 

Crystal method is actually comprised of a family of agile methodologies in different variants (colors), each of which has unique characteristics driven by several factors such as team size, system criticality, and project priorities. The following are just some of the practically used crystal methodologies in real projects:

  • Crystal Clear – for teams consisting of 6 people.
  • Crystal Yellow – for teams consisting of 10-20 people.
  • Crystal Orange – for teams consisting of 20-40 people.
  • Crystal Red – for teams of up to 80 people.
  • Crystal Maroon – for teams of up to 200 people.

Defining the Crystal Method Characteristics

  • Human-powered. This simply emphasizes that people are the most vital element of Crystal, and all the processes and tools are relative to them. It also means that people are capable of organizing themselves. As the processes develop, they can become more organized and competent.
  • Adaptive. An approach and not a set of prescribed tools and techniques for software development, Crystal is a stretch to methodology. This means that processes and tools are not fixed, but rather adjusted in order to meet the requirements of the team and the project at hand.
  • Ultra-light. Not advocating too much documentations, management, and reporting, Crystal is known as a “lightweight methodology.” It focuses on practicing open communication between team member and transparent workflow between the team and the client.
  • The Crystal Method Practices: Certain practices are crucial for the successful implementation on any project. Involving preciseness, Crystal has a number of practices that include:
  • An iterative and incremental development approach. For the overall refinement and completion of the software, the project is developed in iterations that are generally time boxed; user feedback taken at the end of an iteration is used to plan the next iteration; and new and additional features are added in every subsequent iteration.
  • Active user involvement. With Crystal’s people-centered and transparent nature, users are not only actively involved but also regularly informed regarding the project’s progress.
  • Delivering on commitments. The team strives to secure frequent delivery of client-valued, potentially-shippable functionalities.

7 Properties of Crystal Method

Between all methods in the Crystal family, given below are the seven (7) prevailing common properties:

  • Frequent Delivery. Allows teams to frequently deliver working, tested code to real users. This way, they don’t need to realize that they have invested their energy and time into a product that nobody wants to buy.
  • Reflective improvement. There are always techniques and methods where your team can improve a product, no matter how well or bad it has become.
  • Close or osmotic communication. Enables teams to pick up useful information without even being directly involved in the discussion of the certain matter.
  • Personal safety. In order to build a healthy working atmosphere and genuine team culture, team members should practice an open and honest communication whether presenting a new idea or possible problem, without fear.
  • Focus. Each team member knows exactly what to work on, allowing them to focus their attention and avoiding switching tasks one after another.
  • Easy access to expert users. Allows teams to maintain communication and get regular feedback from real users.
  • Technical environment with automated tests, configuration management, and frequent integration. Very specific tools for software teams emphasizing continuous integration so that errors could be caught in just a matter of minutes.

Summary

The Crystal approach considers people as the most important, thus, processes should be modeled to meet the requirements of the team. It has an iterative and incremental development approach, an active user involvement, and delivers on commitments.Also, it is adaptive, without a set of prescribed tools and techniques and doesn’t requires too much documentation, management or reporting.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

By Tuan Nguyen

software development methodology

Software Development Methodology – Feature Driven Development (FDD)

Client-centric, architecture-centric, and pragmatic, Feature Driven Development (FDD) is an agile framework that primarily focus on the feature set that the client values, and is known for short iterations and frequent releases.

FDD was first introduced in 1999 in the book Java Modeling In Color with UML while its first real-world application was on a 15 month, 50-person project for a large Singapore bank in 1997, which was then immediately followed by a second, 18-month long 250-person project.

The term, “feature” emphasized in the FDD context, doesn’t necessarily mean product features, rather, they are more akin to user stories in Scrum. Thus, “completing the login process” might be considered a feature in the FDD methodology.

Not many talk about FDD, though it is often mentioned in passing in agile software development books and forums.

people plan a project

Source: DevPro Journal

Tl; dr;

Feature Driven Development is a customer-centric software development methodology built largely around discrete “feature” projects.

With this concept, developers can plan and manage each stage of project development to keep prioritizing client requests, responding to requests in time and making clients satisfied.

This is done through mapping out what features developers are capable of creating, breaking complex requests into a series of smaller feature sets and then creating a plan for how to complete each goal over time.

The Feature Driven Development Methodology

feature driven development lifecycle

Source: New Line Technologies

Suitable forprojects with large development teams, follow pre-defined standards and require quick releases, FDD focuses on short iterations with each of which serves to workout certain part of the system’s functionality.

FDD concept’sdevelopment is credited to Jeff De Luca and Peter Coad, when working on a banking project in Singapore way back 1997.

The project through the FDD concept is divided into “features”, known to be small pieces of a complete project.

Feature Driven Development Roles

FDD has six (6) key roles:

  • Project Manager (PM). The administrative head of the project. He does reporting progress, handling budgets, and managing equipment, space and resources, etc.
  • Chief Architect (CA). The one responsible for the overall design of the system.
  • Development Manager (DM). Leads day-to-day development activities.
  • Chief Programmers. Are experienced programmers who’ve been through the entire software development lifecycle a few times before.
  • Class Owners. Are developers working as members of small development teams under the guidance of the Chief Programmer.
  • Domain Experts. They are users, sponsors, business analysts, or a combination of these, known to be the knowledge base that the developers rely on, enabling them to deliver the correct system.

Other supporting roles, include:

  • Release Manager. Ensures that Chief Programmers report progress weekly. He then reports directly to the Project Manager.
  • Language Guru. Responsible for knowing a programming language or a specific technology inside out.
  • Build Engineer. The one who sets up, maintain, and run the regular build process.
  • Toolsmith. The one responsible behind the creation of small development tools for the development team, test team, and data conversion team.
  • System Administrator. A person responsible in configuring, managing, and troubleshooting any servers and network of workstations that are specific to the project team.

Additional roles are as follows:

  • Tester. Independently verifies that the system’s functions meet the users’requirements and that the system performs those functions correctly.
  • Deployer. Converts existing data to the new formats as required by the new system and work on thephysical deployment of new releases of the system.
  • Technical Writer.The one who writes and prepares online and printed user documentation.

Feature Driven Development Processes

FDD has five (5) basic processes steps:

  • Developing an overall model. Cross-functional, iterative and highly collaborative. FDD pushes team members to work together to build an object model of the domain area as guided by the Chief Architect. When detailed domain models are created, these models are progressively merged into an overall model after.
  • Building the list of features. By using the model on the previous step, the team or the chief programmer builds a list of features that would be useful to users and could be completed along a set timeline for release.
  • Planning by feature. It’s all about organizing. Here, plans are laid in which order the features will be implemented. Teams are then selected and assigned feature sets.
  • Designing by feature. On this stage, the chief programmer chooses the features for development and assigns them to feature teams consisting of the project manager; the chief architect; the development manager; the domain expert; the class owner; and the chief programmer.
  • Building by feature. Feature teams have complete coding, testing, and documentation of each feature, then advance the feature to the main build.

Best practices

Feature Driven Development is built around overall software engineering best practices:

  • Identify the domain object model, or the scope of the problem that needs to be solved.
  • Break down complex features into smaller functions and subsets.
  • Assign features to a single owner in order to ensure consistency and code integrity.
  • Build dynamic and diverse feature teams to collect multiple design options.
  • Perform routine code inspections of each feature before implementing into the main build.
  • Enforce project visibility through frequent, accurate progress reports during all steps.

Summary

An iterative and incremental software development methodology, Feature Driven Development (FDD) aims to develop high-level features, scope and domain object model and then utilize that to plan, design, develop and test the specific requirements and tasks upon the overarching feature that they belong to.

This concept is ideal for projects that have large development teams, follow pre-defined standards and require quick releases.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Crystal

By Tuan Nguyen

software development methodology

Software Development Methodology – Dynamic Systems Development Method (DSDM)

DSDM, or also known as Dynamic Systems Development Method is an agile project delivery framework, addressing the full project lifecycle and its impact on the business, including the guidance needed to bring a product through the entire project, and even the releases.

The method has a four-phase framework, namely:

  • Feasibility and business study;
  • Functional model / prototype iteration;
  • Design and build iteration; and
  • Implementation.

It is an iterative, incremental approach that was first conceived in 1994 when project managers using another agile framework, the Rapid Application Development (RAD) methodology, determined that the new iterative approach to software development should need more governance and stricter guidelines.

team meeting

Source: Emotive Brand

Tl; dr;

Dynamic Systems Development Method (DSDM) is a framework largely based around Rapid Application Development (RAD). It focuses on Information Systems projects that are characterized by tight schedules and budgets.

The method’s primary aim is to deliver business needs and real-time benefits. Also, DSDM also make sure that benefits are clear, has feasible solution, with solid foundations already in place before a project is started.

DSDM Project Delivery Method

dsdm lifecycle

Source: Methods & Tools

DSDM is an agile development type that prioritizes schedule and quality over functionality.

It uses the MoSCoW method of prioritization, breaking a project into four (4) different types of requirements:

  • Must have (M) – requirement critical to a project’s success.
  • Should have (S) – possible requirements that represent a high-priority item that should be included in the solution.
  • Could have (C) – less critical requirements and often seen as nice to have items.
  • Won’t have (W) – least-critical and as what the name suggests will not be covered in the project timeframe.

DSDM Principles

This method is most frequently applied for software development projects, with suitability in any industry and any project (big or small).

It has eight (8) principles:

  • Focus on the business need. The team should understand business priorities and commit in delivering at least the Minimum Usable Subset.
  •  Deliver on time. The team splits up the work into increments prioritizing project requirements; and protecting the deadlines to ensure that the project is delivered on real-time. For long-term projects, they are delivered on-time using the on-time delivery of each increment, or Timebox.
  • Collaborate. Successful collaboration is achieved through partnering with the right stakeholders. Thus, improving the whole team’s performance.
  • Never compromise quality. The desired quality of the project products has been already agreed by the team even at the beginning of the project by defining the acceptance criteria.
  • Build incrementally from firm foundations. Before any significant resources are dedicated to the project delivery, the team builds a solid understanding of the project requirements and proposed solution to create a strong foundation. After each delivered increment, priorities and ongoing project viability are reassessed.
  • Develop iteratively. Having results demonstration and business feedback after every iteration, teams encourage creativity, learning, and experimentation through iterative development.
  • Communicate continuously and clearly. As informal communication encouraged, daily stand-up meetings and workshops are conducted so that communication needs of the project are fulfilled.
  • Demonstrate control. Project managers should conduct planning and progress tracking because they are considered crucial for the project to be managed under control.

Summary

Intended to be more than just a framework forthe creation of software development packages in increments, DSDM is a full life-cycle approach beyond software development projects.

It uses the MoSCoW method of prioritization which are the Must have (M), Should have (S), Could have (C), and Won’t have (W), having an integral part with the project’s success.

Through DSDM, teams get to focus on business needs, make projects deliver on time, successfully collaborate for better performance, can already agree on the desired quality of the project products even at the earliest part of the development, build incrementally from strong foundation, develop iteratively, communicate continuously and clearly,and demonstrate control over the project.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen

software development methodology

Software Development Methodology – Lean

The concept of reducing waste and adding customer defined value to products and services, Lean development seeks to make small, incremental changes in process to improve speed, efficiency, and quality.

Founded in two pillars namely respect for people and continuous, Lean is described as a mindset and not a set of tools in Japan.

According to Dr. Shigeo Shingo, a Toyota engineer and expert on the methodology, “Lean is a never-ending elimination of waste; it is committed to total customer satisfaction, total commitment to quality and total employee involvement…”

Taiichi Ohno, an industrial engineer at Toyota, first developed the Lean methodology in the 1950s, which was then known as the Toyota Production System.

pushing cube vs pushing globe

Source: SOLABS

Tl; dr;

Lean is a concept methodology that aims in optimizing efficiency and minimizing waste in the development of software. It focuses on the idea that less is more, streamlining in every part of the software development lifecycle.

Software development is a natural application of Lean methodology because it follows a defined process, with defined conditions of acceptance, and results in delivering tangible value.

What is Lean Methodology?

The Lean approach is all about optimizing processes and eliminating waste. With these, it can help operations cut costs while still delivering same high-quality product that customers want and are willing to pay for.

It is done by evaluating the process thoroughly to determine that development teams are doing right and remove or adapt all steps that may possibly generate wastes. This so called “waste” is also known as muda and directly encompasses anything that doesn’t add value to the end product.

Thus, Lean is an improvement and problem solving method in which it strives to reduce or eliminate activities that don’t add value to the customer.

As what management guru Peter Drucker has said, “There’s nothing so useless as doing efficiently that which should not be done at all.”

lean methodology lifecycle

Source: Rotating Solutions, Inc.

Lean Principles

Lean is based on five (5) principles, aiming to help companies change the way they do business for the better:

Value.

Specifying value is always defined from the standpoint of the end customer’s needs for a specific product. It is through understanding what the customer is willing to pay for.

This principle is categorized into three (3) ways:

  • Non-value add activity (waste);
  • Value add activity; and
  • Business value add activity.

Value Stream Mapping.

Mapping all the steps, process, or sequence in the value stream for each product family, at the same time, eliminating those steps that do not create value.

Flow.

Making the product and information requests flow smoothly through the business without disruptions or delays.

Pull.

As the flow is smoothly introduced, let customers pull value from the next upstream activity. This works by replacing only material that is used and eliminating excessive inventory for quick response to customer requirements.

Strive for Perfection.

State of perfection is achieved through frequently seeking to eliminate waste and improving the value provided to customers.

The Eight (8) Types of Wastes

It is possible that companies have hidden wastes that are driving costs of their products and services. With Lean, it helps them identify the eight (8) types of waste:

  • Motion. Unnecessary motion of personnel, equipment, or information within a workstation or motion in a job task that takes too much time to complete.
  • Transportation. Transporting of non-required items or information from one location to another.
  • Waiting. Waiting for parts, tools, supplies, or information, e.g., an absence of flow, or previous back logs.
  • Overproduction. Producing too much than what is required to meet the current demand.
  • Defects. Any repairs or alterations to the product after it’s been made.
  • Inventory. Refers to any type of supplies and materials that are kept or not being processed due to line of imbalance or overproduction.
  • Unrecognized talent. Failure to utilize the knowledge and skills of the employees.
  • Extra processing. Over-processing of information or doing any activity that is not adding value or required to produce products and services.

5S: Tools for Reducing Waste

The 5S System in the Lean Development Methodology represents the Japanese words that describe the steps of a workplace organization process.

  • Seiri (Sort). It is separating what’s essential from the nonessential items, and getting rid of things that aren’t needed.
  • Seiton (Straighten). The practice of proper storing of the essential materials, so the right item/material can be easily picked at the right moment as needed without waste of time.
  • Seiso (Shine). Cleaning the workspace without garbage, dirt, etc.so problems can be more easily identified.
  • Seiketsu (Standardize). Setting up standards to maintain and make 5S a habit.
  • Shitsuke (Sustain). Implementation of behaviors and habits to maintain discipline in the workplace over the long term.

What do the team get for following the principle?

With the implementation of Lean development methodology in companies they can now attain:

  • Great productivity;
  • Smooth operations;
  • Greater flexibility and responsiveness when it comes to customer demands;
  • Eliminate defects;
  • Improved product quality;
  • Reduced lead times and able to meet demands;
  • Increased customer satisfaction;
  • Empowered employees; and
  • Safe working environment.

Summary

The act of reducing waste and adding customer value, Lean defines long-term company survival and eliminating driving costs that greatly affects its products and services.

With its implementation, companies can achieve greater productivity, smoother operations, greater flexibility and responsiveness, eliminate defects, improve product quality, increased customer satisfaction, empowered employees, and a much safer workplace.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen

software development methodology

Software Development Methodology – Kanban

A popular workflow management method, Kanban (roughly translated as “card you can see”) is an Agile framework designed to manage the creation of products, highlighting continual delivery without overburdening the development team. It helps the team to harness the power of visual information by using sticky notes on a whiteboard to create a “picture” of their work.

The concept was first developed by Taiichi Ohno (Industrial Engineer and Businessman) in the late 1940s for Toyota automotive in Japan to overhaul its assembly and production system. It aims to optimally control and manage work and inventory at every stage of production.

One key reason it was developed because Toyota had inadequate productivity and efficiency compared to its American automotive rivals.

In utilizing the Kanban system, the Japanese automotive company achieved a flexible and more efficient “just in time” production control system with an increase in productivity, dramatically reducing cost-intensive inventory of raw materials, semi-finished materials, and finished products.

NOTE: Not to confuse with Lean, Kanban is aimed not at eliminating wastes but at optimizing the manufacturing process by regulating the supply of raw material.

kanban methodology

Source:  Zege Technologies

Tl; dr;

Kanban methodology emphasizes on balancing tasks demands with available capacity. It streamlines visual representation of workflow through a Kanban board that is known to be much effective than the simplest to-do list, for the reason that the human brain can process visuals better than any other data.

A basic Kanban board uses three columns known as lanes: To Do, Doing, and Done, but teams may decide to add more columns. This board can usually be realized through utilizing colored sticky notes on a whiteboard. The color-coded sticky notes indicate priorities, assignees, or any other information vital to the project.

Kanban: An Introduction

kanban board

Source: KanbanFlow

Kanban usually requires real-time communication of capacity and full transparency of work through a Kanban board to allow team members to monitor and see the state of every piece of work at every stage.

It works on three (3) basic principles:

  • Visualization. A Kanban board serves as an informative board to see descriptive items in series of available tasks and show their relationship to each other.
  • Limited amount of Work-In-Progress(WIP). This principle helps balancing the flow-based approach so teams only commit to a new task once an existing task is completed.
  • Flow. Being Kanban’s core concept, this principle simply means that when something is finished, the next highest thing from the backlog is then pulled into play. Promoting collaboration continuously, Kanban encourages active, ongoing learning and improving by defining the best possible team workflow.

Kanban’s benefits

  • Visibility. In terms of real-time status information, Kanban empowers project managers to effortlessly see everything they need to manage initiatives in one place in real-time rather than synthesizing information across countless sources.
  • More added value. With the visibility that the Kanban board provides, it lets project managers to keep the work moving, and immediately see if certain issues occur. Thus, providing more value to their teams, by removing any blockage in the flow of progress in initiatives you manage.
  • Continuous improvement. Through this concept, teams get to have the concept of continuous improvement because through shared visibility in how to get things done, project managers and their teams to work together to improve the process in delivering maximum value.
  • Improved communication among stakeholders. Through shared visibility, Kanban allows project managers to better communicate with key stakeholders by providing a bird’s-eye view of strategic initiatives to executives and other stakeholders for a clearer understanding. With a clear understanding of how work flows through the organization, stakeholders can make strategically smart decisions in behalf of the company.

Summary

Kanban is a popular workflow management method designed to give teams the visibility to deliver work on time, on budget, and on value. The concept is realized through using sticky notes on a whiteboard to create a “picture” of their work.

It works on three principles, namely Visualization, limited amount of Work-In-Progress (WIP), and Flow.

The management method is beneficial because it is visible, gives teams an added value, encourages continuous improvement, and better communication with stakeholders.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Scrum

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen

software development methodology

Software Development Methodology – Scrum

An agile way to manage a project usually software development, Scrum is a framework that allows member to focus on delivering business value in the shortest time. It has been used for a variety of work, but has initially been most popular for delivering software based products.

Here, instead of providing complete, detailed descriptions of how everything is to be done on a project, much is left up to the Scrum software development team. For the reason that, this team will know how to solve the problem they are presented.

scrum methodology

Source: APPDEC

Tl; dr;

Lightweight, simple to understand yet difficult to master, Scrum is a framework wherein people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value.

Scrum provides simple structure of roles, events, artifacts, and rules designed for teams usually of 3 to 9 members, who break their work into actions that can be accomplished within time-boxed iterations, called sprints, then track progress and re-plan in 15-minute time-boxed stand-up meetings, also known as daily scrums.It involves planning, product demonstration, and a retrospective.

Getting to know Scrum

scrum workflow

Source: DZone

One of the implementations of agile methodology, Scrum is ideally used in the project where the requirement is rapidly changing. Here, incremental builds are delivered to the customer in every 2-3 weeks’ time.

Fostering a self-organizing, cross functional team, Scrum has no overall team leader who decides which person will do certain tasks or how a problem will be solved. Things are decides by the team as a whole.

In 2016, Scrum is said to be used by 58% of software development companies.

Scrum Roles

Scrum’s management practices are much similar to those of Extreme Programming (XP), but, unlike XP, Scrum does not prescribe particular engineering practices.

  • The Product Owner. Solely responsible for managing the Product Backlog, the product owner expresses product backlog items clearly, orders items in the product backlog, certainly ensures the work value of the Development Team, see to it that product backlog is visible, transparent, and clear to all, and shows what the Scrum Team will work on next.
  • The Development Team. Consisting of professionals who execute the work of delivering a potentially releasable Increment of “Done” product at the end of each Sprint, the development team are self-organizing, cross-functional, recognizes no titles, do not contain sub-teams dedicated to particular domains, and accountability belongs to them as a whole.
  • The Scrum Master. The Scrum Master is a servant-leader that ensures that Scrum is understood and enacted through guaranteeing that the Scrum Team adheres to Scrum theory, practices, and rules. This member serves both the Product Owner and the Development Team in several ways such as facilitating Scrum events as requested or needed, teaching the Scrum Team to understand product backlog items, coaching the Development Team in terms of self-organization and cross-functionality, and removing impediments to the Development Team’s progress.

Scrum Events

The Sprint, considered to be the heart of Scrum, is a time-box of 1 month or less during which a “Done”, useable, and potentially releasable product Increment is created. It usually consists Spring Planning Meeting, Daily Scrums, the development work, Sprint Review Meeting, and Sprint Retrospective.

*Each Sprint may be considered a project with no more than a 1 month horizon. Sprints are used to accomplish something, having the definition of what is to be built, a design and flexible plan resulting to a product.

  • Spring Planning Meeting. Work to be performed in the Sprint is planned at the Sprint Planning. It is time-boxed to a maximum of 8 hours for a 1 month Sprint. For shorter Sprints, the event is usually shorter. The Scrum Master see to it that the event takes place and that attendants understand its purpose.
  • Daily Scrum. A 15-minute time-boxed event for the Development Team, daily scrum is an event to synchronize activities and create a plan for the next 24 hours.
  • Sprint Review Meeting. Held at the end of the Sprint for inspecting Increments and adapt the Product Backlog if needed, sprint review meeting allows Scrum Team and stakeholders to collaborate about what was done in the Sprint.
  • Sprint Retrospective. Occurs after the Sprint Review and prior to the next Sprint Planning, is an opportunity for the Scrum Team to inspect itself and create a plan for improvements to be enacted during the next Sprint.

Scrum Artifacts

  • Product Backlog. An ordered list of everything that might be needed in the product and is the single source of requirements for any changes to be made to the product.
  • Sprint Backlog. A forecast by the Development Team that is the set of Product Backlog items selected for the Sprint, in support of the Sprint Goal.
  • Increment. It is the sum of all the Product Backlog items completed during a Sprint and the value of the Increments of all previous Sprints.
  • Definition of the word “Done.”, When a Product Backlog item or an Increment is described as “Done,” members must have a shared understanding of what it means for work to be complete, to ensure transparency.

Summary

Scrum is a subset of the Agile framework that is iterative and flexible. As a practice, it offers more specific rules and procedures to the project application development project management process.It has been used for a variety of work, but has initially been most popular for delivering software based products.Here, instead of providing complete, detailed descriptions of how everything is to be done on a project, much is left up to the Scrum software development team.

 

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Extreme Programming

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen

software development methodology

Software Development Methodology – Extreme Programming

A software development methodology, Extreme Programming (XP) is one of the most important software development framework of Agile models designed to improve the quality of software and its ability to be responsive to client/customer requirements.It has already been proven to be very successful in IT companies and other industries, worldwide.

Extreme Programming’s development goes all the way back in the 90s when Software Engineer Ken Beck introduced XP to find ways in writing high-qualitative software quickly and being able to adapt to customers’ changing requirements. In 1999, he refined XP approaches in the book Extreme Programming Explained: Embrace Change.

man thinking about technologies

Source: CBT Nuggets

Tl; dr;

An agile methodology, Extreme programming (XP) is considered to be one of the most effective in software development, operating with a test-first development scheme.

Managers, customers, and developers are all equal partners in a collaborative team. The team self-organizes around the problem to efficiently solve it as possible.

The customer’s involvement here is higher than in any other agile methodology, being an active member of the team throughout the project life cycle.

Introduction to Extreme Programming

extreme programming workflow

Source: freeCodeCamp

Extreme Programming empowers developers to confidently respond to changing customer requirements, even late in the life cycle. It implements a simple, yet effective environment that enables teams to become highly productive.

This software development framework recommends taking the best practices that have work well in the past in program development projects to extreme levels.

In XP, daily meetings also known as stand-ups that lasts up to 15 minutes. During these meetings, goals are introduced and collaborated with the team. But, at the end of each cycle, there is a longer meeting where the project velocity is measured.

Extreme Programming’s Values

XP’s simple rules are based on 5 values that will help the team work faster and attain effective collaboration. Each of these key values provides a strong impact in the work flow.

  • Communication. Teams work jointly at every stage of the project and keep all members updated. Any problems or concerns are addressed immediately. Face to face discussion with the aid of a white board is just one of the best examples.
  • Simplicity. In order to save time and effort, developers tend to write simple code to bring more value to a product. This principle avoids waste and do only things that are essentially necessary to keep design systems simple as possible for easier maintenance, support, and revision.
  • Feedback. Team members, through having constant feedback about their previous efforts, can identify what certain areas are in need of improvement and revise their practices.
  • Courage. Having no “white lies,” team members evaluate their own results objectively without any excuse. Also, they always respond to changes.
  • Respect. Every team member assigned to a project contributes to a common goal with openness to communicate, provide and accept feedback on each other.

Extreme Programming Team Players

The XP team size varies from a small number of five people up to 12. With the complexity and high velocity of work, they are in frequent verbal communication.

The customer:

  • Sets the rules (i.e. priorities, functional tests, and user stories); and
  • Has regular meetings with the tracker in order to keep them well-informed about project progress.

The tracker:

  • Like a manager, the tracker takes responsibility in supporting the team and make sure the project’s development is on the right track.

The programmer:

  • Implements customer’s requirements for the project; and
  • Defines tasks; and
  • Estimates workloads in relevance to the user stories.

The tester:

  • Carries out trials of the code;
  • Analyzes graphs; and
  • Reports the results to the rest of the team.

The coach:

  • Arranges daily and weekly meetings; and
  • Typically responsible for disseminating valuable information to the tracker.

Advantages of Extreme Programming

  • Transparency. Visible communication within teams help everyone to keep up with the project progress. Everyone works on each individual tasks, yet regular meetings record the improvement collectively.
  • Cost Efficiency. Having reduced feedback loops and so does the cost of change. Compare to other methodologies, changes are implemented through the development period.
  • Teamwork. As team members work hard to accomplish goals within tight deadlines. They support one another through the entire project. Pair programming gathers them in groups of two, sharing ideas and creating software side by side.

Disadvantages of Extreme Programming

  • Code compromise design. The ultimate focus of XP is the code versus the design. What sells the application is the design. So if code overcomes the design, well the customer could be unhappy with the product if the design is not good enough.
  • Location. Extreme Programming projects are difficult to attain when the customer is away from the developmental team. XP interactions are typically successful when team members meet face to face.
  • Lack of documentation. Constant changes cannot be properly documented. There are risks of unexpected failures that cannot be tracked.
  • Stress. Having a lot of pressure in working on tight deadlines. If team members develop high stress levels in completing tasks on time, they are most probably prone in committing mistakes with details concerning the project.

Summary

Extreme Programming (XP) is a methodology that allows companies especially IT companies to save costs and time required to accomplish a certain project.

It has 5 values namely: communication, simplicity, feedback, respect and courage.

XP is cost-efficient, requires teamwork to accomplish tasks within project development, and communicably transparent. While its downside is stress, location, lack of documentation, and code overcomes design.

If you enjoy reading about software development methodologies, let’s take a look at other blog posts.

Software Development Methodology – Scrum

Software Development Methodology – Kanban

Software Development Methodology – Lean

Software Development Methodology – Dynamic Systems Development Method (DSDM)

Software Development Methodology – Feature Driven Development (FDD)

Software Development Methodology – Crystal

By Tuan Nguyen