Skip to content
Show
Software Engineer Last Updated on October 24, 2022. This article focuses on documenting a detailed design, see Solution Design for concepts and definitions. Need to write a Solution Design Document (or LDD for Low-Level Solution Design) for your upcoming project? This article will equip you with a comprehensive set of tools to guide you through the process. The design phase of IT projects is an integral part of the Software Development Lifecycle, and just like any other stage in the process, it involves producing quality artefacts. Without quality outcomes, any subsequent dependent steps will suffer. Quality outputs like documentation and other artefacts are essential requirements for superior, smooth-running processes, perfecting your deliveries, and strengthening your value proposition. A couple of notes, however, before we move on. If this is your first time creating a Solution Design document, or perhaps you are not entirely sure what Solution Design involves, we recommend you go through this article first. It will provide some context and lay the groundwork for the present article. It will also explain why designing a solution before implementation is vital for the success of any project. This article focuses primarily on Low-Level Solution Design (or LLD) and how to document it. If, instead, you are after a High-Level Solution Design (HLD), make sure to follow that link. Solution architecture and solution (or system) design are two overlapping but essentially different processes implemented at different stages of the project lifecycle. We recommend that the reader familiarize themselves with both concepts before proceeding by following the links. Heavy design and documentation are not for every project, however. Agile and other lightweight methodologies generally steer away from extensive and extreme design, planning, and documentation. Depending on the nature of your IT project and the delivery method you adopt (Agile, DevOps, Waterfall), you might find investing in Solution Design documents a vital piece of your delivery process. In the coming sections, we look at:
2. Table of Contents3. What Is a Solution Design Document (LLD)3.1 DefinitionLet’s review a few key concepts defining a Solution Design document. Solution Design Document These concepts are as follows:
A typical Solution Design document usually involves detailed information on the following system topics:
Solution Design documents generally cover the following areas:
The typical audience is formed mainly of technical people. 3.2 Product vs SolutionPeople sometimes use the words product and solution interchangeably, but that is not very accurate. I have provided a comparative analysis of product vs solution. You can follow the link if you want the full details. For the purpose of this discussion, we can summarize the product vs solution discussion with the following words: In contrast to “product”, which can be defined as a tool or service that delivers functionality of interest to the client, a “solution” is expected to solve the customer’s problem(s). 4. Value of Having a Solution Design4.1 ObjectivesThe following list summarizes the aim of having a Solution Design document:
4.2 The Value of Good DocumentationThere is an adverse view among professionals, especially Agile proponents, on the necessity and validity of extensive documentation and whether perhaps we can do without it. Our view is based on the following rule: achieving Operational Excellence in Software Delivery requires identifying those processes and outcomes that generate business value. If the business value of having Solution Design documents is demonstrable, it must be part of your SDLC processes. Investing time and effort in designing and documenting IT solutions is one of many tools to help you achieve smooth deliveries in high cost of change projects. The risks of poor design processes are: The key idea is to identify the appropriate quantity and quality of good documentation for each project. 4.3 Desired OutcomesCheck the below image to see the expected outcomes from a Solution Design document. We will cover each of these in the next sections. Outcomes of a Solution Design Document Let’s review these items one by one. The primary objective of an LLD is to provide internal and external stakeholders with enough confidence in the design so that they can provide their inputs and ultimately buy in. You need your stakeholders to buy in for active ownership and maximum collaboration. And to do that, they must be assured that the business requirements have been properly understood. Include enough details for the development team to understand the expected source code changes. Use pseudo-code if required. When changes are properly documented, the programmers avoid having to design on the fly. Developers and testers can now make precise estimations of the efforts required. Using the valuable information on expected changes, Project Managers can prepare detailed implementation plans. Remember, we are still at the design phase of the SDLC! furthermore, developers and testers will have a solid foundation they can lean on to start writing their test cases. This information is vital when applying Test-Driven Development (TDD), a practice we highly recommend. This step is crucial in eliminating any avoidable future rework due to poor design. The dearest topic on the software tester’s heart is the scope of change and how much regression testing is expected. In large, complex, and mission-critical solutions conducting an Impact Analysis exercise will help you mitigate the risk of dangerous side effects. It will help you determine those features that have been impacted by the change and will need to be tested for regression problems. The LLD should answer those questions by performing an impact analysis on the anticipated code changes. A bidirectional traceability matrix is an excellent tool for achieving precisely that. If you do not wish to perform this, you must have automated testing that allows you to get full coverage with on-demand testing. risk generally comes from a project’s known or unknown unknowns, such as changing requirements or adverse side effects. Use the impact analysis to evaluate and mitigate any risk early on in the project. Use your expert knowledge to determine whether any risk when deploying the changes to production is anticipated. 5. Addressing Project ConstraintsDesigning a proper solution helps you deliver an application that the customer wants to use. Customers are usually happy to compensate you for your efforts if they can derive value from your products. Therefore, your products must address their business needs. Customer needs are usually communicated in the form of business requirements. These can be viewed as multiple and often conflicting constraints. Designing a solution is essentially an optimization process whereby a solution designer or architect finds a technological solution that offers maximum value at the lowest cost. The best and most familiar example of project constraints is time and money. The customer typically wants top value delivered within a specific budget and timeframe. A Solution Design document brings all these constraints together in one place and allows you to understand the mutual impact of one another. IT Project Typical ConstraintsThe above diagram shows the Solution Design process with inputs, outputs, external requirements, and constraints. Some external constraints like security or compliance might be catered for already within the business requirements documents. In some cases, however, an industry-grade application is expected to conform to regulatory requirements and industry best practices without explicitly listing them in any business requirements document. 5.1 Business RequirementsThe default method for communicating business requirements is generally via a business requirements document (or BRD). Alternatively, clients can use Epics and User Stories when practising Agile. In case a BRD is not available, the LLD needs to capture, in addition to design details, a mutually acceptable form of the client’s requirements. Buying new hardware is always a project because it usually requires budgeting and many approvals. In addition, many departments such as accounting, management, and procurement will be involved. Hardware is Not Just Servers! It can also be specialized equipment, network components, cabling, racks, licenses, support, administration, and significantly extra space in the data centre. Be sure to include a generous amount of detail on the hardware setup. Also, cover all your environments from development to UAT, and finally, production. 5.3 Future ProofingFuture-proofing in technology is never guaranteed. We can, however, do our best to ensure that what is implemented today is flexible, modular, and scalable enough to accommodate any potential changes in load, performance requirements, and new features. These properties are essential if you want your application to live for a long time, maximizing your ROI. To achieve this, do what you can to ensure that the new design does not burden the system with unnecessary constraints. 5.4 Industry Best PracticesMost clients automatically assume that the vendor follows industry best design, development, and testing practices. Unfortunately, this is not always true. Give the reader information on the internal production processes you intend to follow. Mention essential steps such as code review and test plan preparations. Finally, let the client know how to reach you for support and how you typically address quality issues. This will make the support process clear and efficient. 5.5 Security and ComplianceHeavily regulated industries such as insurance, health, and payments must remain on top of their regulatory requirements. It is possible to have huge compliance updates warranting their own project. If you work in similar industries, include security and compliance details in your analysis and design. 5.6 Backward Compatibility and Regression IssuesImagine that your credit card suddenly stops working because it is not supported by the latest software version deployed yesterday! To avoid any drama during production rollout, perform a detailed analysis of the impact on downstream systems. More crucially, look for any potential backward compatibly problems. Once you have done that, you can use the results to limit the scope of your testing while maintaining good coverage. Mission-critical systems typically require an uptime of 99.5% and above. Businesses allow these systems to go down for scheduled maintenance and upgrades, which means that any design fault can become a significant pain during go-live. 6. What Does a Good Solution Design Document Look Like?We already talked about the contents of the design document. Now it’s time to say a few words about style. Writing Technical DocumentationThe idea is to follow industry best practices and guidelines for technical documentation. This section presents five pillars that can guide you through the writing process. 6.1 Identify Your Audience6.1.1 What It MeansIdentifying the audience of any technical document is the most significant step in the writing process as it will drive the document’s style and depth and ensure that your stakeholders remain adequately informed. In the context of Software Development, the audience might include business analysts, technical staff such as developers, testers, DevOps engineers, and project managers. Excellent technical documentation addresses each audience segment in a language they understand. Find out what the audience is expecting from this document. Make sure there is a section in the beginning that anybody can read. Call it Overview or Executive Summary. This introductory section will help the reader determine whether or not this document is helpful for them. 6.1.2 How To Do ItInclude the following sections in the document:
6.2 Outline the Project Scope6.2.1 What it meansThe LLD should be a one-stop shop for Solution Design. It needs to cover the system front-to-end. But more importantly, the low-level Solution Design specifies which changes are in scope and which are not. Unclear requirements are the #1 cause of IT project failures. Make sure you clearly outline what’s in scope and what’s not. Only revisit scoping when absolutely necessary to prevent scope creep. Requirements in the BRD should have a one-to-one mapping with sections in the LLD. This way, you guarantee that all requirements are covered. An LLD should clearly delineate the boundaries of what’s in scope and what’s not. A good LLD will detail the impact on the whole ecosystem allowing project managers from both sides to have a holistic and full view of the landscape, paving the way for everybody to buy in. 6.2.2 How To Do It
6.3 Provide Enough Clarity6.3.1 What it meansSoftware is a complex business, and the LDD should try to untangle as much of that complexity as possible. 6.3.2 How To Do ItUse the below questions to determine whether the LDD is adequately clear.
6.4 Be Precise6.4.1 What It Means
Technical documentation should not contain ambiguous statements that can be interpreted differently. Being precise in your words shows the reader that you are fluent in the topic. It also serves to build that level of confidence required for successful projects. Also, being accurate is not enough; you need to be precise. This can only lead to deferring design decisions to the development phase and having to design on the fly. To illustrate the point, consider the statement, “The age of a man is between 0 and 200 years”. It is fairly accurate but not very precise. A much more useful expression would be: “The age of that man is 70 + or – 5 years”. 6.4.2 How To Do ItHere are three steps that will make your documents clearer:
By having a definite position on every question, there will be no escape routes when things go wrong. This strategy ensures commitment from everyone. The best way to evaluate clarity and completeness is by getting early feedback from collaborators and stakeholders. This can be achieved by setting up sessions where the design can be “challenged” and alternative pathways explored. 6.5 Comprehensive But Not Tedious6.5.1 What It MeansThe Solution Design document should provide enough detail so that you don’t have to look at other documents. Having said that, it should not try to replicate information that can be obtained easily from other sources. Also, it should not aim at replacing the functional specs of any of the constituent products. 6.5.2 How To Do ItA good test for comprehensiveness can be as follows: if the author decides to leave on a two-week vacation, can work resume smoothly and efficiently for the entire period of her absence? As with any technical documentation, the quantity and relevance of the presented information ultimately decide its usefulness and accessibility. 6.6 Make It An Easy Read6.6.1 What It MeansCreate a document that is easy to read by the intended audience. Readability tests (Flesch-Kincaid) measure how easy or difficult a passage is. If technical writing is your thing, read on how these tests assess readability and see if there is anything you can improve. 6.6.2 How To Do ItThe following list should help your reader run smoothly through the document.
7. Solution Design Document TemplateUse the below topics as a skeleton for your Solution Design document template:
Solution-Design-Document-TemplateDownload 8. ConclusionTry to avoid the temptation of diving into development or implementation straight after the sale is closed. This action is a common mistake that puts your project at unnecessary risk. Investing in design effort gets everybody on board, allows all stakeholders to voice their concerns, and prevents the project from proceeding on assumptions instead of facts. Unless your project is tiny, there is no excuse for proceeding without any design if you want to achieve Operational Excellence in your work. You will need to decide how much documentation, design, and analysis efforts are enough. Draw a line below which you do not go, regardless of the project’s size or proximity of deadlines. If your processes today are messy, invest some time to improve them. Make sure you have templates ready, knowledge shared and propagated between teams, and your people clear on the development lifecycle. Avoid cheap and empty slogans like “we don’t have time”. Root out the problems that prevent you from finding the time to generate quality work. 9. Featured Articles
|