Software Planning 101 - Part 1/7
The Plan of a Software Solution
Why Software Planning?In this article we are going to explore the need for software planning. Software planning is a term that is introduced to describe the software architecture, design and other related activities that happen before implementing the software. The details of software planning are not discussed here, as first the need for it will be discussed.
Multiple software solutions existsSoftware is delivered in response to a request for some functionality or requirements that need to be fulfilled. When we would give the same functionality request to multiple developers then all developers will come up with a solution. As experience teaches us, not all developers, actually none of them, will deliver the exact same solution. What is being pointed out here, is that a single request has multiple software solutions.
Not all solutions are equalSince the existence of the multiple solutions, as software scientist, your brain should start asking the question: does it matter what solution we pick - are they all equal or are there “better” solutions?
From a college experience: the same assignment was provided to all the students, and each student came up with his/her own solution. When discussing the different solutions, many new insights in how to program the solution are discovered. And definitely, there where solutions that were easier to write, maintain and/or understand.
From an industry experience: software engineers work on multiple projects and some of the projects are easy to work on. But there are often a few projects that always cause headaches when alter or extending the software. The headache is most of the time not to do with the specific requirements for the software, but with the specific implementation.
Planning eliminates bad solutionsSo by omitting for now the discussion of “better”, we still can draw the conclusion that not all software solutions are equal. This is why there is a need for software planning. Without software planning you may end up implementing a solution that is so much more headache and frustration generating than necessary!
Defining Software PlanningSoftware planning is part of the software development lifecycle. The software development lifecycle is part of the bigger product lifecycle. It can only take place after the functionality has been formulated. The next step is to develop the User Experience: the interactions and user interfaces. In short, the product architecture, and user experience architecture, comes before the software planning.
Software planning itself exists of two parts: architecture and design. Software architecture is focussed on constructing the software in such fashion that future changes can be easily accommodated. After that, software design has another goal: how can we implement the software with low effort and minimum risk while granting the software architecture. Those two steps combined are the software planning.