Software Architecture and Design (SWD392)
Vietnamese title: Kiến trúc và thiết kế phần mềm
Credits: 3
Prerequisites: SWE201c, PRO192

Description:
This is a course in concepts and methods for the architectural design of software systems of
sufficient size and complexity to require the effort of several people for many months.
Fundamental design concepts and design notations are introduced. Several design methods are
presented and compared, with examples of their use. Students will undertake a term project
working in small groups addressing the design of a relatively complex software system.

Learning outcomes:
Know the Fundamentals of Software Design that includes Software Design Process, Concepts, Notations and Methods
Able to explain the steps in Using COMET/UML, design concepts and multiplicity of associations Collaborative Object Modeling and architectural design method (COMET)
Able to use artifacts in developing Software Analysis Model : classes and objects,statecharts for state dependent objects, object interaction diagrams for each use case Using AI tools generating UML diagrams
Able to design overall Software Architecture in developing Software Design Model Analyzing design solutions with AI-driven improvement recommendations.
Able to design relational database in developing Software Design Model
Able to explain the structure and document a Design Pattern
Effectively utilize AI tools (ChatGPT, PlantUML, Copilot) to support software architecture analysis and design, including: suggesting appropriate architectural models based on system requirements, generating UML diagrams (Use Case, Class, Sequence, Statechart...)

Student tasks:
Students must attend at least 80% of contact slots in order to be accepted to the final examination.
- Student is responsible to do all exercises given by instructor in class or at home and submit on time
- Constantly follow announcements on LMS at https://flm.fpt.edu.vn/ for up-to-date course information regarding assignment submission and feedback on assignments and project work.

Tools:
-Internet
-The Rational Software Architect CASE tool
-Visual Paradigm, MagicDraw, and Visio

Materials:
description: Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures
author: H. Gomaa
publisher: Cambridge University Press
published_date: 2011
edition: 1st Edition
isbn: 9780521764148
note: Books24x7, https://library.books24x7.com/toc.aspx?bookid=41618
description: UML Distilled: A Brief Guide to the Standard Object Modeling Language
author: Fowler
publisher: Addison-Wesley
published_date: 2004
edition: 3rd edition
isbn: 978-0321193681
description: https://gmu.blackboard.com/webct/
description: Design Patterns Elements of Reusable Object-Oriented Software
author: Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
publisher: Addison-Wesley Publishing Company
published_date: 1995

Assessments:
category: Course Project
type: on-going
weight: 25.0
duration: Option 1: 30 slots; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: All LOs
no_question: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: Software Design and Modeling
note: in class, by instructor
category: Progress test
type: on-going
weight: 15.0
duration: Option 1: 30'; ; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: All LOs
no_question: Option 1: Multiple Choices; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: 30; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: All LOs
note: in class, by instructor
category: Final exam
type: Final exam
weight: 60.0
duration: 145 minutes
question_type: All CLOs
grading_guide: All subjects in syllabus
note: By exam board
Manual evaluating
category: Practical Exam
type: Final exam
weight: 20.0
duration: 85'
question_type: All LOs
no_question: Assignment
grading_guide: All studied chapters
note: by Exam Board
category: Theory Exam
type: Final exam
weight: 40.0
duration: 60'
question_type: All LOs
no_question: Multiple Choices
knowledge_and_skill: 60
grading_guide: All LOs
note: by exam board,
using computer

Schedule:
session: Course Introduction
Intro to Software Design (Chapter 1-2)
learning_outcomes: TU
materials: SWD392
session: Course Introduction
Intro to Software Design (Chapter 1-2)
learning_outcomes: TU
session: Course Introduction
Intro to Software Design (Chapter 1-2)
learning_outcomes: TU
session: Intro to Software Design (Chapter 3-4)
Course Project introduction
learning_outcomes: TU
session: Intro to Software Design (Chapter 3-4)
learning_outcomes: TU
session: Intro to Software Design (Chapter 3-4)
learning_outcomes: TU
session: Requirements and Use Case Modeling (Chapter 5-6)
Software Quality Attributes (Chapter 20)
learning_outcomes: TU
session: Requirements and Use Case Modeling (Chapter 5-6)
Software Quality Attributes (Chapter 20)
learning_outcomes: TU
session: Requirements and Use Case Modeling (Chapter 5-6)
Software Quality Attributes (Chapter 20)
learning_outcomes: TU
session: Requirements and Use Case Modeling (Chapter 5-6)
Software Quality Attributes (Chapter 20)
.
Use ChatGPT to generate use case descriptions based on user requirements.

