Software Design Concepts
A software design is a representation of how a particular piece of software is built and includes requirements, practices, procedures, life cycles (both project and component) and specifies how the system is to be developed.
Software design falls into the much larger concept of a structured methodology. Organisations usually fall into two categories: those who have adopted and rigidly implement a formal methodology and those with no methodology at all.
Structured methodologies have been developed to provide a comprehensive set of standards, tools, techniques and documentation, which compliments the conventional approach to systems analysis.
Systems developed today are large scale and it is often difficult, if not impossible, to write a specification for the whole system. Structured software design and analysis methods allow the system to be broken down into smaller "mini-systems".
The conventional approach to systems analysis has several inherent weaknesses including communication, minimal user involvement and a conceptual leap from analysis to design as well as difficulty in maintaining the system.
The objectives of any methodology should be to establish:
- A style and procedure for the way a system is developed or an existing system is enhanced.
- Management control to provide milestones and checkpoints for the development.
- Quality of the product, correct to the specifications.
The principals upon which a methodology are constructed ensure that a project is broken down into defined stages, with each stage further broken down into separate tasks. Each task should produce precise documentation. A methodology should be data driven, not process driven. The data in the system does not change, only the way it is processed.
The particular choice of methodology should reflect the nature of the project. There are many different methodologies in existence and they all have their own advantages and disadvantages, however, they all provide the building blocks for analysis and design with interfaces between the blocks and tools to carry out the tasks associated with each block. They all provide documentation standards and review points (and milestones) for quality assurance.
A methodology will not, however, perform the analysis and design, an analyst is still required to use the experience to use the tools and techniques provided.
At the heart of any methodology is the life cycle, with each methodology having a different layout and set of ideas. In general, they all share a common path that consists of:
Initial Idea » Design » Implementation » Test » Deploy » Review
Each stage is broken down into many smaller steps, and it is often an iterative process. The next tutorial will cover life cycles in more depth.