On the other note, I would say, if design is failed, software is failed. No software can be built or can evolve without a good design first. Today I was discussing necessities and importance of Design in SDLC (Software Development Life Cycle) with some of our new joinees. Reply was stunning. Some chuckled and some nodded in typical Indian style where you can not derive whether they are affirmative or other wise. Their thinking was "Design is important but not that extent I am thinking and pressing about it". Coding is the most important part for any software development as per their belief. I don't blame them. Here in India, you don't learn much about the full SDLC and especially design and its importance. Ok, let's dive deeper into the design fundamentals.
The important phases in the designing are Architecture, SD[Optional], HLD and LLD. Architecture describes how the software will work at very broad level. How each module will work from the user's perspective. How business logic will talk with data base and vice versa. Ones architecture is done right with riagorous discussion and debate over funcationalities at top level, next phase is SD (System Design). SD can be skipped for smaller projects where HLD ( High Level Design ) is managable without SD. But for large scale projects, SD is must and should not be ignored whatsoever. Then comes the HLD phase. In HLD phase every module is detailed with its corresponding class level design. Each class's funcationality is definded and also interface with other classes. Any abstract interface also is defined in HLD. Ones HLD is finalized, LLD should be prepared. LLD consists functional level design along with pseudo code as well as necessary variable definitions. Function states should be considered upon completion. After LLD is perfected, coding can be proceded. This is very abstract level discussion of design in SDLC. I'll keep posting about each level of design in details periodically.
Wednesday, March 31, 2010
Why Design Is So Important In Software Development Life Cycle?
Labels:
design,
HLD,
LLD,
SDLC,
software development life cycle