Software Low-Level Design Introduction


Rod Stephens in his book Beginning Software Engineering divides software design into two parts: high-level and low-level design. High-level design is a task category under the topic of software engineering. After you have a high-level design, creating your low-level design is a process of adding more details to the high-level design until there is enough information for coders to begin coding such that the original software requirements are met.

High-level design has already broken the project down into pieces, so that when you begin writing your low-level design you can work on it piece by piece. It’s a divide and conquer approach. How much information do you include in your low-level design? You don’t include the programming language code itself. What you do include is algorithms and database details. For example, you would include a list of the database tables used in the application along with the column names if possible, along with a brief description of what kind of data the columns store. You can include the units of measure as well. A unit of measure is, for example: dollar, kilograms, meters, percent and so on. When designing the database start with the top level by asking what type of data do we need to gather.

Lots of Questions and Decisions

What about the business rules? What about breaking down the project into code modules. What about the menu structure? What about the design of the URL’s and their structure? What about the use of code libraries? What about user roles and password policies? If it is a website, what about the ability to log in from Facebook or another website? What about the design of the front end including color schemes and graphics? What about the software licence and the privacy policy?