It proposes a systematic approach for the design of products, processes, components, software etc. It applies a scientific approach for designing products according to customer needs. The below are the two main concepts of Axiomatic Deign: 1. It is based on a four level design process and the four levels are zig-zagged for an optimal design excepting customer requirements As explained in the figure, all Customer requirements are listed individually and split to lower levels as required.
|Published (Last):||8 November 2009|
|PDF File Size:||20.96 Mb|
|ePub File Size:||19.85 Mb|
|Price:||Free* [*Free Regsitration Required]|
References 5. It provides a framework for software design for all systems, including those that involve only software and those that involve both hardware and software.
The framework for software design is based on the same set of principles and methodologies of axiomatic design that were presented for products, processes, and various systems in the preceding chapters.
This framework provides a general approach to designing software and software architecture regardless of the specific computer language used for programming.
Software design based on axiomatic design is self-consistent, provides proper inter-relationship and arrangement among modules, and is easy to change, modify, and extend. This is a result of making correct decisions at each stage of mapping and decomposition. The final design of software is represented by a flow chart that displays the entire system architecture of the software, which can aid software programmers.
The flow chart can also be used as a management tool during the software development phase. It provides clear guidelines to software engineers engaged in a collaborative development effort and gives the order of execution of the resulting program.
Extensionality and reusability at any level are guaranteed when the software design is based on axiomatic design theory. When a system consists of hardware and software, the system architecture defines the interface between the software modules and the hardware modules. As a case study, the development of Acclaro1 - a commercial software system to aid designers who use axiomatic design--is presented.
This software design is based on axiomatic design and is implemented using a modified version of object-oriented techniques OOT and the Java programming language, a platform-independent language.
When axiomatic design is used, OOT can be considerably simplified. What are the key issues in software programming? Software is now ubiquitous in our modern life-style. It has transformed the way people live, work, and think. Even the way consumers purchase a variety of goods is undergoing changes, as evidenced by the latest Wall Street excitement created by the Internet stocks and electronic commerce.
Software has also changed the inner workings of organizations and the governance of nations. It has changed the industrial infrastructure, hotels, transportation, and education. It forms the core of many machines, systems, and organizations. Indeed when software crashes, the world comes almost to a standstill until the problems are fixed. All the frantic activity to deal with the Y2K bug is an indication of the importance of computers in all sectors of the economy.
Software performs important functions in many physical products. Software controls individual components of a machine as well as integrating and controlling all functions of a hardware system. In some large systems consisting of hardware, sensors, and software, the software is embedded among hardware components and also integrates the system functions.
Smart weapons, automobiles, machines, airplanes, instruments, telecommunications, and space stations would not exist without software. Even the functions of ordinary products, such as toys, movies, and appliances, are controlled by software.
Software has replaced many mechanical components to give lower cost products that are more flexible and intelligent. The software in engine management systems EMS regulates the performance of automobile engines and matches the impedance of engines with that of the automatic transmission. In many companies, the hardware part of the system is developed first and then turned over to the software engineers to develop software code to make the system function.
This process does not work well, causing delays in product introduction. This current practice is also costly because many debugging and field-service problems are associated with or caused by poor interface between hardware and software. These symptoms are the result of ad hoc, heuristic approaches to software design. In addition, more and more complex applications have become possible because computers have become faster, cheaper, and more powerful.
As a consequence, computational efficiency has become less of an issue relative to the cost of developing software and the reliability of the software. This low productivity associated with software development can be attributed to the lack of a proper design procedure and basic decision-making criteria.
To meet the ever-increasing need for software systems for all of these diverse applications, the software industry has become the most rapidly growing industry in the United States.
The demand for software engineers is far greater than the supply as we begin the twenty-first century. American companies routinely hire programmers from all over the world, especially India, China, Russia, and Korea. Indeed, software has become a global industry, in part driven by the need to reduce the labor cost of software programming. To increase the productivity of software development, a systematic means of creating and maintaining software through the use of a design theory must be implemented.
How can axiomatic design be used in software design? The axiomatic approach to software design is intended to overcome some of the known shortcomings of the current practice and create a scientific framework for software synthesis.
In many respects, it differs significantly from various methodologies used in software engineering: Its framework is based on the idea that the software must be designed first to satisfy a set of functional requirements and constraints before commencing coding activities.
It also provides a methodology for design that includes the idea of mapping, decomposition, and the creation of leaves. The most important aspect of axiomatic design is that it provides a rigorous means of decomposition and the criteria for acceptable software design. Therefore, it is explicit and thus simple. The flow chart--a consequence of axiomatic design - describes the precise relationship between all modules, and provides a complete description of the software architecture and the computational sequence.
The axiomatic design framework is equally applicable for all software designs, including a software that consists of only software modules, b software that controls both hardware and software, and c rapid prototyping software that allows modification based on current sensor input. The axiomatic design framework is not field specific, i.
The framework consists of all the elements of axiomatic design: the design domains, mapping, decomposition through zigzagging, creation of hierarchies, the design equation, the design axioms, and the design matrix.
The additional elements introduced for system design in Chapter 4 are equally valid in software design: the creation of flow charts for software design, the concept of "leaf," and specific characteristics of each domain. The flow chart for system architecture is generated as a result of the existence of the axiomatic design framework - in contrast to a heuristic approach that depends solely on the intuitive ideas and skills of individual software programmers.
The use of the flowchart enables a large collaborative effort as the role of each programmer is explicitly identified by the flow diagram. Axiomatic design creates software for real-time control of systems in an explicit manner. Thus the software can be efficient, minimizing the information content of the system. Axiomatic design allows reusability and extensionality of software modules in an explicit manner.
What is software? Software may be defined as an information transformer that generates certain desired outputs given a set of inputs and an algorithm for execution within the bounds established by constraints. Software development has typically consisted of the following stages: Analysis of the need and gathering of requirements, functions, data, tools, and various information Design - abstract design of the software Coding - creating programs according to the design Debugging - correcting errors Maintenance - customer service after release Extension - major extension of the developed software to add new functions and features The cost of correcting and changing software escalates as the software is coded at lower and lower levels.
Therefore, significant effort should be expended to design the software correctly and completely before undertaking any coding activity.
Axiomatic design is a particularly powerful tool for design of complex software systems. A historical perspective on software technology development. Once a software system has been designed, it has to be coded in a suitable programming language. Programming language has evolved over the years. A brief history of programming language at this time may be appropriate.
Most popular programming languages of the late s use the object-oriented techniques OOT. However, even the use of OOT and modular design does not guarantee reliable software unless the coding is preceded by axiomatic design of the software. In fact, because OOT does not have a fundamental basis for design, it has created many complicated ways of describing the design with many definitions, some of which describe variants of the same thing, e.
Apparently this is done because OOT does not have an explicit means of dealing with decomposition ofFRs and DPs as well as their relationships. In the following section, OOT will be described, followed by a slight modification of OOT based on axiomatic design to simplify the software structure. OOT is the latest in the history of computer languages, which have evolved with changes in software design methodology. Commercial software products were generated using these languages, which were appropriate in representing the idea of SADT.
However, it was difficult to reuse some of the modules created using SADT, as the attributes i. Therefore, to reuse some of the modules that were developed previously, they had to bemodified. Consequently, reusability became a key issue, as it affected the productivity of software development. Object-oriented methodology was introduced to overcome this limited modularity and productivity of SADT Cox, In these programming languages, the attributes and methods are combined together to act like an object in the real world.
Objects, classes, and relationships structure the code itself. The Java language depends on object-oriented methodology. Object-oriented techniques emphasize both the need to design software correctly during the early stages of software development and the importance of modularity. However, even with object-oriented techniques, there are many problems that software programmers face in developing and maintaining software over its life cycle.
Although there are several reasons for these difficulties, the main reason is that current software design methodologies do not provide any criterion for good software design.
What are the current shortcomings? In software engineering, it is well known that software has to be created with independent modules Pressman, However, an assembly of independent modules does not in itself constitute effective software. To be good, software must be designed with functional independence in mind to make the relationship between the modules effective and explicit without coupling.
The axiomatic design framework ensures that the modules are in the right place in the right order. Most software products require extensive debugging when they are first developed and also require extensive maintenance during the course of use both expensive propositions.
When software must be modified or changed after the original programmer has left the organization, it is extremely difficult to understand the intention of the previous designer and to implement the changes. In fact, many software programs developed, especially with government money, cannot be used at all. To overcome these problems, we must make software engineering more of a science than an art.
What is the relationship between axiomatic design and object-oriented programming? A direct comparison of axiomatic design of software with the object-oriented programming is difficult. There are both similarities and differences. Axiomatic design enables the design of complex systems from the top down, whereas OOT is a bottom-up process. Axiomatic design requires a clear definition of FRs, as it divides the design tasks into domains and requires mapping between the domains for decomposition.
Furthermore, the design matrix explicitly defines the relationships between sets of FRs and DPs.