Use GitHub Copilot to generate boilerplate code for logic implementation based on the use case
learning_outcomes: TU
session: Analysis Modeling – Static modeling (Chapter 7)
Analysis Modeling – Object and Class Structuring (Chapter 8)
learning_outcomes: TU
session: Analysis Modeling – Static modeling (Chapter 7)
Analysis Modeling – Object and Class Structuring (Chapter 8)
learning_outcomes: TU
session: Analysis Modeling – Static modeling (Chapter 7)
Analysis Modeling – Object and Class Structuring (Chapter 8)
learning_outcomes: TU
session: Analysis Modeling – Static modeling (Chapter 7)
Analysis Modeling – Object and Class Structuring (Chapter 8)
learning_outcomes: TU
session: Analysis Modeling – Dynamic Interaction Modeling (Chapter 9, 11)
Finite State Machines and Statecharts (Chapter 10)
learning_outcomes: TU
session: Analysis Modeling – Dynamic Interaction Modeling (Chapter 9, 11)
Finite State Machines and Statecharts (Chapter 10)
learning_outcomes: TU
session: Analysis Modeling – Dynamic Interaction Modeling (Chapter 9-10-11)
Finite State Machines and Statecharts (Chapter 10)
learning_outcomes: TU
session: Analysis Modeling – Dynamic Interaction Modeling (Chapter 9-10-11)
Finite State Machines and Statecharts (Chapter 10)
Generate UML architecture diagrams using PlantUML code.
learning_outcomes: TU
session: Introduction to Design Patterns (Material 3)
learning_outcomes: TU
session: Creational & Structural Patterns
learning_outcomes: TU
session: Behavioral Patterns
learning_outcomes: TU
session: Use ChatGPT to suggest appropriate design patterns.
Progress test 1
Course Project- On-going Assessment 1
learning_outcomes: TU
session: Course Project- On-going Assessment 1
learning_outcomes: TU
session: Course Project- On-going Assessment 1
learning_outcomes: TU
session: Course Project- On-going Assessment 1
learning_outcomes: TU
session: Overview of Software Architecture (Chapter 12)
Software Subsystem Architectural Design (Chapter 13)
learning_outcomes: TU
session: Overview of Software Architecture (Chapter 12)
Software Subsystem Architectural Design (Chapter 13)
learning_outcomes: TU
session: Overview of Software Architecture (Chapter 12)
- Software Subsystem Architectural Design (Chapter 13)
learning_outcomes: TU
session: Overview of Software Architecture (Chapter 12)
- Software Subsystem Architectural Design (Chapter 13)
learning_outcomes: TU
session: Designing Object-Oriented Software Architectures (Chapter 14)
learning_outcomes: TU
session: Designing Object-Oriented Software Architectures (Chapter 14)
learning_outcomes: TU
session: Designing Object-Oriented Software Architectures (Chapter 14)
learning_outcomes: TU
session: Designing Object-Oriented Software Architectures (Chapter 14)
learning_outcomes: TU
session: Designing Client/Server Software Architectures (Chapter 15)
Client/Server Software Architectures Case Study (Chapter 21)
learning_outcomes: TU
session: Designing Client/Server Software Architectures (Chapter 15)
Client/Server Software Architectures Case Study (Chapter 21)
learning_outcomes: TU
session: Designing Client/Server Software Architectures (Chapter 15)
Client/Server Software Architectures Case Study (Chapter 21)
learning_outcomes: TU
session: Designing Client/Server Software Architectures (Chapter 15)
Client/Server Software Architectures Case Study (Chapter 21)
learning_outcomes: TU
session: Progress test 2
Using ChatGPT and PlantUML suggest applying relevant patterns in the design
Course Project- On-going Assessment 2
learning_outcomes: TU
session: Course Project- On-going Assessment 2
learning_outcomes: TU
session: Course Project- On-going Assessment 2
learning_outcomes: TU
session: Course Project- On-going Assessment 2
learning_outcomes: TU
session: Designing Service-Oriented Architectures (Chapter 16)
Service-Oriented Architectures Case Study(Chapter 22)
learning_outcomes: TU
session: Designing Service-Oriented Architectures (Chapter 16)
Service-Oriented Architectures Case Study(Chapter 22)
learning_outcomes: TU
session: Designing Service-Oriented Architectures (Chapter 16)
Service-Oriented Architectures Case Study(Chapter 22)
learning_outcomes: TU
session: Designing Service-Oriented Architectures (Chapter 16)
Service-Oriented Architectures Case Study(Chapter 22)
learning_outcomes: TU
session: Designing Component-Based Software Architectures (Chapter 17)
Component-Based Software Architectures Case Study (Chapter 23)
learning_outcomes: TU
session: Designing Component-Based Software Architectures (Chapter 17)
Component-Based Software Architectures Case Study (Chapter 23)
learning_outcomes: TU
session: Designing Component-Based Software Architectures (Chapter 17)
Component-Based Software Architectures Case Study (Chapter 23)
learning_outcomes: TU
session: Designing Component-Based Software Architectures (Chapter 17)
Component-Based Software Architectures Case Study (Chapter 23)
learning_outcomes: TU
session: Designing Concurrent and Real-time Software Architectures (Chapter 18)
Real-time Software Architectures Case Study (Chapter 24)
learning_outcomes: TU
session: Designing Concurrent and Real-time Software Architectures (Chapter 18)
Real-time Software Architectures Case Study (Chapter 24)
learning_outcomes: TU
session: Designing Concurrent and Real-time Software Architectures (Chapter 18)
Real-time Software Architectures Case Study (Chapter 24)
learning_outcomes: TU
session: Designing Concurrent and Real-time Software Architectures (Chapter 18)
Real-time Software Architectures Case Study (Chapter 24)
learning_outcomes: TU
session: Progrest test 3
Course Project:
Support writing architectural documentation.
Generate UML diagrams with example code using PlantUML or Mermaid.
Suggest design pattern, architectural Patterns application rules
learning_outcomes: TU
session: Course Project - Final Evaluation (Team 1-2-3-4)
learning_outcomes: TU
session: Course Project - Final Evaluation (Team 1-2-3-4)
learning_outcomes: TU
session: Course Project - Final Evaluation (Team 1-2-3-4)
learning_outcomes: TU
session: Course Project - Final Evaluation (Team 5-6)
learning_outcomes: TU
session: Course Project - Final Evaluation (Team 5-6)
learning_outcomes: TU
session: Course Review
learning_outcomes: TU