Has the design phase become extinct in an SDLC?


SDLCI started my career 21 years ago with Object Oriented Programming (OOP), which was the new buzzword then. I happened to be one of the two fortunate candidates from a batch of 30 freshers to get an opportunity to work in OOP. Back then, one of the very first things I got introduced to was Object Orient Analysis & Design (OOAD), specifically Unified Modeling Language (UML). In fact, after Requirements Gathering, Analysis and Design phases were considered to be the most critical and key elements… before the artifacts such as class diagrams, sequence diagrams, etc. were handed over to the programmers for coding. There used to be strict guidelines about how the design team should identify the domain model/classes, data models and the various manager classes and operations provided by the classes. It was critical because one had to ensure maximum reuse, and maintain an optimal level of code quality to facilitate smooth execution of change management and maintenance phases.

In the last four years, whenever I have been asked to help review projects or improve Non-Functional Requirements
(NFRs) in projects on performance and scalability, I have been shocked (initially) to find that hardly any project creates design artifacts, let alone doing it religiously to create traceability – from requirements > analysis > design > code deliverables. About 10 years back, analysis/design tools such as Rational Rose, TogetherJ, Telelogic Raphsody, etc., along with requirements management tools such as RequisitePro and DOORS, were very popular. Now, vendors like IBM have taken these products to a completely new level, with platforms like JAZZ. So, today, it is possible to create complete end-to-end traceability along with an integrated development and deployment environment including mechanisms of continuous integration. Within my engagements at Capgemini/Sogeti in India, I hardly found any project using tools to create some basic design artifacts. MS Word seemed to be the preferred choice for any design collateral and hence, it turned out to be a one-time document instead of a living document (continuously changing), as it’s supposed to be.

This got me thinking … has the design phase become obsolete?

When I started analyzing  the causes in details, I looked at the probable factors responsible for the way software ecosystem had changed over the years:

1) Custom development projects are no longer executed grounds up from the scratch, using languages such as Java or Microsoft. There are mature frameworks such as Spring and Hibernate, which are used to further develop the applications. In fact, nowadays, multiple technologies in addition to Java and Microsoft(.net, C#) are being used in combination.

2) The overall solution landscape has evolved with end-state architectures, having patterns such as service-oriented architecture and integration bus, introducing a separation of concern across these components. Other technology domains like Content Management, Master Data Management, CRM and Big Data and Analytics have also evolved. There are specialized products from various vendors for each of these components. So, each solution tend to be an integration of various components.

3) The number of skills required to execute these projects has increased, thus making it difficult to follow a uniform design template across projects.

4) UML being more Object Oriented does not necessarily support well some of the new technologies.

5) Businesses are demanding quick time to market and hence, a quick turnover of new solutions. This puts pressure on project teams to conduct an elaborate design exercise.

Apart from these factors, Agile development methodology adoption has also grown, but again, going Agile has never proposed reduction of design efforts. Therefore, I am not considering this as a key factor.

In my opinion, to capture design, it’s essential to come out with new languages in addition to UML. Architecture modeling languages like Archimate from Open Group looks promising for architecture, but falls short when it comes to detail designing.

Would like to know whether my architect/designer/developer colleagues share similar thoughts about the way design is being done at present…

Sogeti Labs


SogetiLabs gathers distinguished technology leaders from around the Sogeti world. It is an initiative explaining not how IT works, but what IT means for business.

Related Posts

Your email address will not be published.

  1. Claude Bamberger January 27, 2015 Reply

    As an architect, I do, of course, share most of your analysis. Many projects suffer failures or difficulties lacking proper and shared software design but also system design.
    I could add that requirements (at enterprise level and product level), including NFR, are essential to capture, and maintain, to instill “reasons” for the design.

  2. Rajesh Panda January 28, 2015 Reply

    Another reason for this is due to configuration and customization of the products being used in the solution implementation. Any development work done on top of the product technical artifacts lead to tailor how you document your design components.

  3. Dilip Purohit January 29, 2015 Reply

    Appropriate efforts needs to be allocated to design phase. Further, the designing gate reviews need to be conducted with client to avoid ambiguities in implementation of requirements. If more thorough work is done at design phase, rework efforts and defects can be minimized.

  4. Jai Gharge January 29, 2015 Reply

    I agree with you Nitin. From last decade there is a change in trend to use existing tools, products available in market instead of starting development from scratch, due to which focus is more on high level architecture with missing detailed low level designing.
    Dynamic changes in requirements during Implementation phase requires up-gradation of design documents which happens rarely. Design review must take place before start of any phase in SDLC.

  5. Arun February 3, 2015 Reply

    I agree with you since the smarter requirements of clients, shift of hardcore engineering and research topics (like AI, cognitive/analytic algorithms) from laboratory to organization has made us rethink on all phases of IT. In fact every organization now need thinkers and polyglot IT professional at all levels more than before. It is now no more typical managerial aspect.