The ability to utilize the fully automated flexible manufacturing systems (FMS) or develop a reliable computer-integrated manufacturing (CIM) system will depend on our ability to develop reliable and reusable softwares for large complex systems on a timely basis. To date, software design has not gone beyond the ad hoc trail-and-error stage. Consequently, the development of software is slow, expensive, unreliable, and unmanageable. The purpose of this paper is to provide a scientific basis for designing software. The approach used here is the axiomatic design, which is based on two design axioms: the Independence Axiom and the Information Axiom. The axiomatic approach is based on the recognition of the following common elements in design: the existence of independent domains (i.e., the consumer domain. the functional domain, the physical domain, and the process domain); the need to map between various domains during the design process: the decomposition of the characteristic vectors (i.e., functional requirements, design parameters, and process variables) in their respective domains: the zigzagging required between the domains for decomposition; and the need to satisfy the design axioms during the design process. The axiomatic approach discussed in this paper provides decision making tools for software design in addition to systematic means of knowledge and data representation, synthesis and analysis of software, and the construction of the module-junction structure diagram.