402 lines
16 KiB
Org Mode
402 lines
16 KiB
Org Mode
|
|
#+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:
|
||
|
|
|