BIT 286: Web Applications Software Design Documents 2 Info Needed To Plan a Software Project From What is a software design? 1. “a description of the business requirements or needs” 2. “a description of how these requirements will map to a set of features and how the features will work from the perspective of the customer” 3. “a description of how these features will be implemented and the work list breakdown for implementing them” 4. “a description of how the implementation will be validated.” [I.e., testing] We’ve merged #1 & #2 into the SRS #3 is called a “software design document” We’ll put the work breakdown structure off till next week (along with Gantt charts) 3 SDD (or ‘design doc’) “A design document is a way for you to communicate to others what your design decisions are and why your decisions are good decisions. Don’t worry if your design is not UML compliant and don’t worry if you didn’t use a special modeling tool to create it. The biggest factor that determines if your design document is good is whether or not it clearly explains your intentions.” – Scott Hackett How the software will be structured, sure, but also: Peer Dev: “make sure that your ideas are valid and that your approach works with what others are doing.” Manager: “[list] what the main entities of the system are, what the benefits are and, most importantly, what the risks are” 4 For each decision write down: why it’s necessary (based on the requirements) Benefit Risks – Scott Hackett 5 What is typically included? Wikipedia (surprisingly short read) 1. The data design describes structures that reside within the software. Attributes and relationships between data objects dictate the choice of data structures. 2. The architecture design uses information flowing characteristics, and maps them into the program structure. The transformation mapping method is applied to exhibit distinct boundaries between incoming and outgoing data. The data flow diagrams allocate control input, processing and output along three separate modules. 3. The interface design describes internal and external program interfaces, as well as the design of human interface. Internal and external interface designs are based on the information obtained from the analysis model. 4. The procedural design describes structured programming concepts using graphical, tabular and textual notations. These design mediums enable the designer to represent procedural detail, that facilitates translation to code. This blueprint for implementation forms the basis for all subsequent software engineering worked. What is typically included? 1. 6 2. System overview May be copied from SRS System Architecture What are the big ‘areas’ of your program, what do they do, and how do they interact? 3. Data Design Database schema, interconnections amongst tables 4. Component Design Details Detailed, step-by-step explanation of how stuff works for programmers Can be done in pseudocode 5. Human Interface Design Show how the user will use the system Include images – hand-drawn, Paint.Net, Photoshop, or mock-ups in HTML (show the browser’s rendering) Goal is to explain functionality – the ‘look and feel’ can/will be changed as you go 6. Requirements Matrix For each component listed above write out which requirement (in your SRS) it satisfies From http://www.atilim.edu.tr/~dmishra/se112/sdd_template.pdf 7 What should we include? Are these applicable to ASP.Net WebForms programs? 1.System overview 2.System Architecture 3.Data Design 4.Component Design Details 5.Human Interface Design Try this – list a couple of 6.Requirements Matrix requirements & where they’re addressed and then let’s see if it’s actually useful for us 8 Mockups: ‘map’ page of thumbnails with clear, simple abbreviations Individual ‘here’s a page’ images, with additional explanation as needed Also show ‘work flows’ start at page X, do stuffX then go to page Y, do stuffY then end on page Z One workflow per requirement? 9 How to edit .PDF files Google for ‘Pdf to Word’ There’s a couple of options I personally don’t like the idea of installing software to do this… …But I’m ok with handing out my email address for the conversion