Does modern software development practices prefer unit tests over UML diagrams? (part 1)
Reading time: 2 minsIntroduction
A question that’s been brewing in my mind for some time now has been. Are UML still being used the industry and if so are they prefered over Unit tests?
I wanted to look at the different software development methodologies, this would be a good starting point in answering my question.
Of course as systems having been growing in complexity, making it harder to build them within budget and within a certain time frame. Most large software teams need some form of methodology to follow.
We can place most software methodologies in two categories
- plan-driven/traditional or heavyweight, such as the Waterfall, Spiral
- Agile or lightweight(Xp, Scrum) [01]
In plan-driven type methodologies, there’s a heavy reliant on meetings with the stake holders, in addition to created artifacts such as requirements specifications, user interface designs and UML diagrams, just to name a few.
While in agile type methodologies, the focus is on the software and managing the many changes during the software development cycle.
Failures of Waterfall
In “Agile and Iterative Development: A Manager’s Guide”[02], author Larman states that in one a study of 1,027 IT projects in the United Kingdom, Study reported that “scope management related to attempting waterfall practices was the single largest contributing factor for failure.” A damming study on the effectiveness of the traditional model, hence why in recent times, software teams have moved to the agile approach to developing software systems.
Waterfall has a strict sequential steps that represents the different development phases:
- Requirements
- Design
- Development
- Test
- Release
UML diagrams would be part of the “Design” phase, once that’s done, the team moves onto the next phase. But what if the requirements change? And requirements will change, does that mean that the UML diagrams that were created previously will have to change, in addition to the code. To me this isn’t sustainable for large systems and isn’t flexible to change.
In the second part, I’ll be looking at Agile methodologies and how they play a part.
References
[01]Suitability of Modern Software Development Methodologies for Model Driven Development by R Picek - 2009
[02]Craig Larman (2003) Agile and Iterative Development: A Manager’s Guide