Genetibase Software Development Services - System Design and Specifications/Hardware and Software System Requirements Analysis
Our design specifications typically involve analysis for:
• Classification:
o The kind of component/application, such as a subsystem, module, class, package, function, files, etc….
• Definition:
o The specific purpose and semantic meaning of the component/application. This may need to refer back to the requirements specification.
• Responsibilities:
o The primary responsibilities and/or behavior of this component/application. What does this component/application accomplish? What roles does it play? What kinds of services does it provide to its clients? For some components/applications, this may need to refer back to the requirements specification.
• Constraints:
o Any relevant assumptions, limitations, or constraints for this component/application. This should include constraints on timing, storage, or component/application state, and might include rules for interacting with this component/application (encompassing preconditions, postconditions, invariants, other constraints on input or output values and local or global values, data formats and data access, synchronization, exceptions, etc.)
• Composition:
o A description of the use and meaning of the subcomponents that are a part of this component/application.
• Uses/Interactions:
o A description of these components/applications collaborations with other components/applications. What other components/applications is this entity used by? What other components/applications do the entities use (this would include any side-effects this entity might have on other parts of the system)? This concerns the method of interaction as well as the interaction itself. Object-oriented designs will include a description of any known or anticipated subclasses, superclasses, and metaclasses.
• Resources:
o A description of any and all resources that are managed, affected, or needed by this entity. Resources are entities external to the design such as memory, processors, printers, databases, or a software library. This should include a discussion of any possible race conditions and/or deadlock situations, and how they might be resolved.
• Processing:
o A description of precisely how these components/applications go about performing the duties necessary to fulfill their responsibilities. This should encompass a description of any algorithms used; changes of state; relevant time or space complexity; concurrency; methods of creation, initialization, and cleanup; and handling of exceptional conditions.
• Interface/Exports:
o The set of services (resources, data, types, constants, subroutines, and exceptions) that are provided by this component/application. The precise definition or declaration of each such element should be present, along with comments or annotations describing the meanings of values, parameters, etc…. For each service element described, include (or provide a reference) in its discussion a description of its important software component attributes (Classification, Definition, Responsibilities, Constraints, Composition, Uses, Resources, Processing, and Interface).


