• 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.