Interface control document

Last updated

An interface control document (ICD) in systems engineering [1] and software engineering, provides a record of all interface information (such as drawings, diagrams, tables, and textual information) generated for a project. [2] The underlying interface documents provide the details and describe the interface or interfaces between subsystems or to a system or subsystem.

Contents

Overview

An ICD is the umbrella document over the system interfaces; examples of what these interface specifications should describe include:

The purpose of the ICD is to control and maintain a record of system interface information for a given project. This includes all possible inputs to and all potential outputs from a system for some potential or actual user of the system. The internal interfaces of a system or subsystem are documented in their respective interface requirements specifications, while human-machine interfaces might be in a system design document (such as a software design document)[ citation needed ].

Interface control documents are a key element of systems engineering as they control the documented interface(s) of a system, as well as specify a set of interface versions that work together, and thereby bound the requirements.

Characteristics

An application programming interface is a form of interface for a software system, in that it describes how to access the functions and services provided by a system via an interface. If a system producer wants others to be able to use the system, an ICD and interface specs (or their equivalent) is a worthwhile investment.

An ICD should only describe the detailed interface documentation itself, and not the characteristics of the systems which use it to connect. The function and logic of those systems should be described in their own requirements and design documents as needed. In this way, independent teams can develop the connecting systems which use the interface specified, without regard to how other systems will react to data and signals which are sent over the interface. For example, the ICD and associated interface documentation must include information about the size, format, and what is measured by the data, but not any ultimate meaning of the data in its intended use by any user.

An adequately defined interface will allow one team to test its implementation of the interface by simulating the opposing side with a simple communications simulator. Not knowing the business logic of the system on the far side of an interface makes it more likely that one will develop a system that does not break when the other system changes its business rules and logic. (Provision for limits or sanity checking should be pointedly avoided in an interface requirements specification.) Thus, good modularity and abstraction leading to easy maintenance and extensibility are achieved.

Criticism

Critics of requirements documentation and systems engineering in general often complain of the over-emphasis on documentation. [3] [4] ICDs are often present on document-driven projects, but may be useful on agile projects as well (although not explicitly named as such). [5] [6] An ICD need not be a textual document. It may be an (evolving) table of goes-intos and comes-out-ofs, a dynamic database representing each subsystem as a DB view, a set of interaction diagrams, etc.

ICDs are often used where subsystems are developed asynchronously in time, since they provide a structured way to communicate information about subsystems interfaces between different subsystem design teams. [7] [8] [9]

There exists some confusion surrounding the relationship between Interface Requirement Documents (IRDs) and Interface Control Documents (ICDs) when defining requirements. Interface definition documents, no matter what the name, should contain only definitions – no “shall” statements!! They are agreements and statements of fact (often identified through the use of “will”). Whether you use “will” or “is” depends on where in the design process you are. Interface requirements belong in the system requirements set no matter what you call the document. These are the contractually binding “shall” statements that drive the design and must be verified. A proper interface requirement points to the definition, no matter where defined. [10]

Related Research Articles

Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. The documentation either explains how the software operates or how to use it, and may mean different things to people in different roles.

<span class="mw-page-title-main">Software testing</span> Checking software against a standard

Software testing is the act of checking whether software satisfies expectations.

Documentation is any communicable material that is used to describe, explain or instruct regarding some attributes of an object, system or procedure, such as its parts, assembly, installation, maintenance, and use. As a form of knowledge management and knowledge organization, documentation can be provided on paper, online, or on digital or analog media, such as audio tape or CDs. Examples are user guides, white papers, online help, and quick-reference guides. Paper or hard-copy documentation has become less common. Documentation is often distributed via websites, software products, and other online applications.

Software design is the process of conceptualizing how a software system will work before it is implemented or modified. Software design also refers to the direct result of the design process – the concepts of how the software will work which consists of both design documentation and undocumented concepts.

In software and systems engineering, the phrase use case is a polyseme with two senses:

  1. A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
  2. A potential scenario in which a system receives an external request and responds to it.
<span class="mw-page-title-main">Requirements analysis</span> Engineering process

In systems engineering and software engineering, requirements analysis focuses on the tasks that determine the needs or conditions to meet the new or altered product or project, taking account of the possibly conflicting requirements of the various stakeholders, analyzing, documenting, validating, and managing software or system requirements.

In engineering, a requirement is a need that a particular item must satisfy for it to be acceptable.

<span class="mw-page-title-main">Systems development life cycle</span> Systems engineering terms

In systems engineering, information systems and software engineering, the systems development life cycle (SDLC), also referred to as the application development life cycle, is a process for planning, creating, testing, and deploying an information system. The SDLC concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both. There are usually six stages in this cycle: requirement analysis, design, development and testing, implementation, documentation, and evaluation.

Agile software development is the mindset for developing software that derives from values agreed upon by The Agile Alliance, a group of 17 software practitioners in 2001. As documented in their Manifesto for Agile Software Development the practitioners value:

<span class="mw-page-title-main">Business process modeling</span> Activity of representing processes of an enterprise

Business process modeling (BPM), mainly used in business process management; software development, or systems engineering, is the action of capturing and representing processes of an enterprise, so that the current business processes may be analyzed, applied securely and consistently, improved, and automated. BPM is typically orchestrated by business analysts, leveraging their expertise in modeling practices. Subject matter experts, equipped with specialized knowledge of the processes being modeled, often collaborate within these teams. Alternatively, process models can be directly derived from digital traces within IT systems, such as event logs, utilizing process mining tools.

<span class="mw-page-title-main">Department of Defense Architecture Framework</span> Enterprise architecture framework

The Department of Defense Architecture Framework (DoDAF) is an architecture framework for the United States Department of Defense (DoD) that provides visualization infrastructure for specific stakeholders concerns through viewpoints organized by various views. These views are artifacts for visualizing, understanding, and assimilating the broad scope and complexities of an architecture description through tabular, structural, behavioral, ontological, pictorial, temporal, graphical, probabilistic, or alternative conceptual means. The current release is DoDAF 2.02.

Spacecraft design is a process where systems engineering principles are systemically applied in order to construct complex vehicles for missions involving travel, operation or exploration in outer space. This design process produces the detailed design specifications, schematics, and plans for the spacecraft system, including comprehensive documentation outlining the spacecraft's architecture, subsystems, components, interfaces, and operational requirements, and potentially some prototype models or simulations, all of which taken together serve as the blueprint for manufacturing, assembly, integration, and testing of the spacecraft to ensure that it meets mission objectives and performance criteria.

MIL-STD-498, Military Standard Software Development and Documentation, was a United States military standard whose purpose was to "establish uniform requirements for software development and documentation." It was released Nov. 8, 1994, and replaced DOD-STD-2167A, DOD-STD-2168, DOD-STD-7935A, and DOD-STD-1703. It was meant as an interim standard, to be in effect for about two years until a commercial standard was developed.

Requirements management is the process of documenting, analyzing, tracing, prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders. It is a continuous process throughout a project. A requirement is a capability to which a project outcome should conform.

<span class="mw-page-title-main">Functional specification</span> Type of document

A functional specification in systems engineering and software development is a document that specifies the functions that a system or component must perform.

<span class="mw-page-title-main">V-model (software development)</span> Software development methodology

In software development, the V-model represents a development process that may be considered an extension of the waterfall model and is an example of the more general V-model. Instead of moving down linearly, the process steps are bent upwards after the coding phase, to form the typical V shape. The V-Model demonstrates the relationships between each phase of the development life cycle and its associated phase of testing. The horizontal and vertical axes represent time or project completeness (left-to-right) and level of abstraction, respectively.

Naked objects is an architectural pattern used in software engineering. It is defined by three principles:

A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard.

System requirements in spacecraft systems are the specific system requirements needed to design and operate a spacecraft or a spacecraft subsystem.

In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design and/or product management. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.

References

  1. Wolter J. Fabrycky, Benjamin S. Blanchard (2005). Systems Engineering and Analysis. Prentice-Hall, 2005
  2. DATA ITEM DESCRIPTION, Interface Control Document (ICD), DI-SESS-81248B (2015)
  3. Fowler, M.; J. Highsmith (July 2001). "The Agile Manifesto". Dr. Dobb's Journal. Retrieved 2006-05-11., "Yes, physical documentation has heft and substance, but the real measure of success is abstract: Will the people involved gain the understanding they need?"
  4. Ambler, S.W. (March 2005). "Agile Modeling and eXtreme Programming (XP)". AgileModeling.com. Retrieved 2006-05-11., "...verbal communication between team members reduces the need for documentation within the team."
  5. Agile/Lean Documentation: Strategies for Agile Software Development
  6. Much Ado About Nothing: Documentation
  7. Cutkosky, Mark R.; Jay M. Tenenbaum; Jay Glicksman (September 1996). "Madefast: collaborative engineering over the Internet". Communications of the ACM. 39 (9): 78–87. doi: 10.1145/234215.234474 .
  8. Spinellis, Diomidis (November 1998). "A Critique of the Windows Application Programming Interface". Computer Standards & Interfaces. 20 (1): 1–8. doi:10.1016/S0920-5489(98)00012-9 . Retrieved 2012-12-12.
  9. Leonard, Jason (May 2002). "Bringing System Engineers and Software Engineers Together" (PDF). The Rational Edge. Retrieved 2012-12-12.
  10. "Interface Requirements vs IRDs vs ICDs".