HLD General Format Example
HLD General Format Example
HLD General Format Example
COVER PAGE
Table of Contents
List of Figures
IMPORTANT:
* “Notes” section contains revisions and any additional comments that did not fit anywhere else
in the document. This section is required esp. when writing the newer versions of HLD, since
you might change/add something to the 1st draft HLD.
* You are not required to include the Data Dictionary (e.g. on pg. 13) in your first draft, but you
must include this in your final HLDs. Data Dictionary summarizes all the information flowing
into and out of the various processes shown in your DFDs.
* “Miscellanea” is optional for 1st draft HLD, but mandatory for final HLD.
* If you have doubts about what expected diagrams are, or how to explain them in your HLDs:
– Refer to the example given later in this document for understanding of DFDs
– Refer to the “Software_Design.ppt” (in the study material folder) for understanding of the
class diagrams
[The Data flow diagrams have been moved to the High level design document.
Actually there are two types of specifications in the industrial software projects – A
and B level. As per the Professor’s concern, since you are making SRS (more of the
A-level specification), you should not include DFDs in the SRS, since they tend to
For e.g.: One team mentioned that the licensing is under GNU/GPL. Another
team is following Apple standards, etc.
7.3 Expandability
If applicable, this section should explain how a third party would be able to
extend the system. This may be done by writing plug-ins or scripts, or by
writing some instructions in a configuration file, though you are not at all
required to write such plug-ins etc.
For e.g.: One team mentioned that their product will be compatible with
Microsoft Outlook, etc.
This section should describe the security threats you foresee and intend to
deal with. It should specify your assumptions regarding the environment
(whether the computer is behind a firewall, who has physical access to it,
etc.) and the means you plan to employ in order to protect the system
(authentication, data encryption, input validation, internal sanity checks),
etc.
For e.g.: One team mentioned that they are going to use an authentication
key to make sure that only signed users can access the system.
For e.g.: One team is still not sure about what the complexity of their system
would be. They want to test the performance of the system and
feasibility of implementing the proposed system.
Glossary
List all the technical terms, concepts and acronyms that appear in the
document or that are relevant to it, for the sake of the uninformed reader.
The explanation of each term/concept/acronym should not exceed 4 lines.
People will thank you for not having to spend hours on looking up unfamiliar
terminology.
9. Notes
Revisions:
3.1.1.1 original
……… (like xyz was there in SRS draft 1, provide section
numbering as well)
3.1.1.2.2 revised
…….... (now you modified xyz to wxy, provide section numbering
as well)
Rajika Tandon, Dept. of EECS, Syracuse University, NY 5
Or in original you can up with a concept ‘X’. Now you dropped the
idea of doing so. Report that and possibly explain why you
dropped that.
Similar is the case for adding some requirements.
• Data Flow Diagrams (DFDs) are used during the analysis of requirements for complex
systems. Each bubble represents a specific process which has been allocated tasks and
requirements, so that all of the program’s obligations are partitioned among the processes
shown on the top level DFD.
• Each data flow represents information necessary to sustain a process or generated by a
process.
• Note that Data Flow Diagrams are not officially part of the UML.
(The above material - context and data flow diagrams are taken from Dr. Fawcett’s notes
posted on his web,
http://www.ecs.syr.edu/faculty/fawcett/handouts/webpages/FawcettHome.htm)
Small Calculator
(SC)
version 1.0
15 October, 2009
Rajika Tandon
NOTE:
This document is incomplete; it only gives architecture and data
flow diagrams. Don’t get confused by the numbering I have used.
These start from 1 just for the ease of understanding. However,
you should follow include it before class diagrams. Also note that
the processes defined below are just to give you an idea of DFDs.
They might not be detailed or complete.
1. Architecture
The SC program accepts input as text which is then parsed and computed.
The result of computation is then displayed to the user.
(ii) Business Layer: forms the processing unit of the project. This layer is
responsible for parsing the input text and executing all the operations
involved in the input. The operations can be:
scalar-scalar addition,
scalar-scalar multiplication,
matrix-matrix addition,
3.1.1.1. inputs
The clicked commands can be one of the following: start a new
code analysis or run code command.
Input text will contain (one or a combination of):
scalar, matrix, scalar-scalar addition/multiplication expression,
statements.
3.1.1.2. processing
The parsing process shall include an editable multi-line text area for
storage of code use and a read-only multi-line text a the output
text.
The user interface shall also allow the user to submit a command to
begin execution, that when issued, begins the interpretation of the
code in the editable multi-line text area.
3.1.1.3. outputs
The code message contains the SC code that needs to be
interpreted.
The output text message contains the error messages and
results to be displayed to the user.
3.1.2. Computing
The computing process is responsible for the actual processing of the
code. It generates an abstract syntax tree after parsing the input code,
which is then traversed and executed together. This process deals
3.1.2.1. Parsing
The code received from the UI is analyzed syntactically. An AST
(abstract syntax tree) is generated and is sent for further
processing. If there are errors in the syntax, an error is reported.
3.1.2.1.1. inputs
The code message contains the SC code to be interpreted in
the syntax documented in Appendix A.
3.1.2.1.2. processing
The parsing process shall create an abstract syntax tree based
on the code message supplied. If the code message is not in the
format documented in Appendix A, the process shall emit an
error message.
3.1.2.1.3. outputs
The abstract syntax tree message contains the code in the
form of a tree. (An example is provided in Appendix B.)
3.1.2.2. Traversing
Traversing process will visit the nodes of the abstract syntax tree
and simultaneously interpret the operations need to be carried out.
It will identify the operations, scalar or matrix, and send the data it
extracted from the tree, to the scalar and matrix computation
processes.
3.1.2.2.1. inputs
Abstract syntax tree will be the input to the traversing
process.
3.1.2.2.2. processing
4.Data Dictionary
Message Name Interpretation DFD
input text contains the input given by the user DFD1
files produced by the external process "Antlr3 Program" based on
lexer and parser files the grammar file DFD1
You are not required to include the DD in your first draft, but you must
include this in your final HLDs.
APPENDIX A - Examples of BNF
Grammar written in extended BNF, to be used in the SC project, is as follows:
A1. SCALAR
Examples
a = 2;
a = 2 + 3;
a = 2 + 3 * 4 + 6;
a = 4 * 6;
a = 2 + 4 * 6 + 18 * 7 + … (any no. of ‘+’ or ‘*’ operations)
scalar declaration/assignment
scalar=NUM;
where,
op : + | *
expr: scalar | NUM | expr op expr
‘|’ denotes OR
A2. MATRIX
Examples
k[] = [1,2,3,4 / 5,6,7,8 / 9,10,11,12]; (while defining a matrix)
Rajika Tandon, Dept. of EECS, Syracuse University, NY 16
This matrix will be equivalent to:
k = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }
r[] = [90,56,-1,34 ];
This matrix will be equivalent to:
r = { {90}, {56}, {-1}, {34} }
c = k * r;
c = r + k;
c = r * k + r + k;
c = r + k ……………… (any no. of ‘+’ or ‘*’ operations)
matrix declaration/assignment
matname=matrix;
matrix addition/multiplication
matname=expression;
where,
matname: scalar[]
ALPHA : (‘a’..’z’ | ‘A’..’Z’)
DIGIT : (‘0’..’9’)
LDIGIT: (‘1’..’9’)
scalar: (ALPHA+)(DIGIT*)
NUM: (LDIGIT)DIGIT* | ‘0’
op : + | *
expression: matname | expression op expression
matcomma :
matcomma : ,
row: NUM | row matcomma NUM / row
matrix: [row]
‘|’ denotes OR
B1. SCALAR
Example of the Abstract Syntax Tree for the following scalar expression:
a = 4 * 6;
Example of the Abstract Syntax Tree for the following matrix expression:
SC : Small Calculator
The database might not only contain tables, but also sequences, abstract data types, etc. These are known
as objects in database. Hence, you need to provide the object type, purpose and data fields inside the
object. For example:
4.1 State
………………
..…………….
4.2 City
Object Type: Table
Name: City
Primary Key: cityID
Foreign key: cityStateAbbr
Related Tables: State
Purpose & Description: This table stores the city information
associated with a city id. It is created to contain city name and state
name (for which it is linked to state table). The cityID is uniquely
identifies each row/tuple inserted into the city table. This table
provides information about the city to which an employee or a
customer belongs to.
Screenshots:
Screenshots: