Learn, Train, Develop Issue 001 | Page 2

Feature

iDesign

BY Juval Lowy

Project Design

1

There are several misconceptions regarding project design. The first is that it is part of project management. In fact, project design is not project management.The correct relationship between project design and project management is what architecture is to programming. Furthermore, devising a good project design stems from your system architecture and doing it properly is a hard-core engineering task – designing the project. This design task requires both the project manager and the architect to work closely together to determine the best overall plan.

The software development industry has grown to accept architecture and system design as a required part of every software effort. Even approaches that formally eschewed any amount of initial design now acknowledge the need to invest up-front in architecture. There are proven methodologies of accomplishing architecture even in the face of unknown and shifting requirements. We have learnt how to encapsulate change and design a robust system, without knowing the last detail of the design or the code itself.

IT'S ABOUT TIME

While software engineering is coming of age, there is a natural convergence with other more traditional engineering disciplines. Some 20 years ago software architects were practically non-existant, yet today they are commonplace. But software architects are nothing more than the traditional system engineer in other domains. Even Agile as a methodology has strong correlation to lean manufacturing and even TQM. It should not be a surprise to see project design making a début in the software world - after all, the other engineering disciplines have been designing their projects for decades. The techniques of software project design are specific to software projects, but in the abstract there is nothing new - these are the same ideas that engineers have been using in classic engineering projects since the 1950's. To use an analogy: if I ask you to design a system that is maintainable, reusable, extensible, secure (or safe), and of high quality, you cannot tell if I am talking about a mechanical system or a software system. In fact, the approach, the Zen of achieving these goals is the same in software as it is in traditional engineering. In much the same way, if I ask you to design a project that will comply with a set budget and deadline, within acceptable risk, be traceable and manageable, you cannot tell if I am talking about a bridge or an ERP system. And not surprisingly, in the abstract, the techniques for designing both types of projects are identical.