emacs/templates/lsf-high-level-design.org

402 lines
16 KiB
Org Mode
Raw Normal View History

2018-04-07 10:54:04 +08:00
#+TITLE: Put the title of project here
#+AUTHOR: Rongsong Shen
#+EMAIL: shenrs@cn.ibm.com
#+OPTIONS: ^:{} H:3 LaTeX:t
#+STARTUP: showall
#+EXCLUDE_TAGS: hidden
#+LATEX_HEADER: \usepackage{tabularx}
#+LATEX: \usetikzlibrary{calc, shapes, backgrounds}
* DOCUMENT METADATA :hidden:
:PROPERTIES:
:THEME: mythemes
:REVIEWERS: Dog Wang
:VERSION: 1.0
:STATUS: Under Review
:CONTRIBUTORS:
:TYPE: Functional Specification
:END:
#+NAME: document-history
|-----+-------------+---------------+-----------------|
| 1.0 | Jul 17,2016 | Rongsong Shen | Initial version |
|-----+-------------+---------------+-----------------|
* Scope
# This section shall be divided into the following paragraphs.
** Identification
# This paragraph shall contain a full identification of the system and
# the software to which this document applies, including, as applicable,
# identification number(s) and name(s), title(s), abbreviation(s),
# version number(s), and release number(s).
** System overview
# This paragraph shall briefly state the purpose of the system and the
# software to which this document applies. It shall describe the general
# nature of the system and software; summarize the history of system
# development, operation, and maintenance; identify the project sponsor,
# and developer; and list other relevant documents.
** Document overview
# This paragraph shall summarize the purpose and contents of this
# document and shall describe any security or privacy considerations
# associated with its use.
* Reference documents
# This section shall list the number, title, revision, and date of all
# documents referenced in this document (for example, internal documents
# such as functional specifications, marketing requirements documents
# and investigation reports, and external documents such as reference
# guides, user manuals, etc.).
* System-wide design decisions
# This section shall be divided into paragraphs as needed to present
# system-wide design decisions, that is, decisions about the system's
# behavioral design (how it will behave, from a user's point of view, in
# meeting its requirements, ignoring internal implementation) and other
# decisions affecting the selection and design of the components that
# make up the system. If all such decisions are explicit in the
# requirements or are deferred to the design of the software units, this
# section shall so state. Design decisions that respond to requirements
# deemed critical, such as those for safety, security, or privacy, shall
# be placed in separate subparagraphs. Design conventions needed to
# understand the design shall be presented or referenced. Examples of
# system-wide design decisions are the following:
# 1. Design decisions regarding inputs the system will accept and
# outputs it will produce, including interfaces with other systems,
# hardware, software, and users (4.3.x of this document identifies
# topics to be considered in this description).
# 2. Design decisions on system behavior in response to each input or
# condition, including actions to perform, response times and other
# performance characteristics, description of physical systems
# modelled, selected equations/algorithms/rules, and handling of
# disallowed inputs or conditions.
# 3. Design decisions on how databases/data files will appear to the
# user (4.3.x of this document identifies topics to be considered in
# this description).
# 4. Selected approach to meeting safety, security, and privacy
# requirements.
# 5. Other system-wide design decisions made in response to
# requirements, such as selected approach to providing required
# flexibility, availability, and maintainability.
* Architectural design
# This section shall be divided into the following paragraphs to
# describe the architectural design. If design information falls into
# more than one paragraph, it may be presented once and referenced from
# other paragraphs. Design conventions needed to understand the design
# shall be presented or referenced.
** Components
# This paragraph shall:
# 1. Identify the software units that make up the system.
# Note: A software unit is an element in the design of a system; for
# example, a major subdivision of a system, a component of that
# subdivision, a class, object, module, function, routine or
# database. Software units may occur at different levels of a
# hierarchy and may consist of other software units. Software units
# in the design may or may not have a one-to-one relationship with
# the code and data entities (routines, procedures, databases, data
# files, etc.) that implement them or with the computer files
# containing those entities.
# 2. Show the static (``consists of'') relationship(s) of the software
# units. Multiple relationships may be presented, depending on the
# selected software design methodology (for example, in an
# object-oriented design, this paragraph may present the class and
# object structures as well as the modules and process
# architectures).
# 3. State the purpose of each software unit and identify the
# requirements and system design decisions allocated to
# it. (Alternatively, the allocation of requirements may be provided
# in Section 5).
# 4. Identify each software unit's development status/type (such as new
# development, existing design or software to be reused as is,
# existing design or software to be reengineered, software to be
# developed for reuse, etc.) For existing design or software, the
# description shall provide identifying information, such as name,
# version, documentation references, library, etc.
# 5. Describe planned utilization of computer hardware resources (such
# as processor capacity, auxiliary storage capacity, and
# communications/network equipment capacity), if appropriate.
# 6. Identify the program library in which the software that implements
# each software unit is to be placed.
** Concept of execution
# This paragraph shall describe the concept of execution among the
# software units. It shall include diagrams and descriptions showing
# the dynamic relationship of the software units, that is, how they
# will interact during operation, including, as applicable:
# - Flow of execution control,
# - Data flow,
# - Dynamically controlled sequencing,
# - State transition diagrams,
# - Timing diagrams,
# - Priorities among units,
# - Handling of interrupts and signals,
# - Timing/sequencing relationships,
# - Exception and error handling,
# - Concurrent execution,
# - Dynamic allocation/deallocation of memory or other resources,
# - Dynamic creation/deletion of objects,
# - Processes, Tasks, and Other aspects of dynamic behavior.
** Interface design
# This paragraph shall be divided into the following subparagraphs to
# describe the interface characteristics of the software units. It
# shall include both interfaces among the software units and their
# interfaces with external entities such as systems, configuration
# items, and users. If part or all of this information is described
# elsewhere, these sources may be referenced.
*** Interface identification and diagrams
# **** Interface A
# This paragraph (beginning with 4.3.2) shall identify an interface,
# briefly identify the interfacing entities, and shall be divided into
# subparagraphs as needed to describe the interface characteristics of
# one or both the interfacing entities. If a given interfacing entity
# is not covered by this document (for example, an external system or
# user) but its interface characteristics need to be mentioned to
# describe interfacing entities that are, these characteristics shall
# be stated as assumptions or as ``When [the entity not covered] does
# this, [the entity that is covered] will ...'' This paragraph may
# reference other documents (such as data dictionaries, standards for
# protocols, and standards for user interfaces) in place of stating
# the information here. The design description shall include the
# following, as applicable, presented in any order suited to the
# information to be provided, and shall note any differences in these
# characteristics from the point of view of the interfacing entities
# (such as different expectations about the size, frequency, or other
# characteristics of data elements):
# 1. Priority assigned to the interface by interfacing entities
# 2. Type of interface (such as real-time data transfer, storage of
# data, command-line user interface, etc.) to be implemented
# 3. Characteristics of individual data elements that interfacing
# entity(ies) will provide, store, send, access, receive, etc.,
# such as:
# - Technical name (e.g., variable or field name in code or
# database), non-technical name, or other identifier
# - Data type (alphanumeric, integer, etc.)
# - Size and format
# - Units of measurement
# - Range or enumeration of possible values
# - Accuracy and precision
# - Priority, timing, frequency, volume, sequencing, and other
# constraints, such as whether the data element may be updated
# and whether business rules apply
# - Security and privacy constraints
# - Sources (setting/sending entities) and recipients
# (using/receiving entities)
# 4. Characteristics of data element assemblies (records, messages,
# files, arrays, displays, reports, etc.) that the interfacing
# entity(ies) will provide, store, send, access, receive, etc.,
# such as:
# - Technical name (e.g., record or data structure name in code or
# database), non-technical name, or other identifier
# - Data elements in the assembly and their structure (number,
# order, grouping)
# - Medium (such as disk) and structure of data elements/assemblies
# on the medium
# - Visual and auditory characteristics of displays and other
# outputs (such as colours, layouts, fonts, icons and other
# display elements, beeps, lights)
# - Relationships among assemblies, such as sorting/access
# characteristics
# - Priority, timing, frequency, volume, sequencing, and other
# constraints, such as whether the data assembly may be updated
# and whether business rules apply
# - Security and privacy constraints
# - Sources (setting/sending entities) and recipients
# (using/receiving entities)
# 5. Characteristics of communication methods that the interfacing
# entity(ies) will use for interface, such as:
# - Identifier
# - Communication links/bands/frequencies/media and their
# characteristics
# - Message formatting
# - Flow control (such as sequence numbering and buffer allocation)
# - Data transfer rate, whether periodic/aperiodic, and interval
# between transfers
# - Routing, addressing, and naming conventions
# - Transmission services, including priority and grade
# - Safety/security/privacy considerations, such as encryption,
# user authentication, compartmentalization, and auditing
# 6. Characteristics of protocols the interfacing entity(ies) will use
# for the interface, such as:
# - Identifier
# - Priority/layer of the protocol
# - Packeting, including fragmentation and reassembly, routing, and
# addressing
# - Legality checks, error control, and recovery procedures
# - Synchronization, including connection establishment,
# maintenance, termination
# - Status, identification, and other reporting features
# 7. Other characteristics
* Use case study
# Run use cases through the proposed architecture and interface design
# to see whether it addresses appropriately the quality dimensions of
# the system, such as:
# - Functionality?
# - Performance requirements or expectations?
# - System availability?
# - System operability?
# - Resource constraints and limitations?
# - Operational and data integrity?
# - Security and controls?
# - Usability?
# - Maintainability? Debugging?
# Use negative and worse cases as well.
* Performance analysis
# Analyze the performance of the proposed system, including (but not
# limited to):
# - System resource usage (CPU, Memory)
# - User query time
# - Job submission time
# - System response time
# - System throughput
# - Communication overhead, latency I/O rate
# Apply use cases (including negative and worse ones) in performance
# analysis.
* Requirement traceability
# This section shall contain:
# 1. Traceability from each software unit in this document to the
# requirements allocated to it. (Alternatively, this traceability
# may be provided in 4.1.)
# 2. Traceability from each requirement to the software units to which
# it is allocated.
* Checklist
# To avoid loose ends and ensure project quality, check the following
# questions while you start low-level design and implementation.
# - Have you run use cases against the design successfully?
# - Have you done performance analysis for the design?
# - Does the implementation consider platform-dependency (if
# applicable)?
# - Is the acceptance test plan inspected against FS?
# - Is the integrate test plan ready for inspection?
* Notes
# This section shall contain any general information that aids in
# understanding this document (e.g., background information, glossary,
# rationale). This section shall include an alphabetical listing of
# all acronyms, abbreviations, and their meanings as used in this
# document and a list of any terms and definitions needed to
# understand this document.
* Unit test plan and integration test considerations
** Unit test plan
# Document the test cases that will be used for unit
# tests. Documented test cases are important because we need them at
# least for the coverage analysis.
# *Some guidelines*
# - Can use the above LL implementation design and codes as hints to
# figure out the test cases, trying to cover all the branches and
# functions in the new changes of the project.
# - General description of how to execute the testing scnerios; not
# necessary to give the detail procedures.
# - Can use pseudo code to describe combination testing; e.g.,
# #+BEGIN_VERSE
# for Ioption = -I, -Ip
# for io = -i, -o, -e
# bsub {Ioption} {io}
# #+END_VERSE
# - Internal State Verification
# Test internal state change are correct. This may be done by
# running certain scenerios, and then dumping the data structures
# to syslog.
# - Try to give an indication of the percentage testing coverage by
# considering all the combinations, but only executing some of
# them.
** Integration test considerations
# - Scalability
# Test number of hosts, jobs, users, etc.
# - Performance
# Testcases for performance.
# - Regression
# Identify which existing regression testcases must be rerun.
# - Platform-Dependenent
# Identifiy platform specific testcases.
# - Faulty Tolerance
# Test how well the feature works under faulty conditions (e.g.,
# host crash).
# - Security
# Test any security issues related to the feature.
# - Usability
# Describe some testcases which test how user friendly the feature
# is.
* Appendixes
# Appendixes may be used to provide information published separately for
# convenience in document maintenance (e.g., charts). As applicable,
# each appendix shall be referenced in the main body of the document
# where the data would normally have been provided. Appendixes shall be
# lettered alphabetically (A, B, etc.).
# Local Variables:
# End: