16 Critical Software Practices 
 
Formal Definition
and Control of Interfaces
 
IntroImplementationMetricsResources
 
Implementation Guidelines
 

"The overall process for designing a user interface begins with the creation of different models of system function (as perceived from the outside). The human- and computer-oriented tasks that are required to achieve system function are then delineated; design issues that apply to all interface designs are considered; tools are used to prototype and ultimately implement the design model; and the result is evaluated for quality." 
--Roger S. Pressman

Practice Description
A baseline interface must be agreed upon before the beginning of implementation activities, and the user interface must be made and maintained as an integral part of the system specification. For those projects developing both hardware and software, a separate software specification must be written with an explicit and complete interface description.

Practice Essentials

  • The requirements for each external electronic interface should include the items listed in paragraph 3 of the MIL-STD-498 data item description DI-IPSC-81434.
     
  • The design specification for each external electronic interface should include the items listed in paragraph 3 of the MIL-STD-498 data item description DI-IPSC-81436.
     
  • An interface should be under CM change control before development begins on a software component accessing that interface. 

  • Future user participation in the development of a user interface prototype should be a primary structured method for users to define system requirements.
     
  • Application external interfaces, interfaces with middleware and operating systems, and interfaces of COTS products integrated into the application should comply with applicable public, open API standards and data interoperability standards unless there is a compelling reason to do otherwise. 

    • Comply with JTA interface standards
       
  • Do not assume that if two interfacing applications comply with the JTA and DII COE TAFIM interface standards that they will interoperate. 

    • E.g., JTA and TAFIM include both Microsoft and UNIX interface standards and MS and UNIX design these standards to exclude the other.
       
  • For each COTS software product used in your application, carefully analyze, independent of the vendor, the proprietary features of its interfaces.
     
  • Do not use COTS interface proprietary features unless there is a compelling reason to do so.
     
  • Each interface specification should undergo a formal inspection before it is accepted by CM.
     
  • Integration test should include interface test, including tests under a heavy stress load. 

Implementation Guidelines

  • All internal and external interfaces will be documented and maintained under CM control.
     
  • Changes to interfaces will require concurrence by the interface owners prior to being made.
     
  • Milestones related to external interfaces will be tracked in the project activity network.
     
  • Subsystem interfaces will be controlled at the program level.
     
  • Develop user interface prototype used in system requirements definition with a GUI-builder tool in a way that the prototype, with minimal modification, will be the user interface software of the delivered application.
     
  • The user interface prototype used for system requirements definition should include screens and navigation between screens.
     
  • Milestones related to external interfaces--such as completion of specifications and completion of system interface-should be included in the project activity network. Keep these milestones off your critical path.
     
  • Compliance with open, public standards for APIs should be a major factor in selecting COTS operating system and middleware products and COTS application and service/utility products.
     
  • If you plan significant reuse of legacy software, design the software architecture to minimize changes to legacy module interfaces.
     
  • Read the book, The Essential Client/Server Survival Guide, for an understanding of middleware, client/server network, and Internet operating system API options and pitfalls. 

Things to Watch Out For

  • Systems that have to interface electronically with other systems often do not coordinate their schedules for the development of the interface specifications and implementation on both sides of the interfaces.
     
  • Often there is a conflict between the use of COTS and the needs for interoperability between systems.
     
  • Programs frequently do not identify all the external interfaces during initial systems requirements definition.
     
  • Formal configuration-controlled ICWGs for interfaces between systems seem to be the exception instead of the rule as they should be.
     
  • Application developers often do not know which features of middleware and COTS DBMS "open" APIs are proprietary vendor extensions of the standard API. As a result, the proprietary extensions are used in a way that negates many of the advantages of using standard APIs.
     
  • Internal interface requirements and design descriptions are often not adequately prepared. When they are, they are not put under CM for change control in a developmental baseline. 

Figuring Out Where You Are - Project QuickLook

Chapter 6 contains a series of detailed questions that can be applied to any program to determine the health of its interface control approach. These questions should be applied on a regular basis. However, there are some quick indicators that can be used to see if the interface control process requires more in-depth examination. Specific "quicklook" questions are:

  • Did (or will) future system users participate in the development of the human-machine interface of this system? If so, describe this participation and identify at least one individual from each operational organization that participated, or will participate.
     
  • How many internal interfaces are there in the system architecture and each of the software CPCI architectures?
     
  • Are there any external interfaces to this system for which there is not a formal interface control working group with participation from all systems that use this interface? If so, name each of these external interfaces. 

An inappropriate answer to any of these questions could indicate a more serious problem and merits further investigation.

Additional Considerations


Three important interface concepts to consider in the definition and control of interfaces are:

  • Electronic interfaces connect modules in the architecture: hardware/software, application software/databases, application software and databases/middleware and operating systems, connections between application software modules internal to the application, and connections to software modules external to the application. Interfaces also include the user interface (screens and navigation between screens).

  • Application Programming Interface (API) is defined as the interface between the application software and the application platform: System Services API (including APIs for Software Engineering Services and Operating System Services); Communications Service API (including APIs for Network Services); Information Services API (including APIs for Data Management Services and Data Interchange Services); Human/Computer Interaction Services API (including APIs for User Interface Services and Graphics Services). 

  • External Environment Interface (EEI) contains the external entities with which the application platform exchanges information.

    • The External Environment Interface (EEI) is the interface between the application platform and the external environment across which information is exchanged. 

    • EEI may be divided into these groups: Human/Computer Interaction Services EEI, Information Services EEI, and Communications Services EEI. 

 

top
16 Critical Software PracticesGlossary of Terms