13 Jul Choosing an SDLC
Abstract: Organizations that are developing custom software solution are faced with the difficult choice of picking the right software development life cycle (SDLC). This article summarizes the steps an organization would have to go through in order to make the best possible choice.
A software development life cycle (SDLC) – aka as software development process, is a methodology an organization developing custom software must use to be successful. Industry experience demonstrates that attempting to engage in the production of software without a well-defined, well communicated and relevant SDLC is a recipe for disaster.
The industry has defined dozens of possible SDLCs. The SDLC are all defined by process models and tools that must be used to implement them. Selecting an
SDLC is not easy:
– There are many SDLCs to choose from, some are mainstream, some are not. It is therefore difficult for organization to filter out the SDLCs that may be relevant to them from the ones that would be terribly wrong.
– There is no best SDLC. SDLC have been designed to meet the needs of certain situations, certain verticals, certain type of software, certain type of organizations.
– There is no one-size-fit all SDLC.
Some SDLCs are marketed as products and services, and therefore come with glaring marketing material that is hiding their true applicability to a context.
The issue facing organization today is to select the right SDLC and avoid the pitfalls of “trying” something new without understanding the implications of
their choice. The recent “Agile” trend of SDLC is a typical example of the above problem statements. While an Agile methodology (e.g. XP Programming, Scrum,
OpenUP) is an excellent choice in many situations, it is also a questionable choice in some situations or when not accompanied with a prescriptive framework.
Many organizations have jumped on the Agile bandwagon only to face quickly some of its shortcomings.
Selecting the right SDLC is a process in itself that organization can implement internally or consult for. The is a multiple step process:
STEP 1: Define the criteria that will eventually allow your organization to take the best possible solution.
Some of the selection criteria or questions that you may use to select an SDLC are:
– Is the SDLC appropriate for the size of our team?
– Is the SDLC appropriate for the geographical situation (co-located or geographically dispersed)?
– Is the SDLC appropriate for the size and complexity of our software?
– Is the SDLC appropriate for the type of projects we do?
– Is the SDLC in line with our business strategy (e.g. innovation, time-to-market, grade, quality…)?
– Is the SDLC appropriate for our Industry?
– Is the SDLC appropriate for our engineering capability?
STEP 2: Learn the differences, the pros and cons of each SDLC.
SDLCs are not equal in their properties and advantages and disadvantages. In order to select the right SDLC one must be very familiar and experienced with the
candidate SDLCs that will be evaluated. In particular, one must not only trust the promises of the marketing brochure that will promote the SDLC. Achieving such
knowledge is not straightforward and it is recommended to seek advisory services.
The industry has defined multiple SDLCs known as Waterfall, V-model, RAD, RUP, Spiral, FDD, DSDM, Agile, to name a few. They are applicable in different context.
STEP 3: Assess the needs of your organization
To be able to assess the candidate SDLC, one must truly understand the nature of their organization. Internet-businesses and medical software would have
completely different requirements in term of software quality, time-to-market or economics. One must study the business context, industry requirements and
business strategy to be able to value the candidate SDLC against their selection criteria.
STEP 4: Apply your criteria against your context.
As a final step, one can run through the list of SDLC and qualitatively and quantitatively assess each SDLC against the business context. One of the SDLC
will come up on top. At this point the organization, through their SEPG, must engage the SDLC adoption process, possibly right-sizing and customizing the
process to their needs. This allows the organization to maximize their software development investment and deliver software in the most successful way.
The selection of an SDLC is critical and cannot be improvised or influenced by industry trends.
A SDLC selection and adoption process is needed so that organizations maximize their chances to deliver their software successfully.
Selecting and adopting the right SDLC is a management decision with long-term implications.