Fundamental Software Design Concepts and PrincipalsA software design is a representation of how a particular piece of software is built and specifies how the system is to be developed.

Software design, a crucial aspect of the software development process, encompasses the construction of a specific software piece. It involves requirements, practices, procedures, and life cycles (both project and component), and outlines the system's development plan.
Software design falls into the much larger concept of a structured methodology. Organisations usually fall into two categories: those who have adopted and rigidly implemented a formal methodology and those with no methodology.
Structured methodologies, a key component of software design, have been developed to offer a comprehensive set of standards, tools, techniques, and documentation. They serve as a valuable addition to the traditional approach to systems analysis.
Systems developed today are large-scale, and it is often difficult, if not impossible, to write specifications 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, a conceptual leap from analysis to design, and difficulty 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 principles upon which a methodology is constructed ensure that a project is broken down into defined stages, each 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; it only changes how it is processed.
The choice of methodology is a strategic decision that should reflect the unique nature of your project. With a plethora of methodologies available, each with its own set of advantages and disadvantages, you have the freedom to select the one that best aligns with your project's needs. Remember, these methodologies are not rigid structures, but flexible frameworks that 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 offer documentation standards and review points (and milestones) for quality assurance, giving you the power to shape your project's journey.
A methodology will not perform the analysis and design; an analyst must still use the experience to use the tools and techniques provided.
The life cycle is at the heart of any methodology, 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.