Fundamental Software Design Concepts and Principals

A software design is a representation of how a particular piece of software is built and specifies how the system is to be developed.

By Tim TrottSoftware Engineering • February 26, 2010
Fundamental Software Design Concepts and Principals

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.

About the Author

Tim Trott is a senior software engineer with over 20 years of experience in designing, building, and maintaining software systems across a range of industries. Passionate about clean code, scalable architecture, and continuous learning, he specialises in creating robust solutions that solve real-world problems. He is currently based in Edinburgh, where he develops innovative software and collaborates with teams around the globe.

Related ArticlesThese articles may also be of interest to you

CommentsShare your thoughts in the comments below

My website and its content are free to use without the clutter of adverts, popups, marketing messages or anything else like that. If you enjoyed reading this article, or it helped you in some way, all I ask in return is you leave a comment below or share this page with your friends. Thank you.

There are no comments yet. Why not get the discussion started?

New comments for this post are currently closed.