• Unit 6: Software Design

    After requirements and analysis, a software engineer must transform the analysis model into a design model that can be implemented in a specific hardware and software environment. In this unit, we will discuss design and architecture design principles. Just as there are various methodologies for requirements analysis, we will look at three corresponding methodologies of the design model (data-oriented, process-oriented, and object-oriented). As you review this unit, focus on the object-oriented methodology and how it applies to software design. You will put it all together later in this course as part of a case study. However, in addition, start putting it all together now by applying what we have covered to this course. View this course as a system – having requirements, a design, an implementation, and verifications and validations. The application domain for this course is education, and the terminology used differs from that of software engineering. For example, the requirements for this system are called learning objectives; the design is called a syllabus. As we continue this course, consider how you would apply the software engineering models to this course: the CS302 system.

    Completing this unit should take you approximately 9 hours.

    • 6.1: Software Design Principles

      In the design phase of the SDLC, we encounter new principles in addition to those we have seen in prior phases. What are some of those principles? Do you remember abstraction, analysis vs. design, data vs. procedure? Note that different terms often represent the same or similar principle: "hierarchy" is related to abstraction, "problem domain vs. solution domain" corresponds to analysis vs. design, "static vs. behavior" corresponds to data vs. procedure, and so on. Principles apply to all activities and phases of the SDLC. Further, each phase has models describing a phase's products and activities. The models for each phase, however, are compatible. Thus, we will see that design models are compatible with requirements models.

    • 6.2: Architectural Design

      This section focuses on conceptual high-level or architecture design. The following section uses the conceptual model to develop an object model for the high-level design or architecture.

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

    • Unit 6 Assessment

      • Receive a grade