The development of complex systems often requires that components and modules are developed individually, then assembled in the later integration phases of the overall effort. In spite of the modular approach taken in the specification and design of these components, developers all too often dogmatically use one particular development technique, while shunning others. The authors show this to be an inadvisable practice. For example, while informal specification techniques provide good mechanisms for describing the structure, complexity and constructs that facilitate the creation of abstract highly structured models of systems, without a well-defined semantics, the models produced are not amenable to rigorous analysis. To reconcile this dilemma, formal methods are being integrated with informal specification techniques. The authors introduce the "tool box" approach to software specification and demonstrate how each module may be specified individually using the specification technique most appropriate for the module at hand, based upon the characteristics of the particular module. We illustrate this via an actual system, the Air Force Weather Agency (AFWA) Standard Degribber: a meteorological system used for decoding/encoding data formatted in the World Meteorological Organization (WMO) standard GRIdded Binary (GRIB) format. We show how UML, when used independently would have been inadequate to fully describe the state based issues of the system, but when integrated with a formal notation, results in a full and complete specification.