Software Engineering Week 4 Low Level Design Part 1 PDF

Summary

This document provides an overview of software engineering week 4, focusing on low-level design concepts. It covers key tasks, including understanding requirements and architecture, creating detailed design, and documenting and evaluating designs.

Full Transcript

CP317 Software Engineering week 4-1: Low-level design-part 1 Shaun Gao, Ph.D., P.Eng. Agenda Review week 3-2 topics Low-level (detailed) design Concept Key tasks in low-level design Understanding requirements, architecture and systems Creating detailed design...

CP317 Software Engineering week 4-1: Low-level design-part 1 Shaun Gao, Ph.D., P.Eng. Agenda Review week 3-2 topics Low-level (detailed) design Concept Key tasks in low-level design Understanding requirements, architecture and systems Creating detailed design Interface design (internal and external) Shared memory - concurrency Graphical User interface (GUI) design ASCII code Internal component design (structure and behavioral) Data design, data structure design Documenting detailed design Evaluating detailed design Summary Review week 3-2 topics Race condition Unified modeling language (UML) UML diagrams Structure diagram Class diagrams, Component diagrams Behavior diagram Use case diagram, State transition diagrams, Sequence diagrams Review week 3-2 topics – cont. Design principles (3 principles) – they also apply to detailed design Decomposition Cohesion Coupling Cohesion and coupling apply to both architecture design and detailed design Introduction Low-level (detailed) design Low-level (detailed) design is the process of refining and expanding the software architecture of a system or component to the extent that the design is sufficiently complete to be implemented. It is the specification of the internal elements of all major system components, their properties, relationships, processing, and often their algorithms and the data structures, data types. During detailed design, software engineers go deep into each component to define its data structure and behavioral capabilities, and the resulting design leads to natural and efficient construction of software. Introduction – cont. Where we are? Waterfall model Fundamentals of low-level design Key tasks in detailed design Understanding architecture and requirements, Creating detailed design Documenting detailed design Evaluating detailed design Managing implementation Key tasks in detailed design Understanding architecture and requirements This is the first step, and it is paramount Requirements are allocated to specific components – I/F Always consider cohesion and coupling Key tasks in detailed design – cont. Creating detailed design When creating detailed design, focus is placed on the following: Interface design (internal) A software interface refers to a wide range of different types of interface at different levels. Interface design (external) Graphical User interface (GUI) design Internal component design (structure and behavioral) Data design (database), data structure data types Key tasks in detailed design –cont. Creating detailed design Interface design (internal) Interface among components (processes) Shared memory Defined by software Message passing Depend on OS Inter-process communication (IPC) https://docs.microsoft.com/en-us/windows/win32/ipc/interprocess- communications Key tasks in detailed design – cont. Creating detailed design Interface design (internal) – cont. Shared memory Shared memory is a type of memory that can be shared by multiple processes with the intent of providing inter-application communication. – defined by software Example: ring buffer Concurrency: it is the executions of several instructions occur at the same time. Advantages: Less operating system dependency, has higher portability Risk: Race conditions: Key tasks in detailed design – cont. Creating detailed design Interface design (external) Among devices and users Involves data communication Protocol + OS and CPU knowledges TCP/IP or Serial (RS-232C) Microcontroller Example: ATM, user – ATM – backend. Both internal and external interface design requires OS and CPU knowledges. OS Mobile laptop/desk Android 72.84%, 0% Windows < 1 %, 87.56% MacOS/iOS 16.55%, 9.54% Key tasks in detailed design – cont. Creating detailed design Interface design (external) Question? Man-machine interface American Standard Code for Information Interchange (ASCII) table/code Question? Key tasks in detailed design – cont. Interface design (internal) Interface design (external) Think – Pair – Share For the group project, which interface design is needed? Key tasks in detailed design – cont. Creating detailed design Graphical User interface (GUI) design.NET used in Windows, Linux, or Mac OS, and etc. C# JavaScript, HTML WPF: windows presentation foundation X windows (X11) system for UNIX Key tasks in detailed design – cont. Internal component design (structure and behavioral) UML structure diagram Class diagram Component diagram UML behavior diagram Use case diagram State transition diagram Sequence diagram Key tasks in detailed design – cont. Data design, data structure design Data structures Array Stack: last-in–first-out (LIFO) data structure Queue: first-in–first-out (FIFO) data structure Linked list Singly linked list Double linked list Define your own data structures based on requirements Data type Different between integer and unsigned integer Incorrect data type definition can be problematic. Example: students’ grade should use unsigned integer or just integer Key tasks in detailed design – cont. Documenting detailed design Software design document (SDD) Software design specification (SDS) Software detailed design (SDD) Think – Pair – Share What does the table of contents for the group project look like? Key tasks in detailed design – cont. Documenting detailed design Software design document (SDD) Software design specification (SDS) Software detailed design (SDD) Example of Table of Contents of SDD The four sections are mandatory. you can add or remove items. Key tasks in detailed design – cont. Evaluating detailed design The most popular technique for evaluating detailed design is technical reviews. Keep in mind the following – be professional Send a review notice with enough time Include a technical expert Include a member of software quality assurance and testing team Present how your design helps meet system requirements Document the review process – meeting note Key tasks in detailed design – cont. Managing implementation (4 steps) Prepare a good implementation plan Create an implementation model Learn later Take care of the component implementation Summary Low-level (detailed) design Concept Key tasks in detailed design Understanding requirements, architecture and systems Creating detailed design Interface design (internal and external) Shared memory - concurrency Graphical User interface (GUI) design ASCII code Internal component design (structure and behavioral) Data design, data structure design Documenting detailed design SDD, how to write a SDD Evaluating detailed design Announcement 75% of you have a group. Please let me know if you need help. Test 1 (60 minutes, cover week 1 - week 4) on Feb. 3 class time. Please bring your laptop Locations: LH3094

Use Quizgecko on...
Browser
Browser