Software made easy – it sounds quite appealing, doesn’t it? In reality there are few novices that can wrap their head around the complexities of many software development concepts: however, if they are ever going to do so then you can bet it will be with lightweight software development.
That’s because the idea of lightweight software development is that the method should only have a handful of practices and rules, simplifying the process. Alternatively, it could just have rules that are easy to follow. This puts it in direct contrast with ‘heavyweight’ software development which is built on complex methods with lots of rules.
In addition, lightweight software development focuses on dealing with changes in environment and changes in requirements: the idea is to be adaptive and flexible.
So what are the most popular lightweight software development methods?
Let’s take a look at some of the leading lightweight software development methods, also known as lightweight methodologies.
Adaptive Software Development
Created by Sam Bayer and Jim Highsmith, adaptive software development was born from rapid application development. Its main focus is on the idea that continued adaptation of a process should be seen as normal. Adaptive was effectively a replacement for the waterfall cycle and provides continuous learning as well as adaptation for the project. Each lifecycle should be mission focused as well as risk driven, change tolerant, feature based and iterative. Another key aspect is speculation, which looks at the paradox of planning. The idea here is that assumptions are made that the stakeholders are wrong for most aspects in the mission, helping to define a process. This allows the project to be initiated and the cycle plan to be conducted.
Described by Alistair Cockburn, Crystal Clear is a lightweight methodology that is part of the Crystal family. The idea is that it is applied to teams of six-eight developers that work on systems that are not life critical. They place the emphasis on habitability and efficiency while focusing on people rather than artifacts or processes.
Among the properties it requires are: reflective improvement, fast and regular delivery of usable code and osmotic communication. In addition, there are a host of optional properties – focus, easy access, personal safety and automated tests.
The idea behind Extreme Programming, often called XP for short, is that it should improve the responsiveness and quality of software in order to meet the requirements of the consumer. It is a form of agile software development that relies on fast releases across short development cycles – the intention being to boost productivity while allowing checkpoints to be established to take into account new consumer requirements.
There are a host of elements that make up extreme programming such as extensive code reviews, programming in pairs and not programming features until they are needed. The overall goal of extreme programming is to organise people so that they are able to produce more high-quality software as quickly as possible. It should reduce the costs associated with making changes while embracing these changes by ensuring they are planned for and seen as desirable.
Feature Driven Development
We have looked at feature driven development at Arrk Thought Leadership before (see Feature Driven Development: A Guide) – however, here is a brief summary. In short, FDD is an incremental and iterative software development process. Its aim is to blend a host of industry practices together with the focus being on client-valued functionality with the aim of producing working software in a timely fashion. FDD focuses on five main processes.
The first is to develop an overall model which highlights the problem with the domain. Process two is to create a feature list which divides domains into subject areas that contain information on business activities. Process three is to plan by features, assigning various feature sets to the programmers. The fourth part is to design by feature, in which a design package for each feature is created with a chief programmer selecting a group of features that should be developed within a two-week period. Finally, process five is that when the design inspections are complete designers should plan an activity for each feature and develop the code for their respective classes.
One of the earlier software development methodologies, ICONIX actually pre-dates Extreme Programming, Agile and the Rational Unified Process. It is UML use case driven, but actually more lightweight, although it relies on more design documentation than is necessary with XP. At the heart of ICONIX is robust analysis which is used to bridge gaps between analysis and design by reducing ambiguity. It has four main milestones: a requirements review, a preliminary design review, a detailed design review and deployment.
These are just some of the more popular lightweight software development methods. What’s clear is that all of them are designed to simplify the development process and encourage faster and more efficient outputs – and that is the crux of lightweight.