6.3: Software Design Approaches
This section elaborates on the object model of the architecture to develop a detailed design model. The following sections present techniques and methods that guide the design development. These include process-oriented design, data-oriented design, and (an integration of those) object-oriented design. Give attention to elements, patterns, quality attributes, and software architecture principles, including encapsulation, polymorphism, and dependencies. Also, consider tool support for each design method's diagrams and transition from phase to phase as computing advances to newer technologies like more powerful processors (such as parallel and image processors), massive storage (for "big data"), worldwide networks, new devices and sensors, new programming languages (like Python), databases (like non-SQL), new architectures (like network, decentralized, and distributed architectures), services (like cloud computing), new software construction techniques (like application-specific apps and libraries), and new problem-solving techniques (like AI and augmented reality), SDLC tool support advances from representations and translation for low-level implementation components, to detail design components, to high-level components, to architectures, and unsolved problems. Current technology provides automatic tool support for representing and translating components from construction to design and is moving up the SDLC model hierarchically from low to higher-level components.
The goal of design is to map the application's requirements to a hardware and software environment. The result of process-oriented analysis – data flow diagrams, data dictionary entities, and so on – is translated into detailed specifications for hardware and software. The main output of process-oriented design includes structure charts, physical databases, and program specifications.
In this chapter, you will learn about the concepts and terminologies for process-oriented design and the steps of process-oriented design, including transaction analysis, transform analysis and structure charts, physical database design, program packages, and program design. You will also learn about the strengths and weaknesses of process-oriented design.
This text uses the Martin (1990) version of Information Engineering to illustrate data-oriented design. The result of data-oriented analysis – entity-relationship diagrams, data flow diagrams, CRUD matrices, and so on – is translated into screen designs, production database designs, action diagrams, procedural structures, and security plans. Compared to other approaches, data-oriented design strongly emphasizes security, recovery, and audit controls, relating each to data and processes in the application.
In this chapter, you will learn about the concepts and terminologies for data-oriented design, analyzing data and defining system controls, and the action diagram. The action diagram shows the processing details for an application in a structured format, which can be translated into programs and modules. You will also learn about menu structure, dialogue flow, and hardware and software installation and testing.
The text uses the Booch (1991) methodology to illustrate object-oriented design. The result of object-oriented analysis is translated into time-event diagrams, Booch diagrams, message communications, service objects, and process diagrams. Collectively, they constitute a set of holistic specifications to effectively allocate functionality over program modules at the lowest level and multiprocessor configurations at the highest level.
The Booch notation has been unified with other object-oriented notations (Rumbaugh and Jacobsen) into Unified Modeling Language (UML). In Unit 10, we will look at another example of object-oriented analysis and design using the UML notation. Therefore, you may skim this chapter to gain familiarity with OOD, which you will apply in Unit 10.