Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| asd [2021/09/07 14:49] – created user | asd [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Course | + | ===== Advanced Software Design (Fall 2023) ===== |
| The course learning objective is to understand modern software design and practice design and modeling methods in a team project | The course learning objective is to understand modern software design and practice design and modeling methods in a team project | ||
| Line 7: | Line 7: | ||
| === Module 1 === | === Module 1 === | ||
| - | - Course introduction. Software quality and requirements. Why do we need good architecture? | + | - Course introduction. Software quality and requirements. Why do we need good architecture? |
| - | - Software requirements primer. Functional/ | + | - Software requirements primer. Functional/ |
| - | - Object oriented design. Type systems. Abstract data types. UML2 basic class models. Reminder: data modeling and database design. ER diagrams (crow-foot) vs. UML2 data modeling. | + | - Object oriented design. Type systems. Abstract data types. UML2 basic class models. Reminder: data modeling and database design. ER diagrams (crow-foot) vs. UML2 data modeling. |
| - | - Introducing Domain Driven Design. How to find classes? Checklists, noun phrases, language concepts. Domain modeling: ubiquitous lang, bounded context. Elements: entities, value objs, aggregates, services | + | - Introducing Domain Driven Design. How to find classes? Checklists, noun phrases, language concepts. Domain modeling: ubiquitous lang, bounded context. Elements: entities, value objs, aggregates, services |
| - | - Explain Responsibility Driven Design as a method to decompose behavior among objects. Collaborations, | + | - Explain Responsibility Driven Design as a method to decompose behavior among objects. Collaborations, |
| - | - Introduce basic UML2 state diagrams, package models. Describe UML2 Big Picture for logical modeling | + | - Introduce basic UML2 state diagrams, package models. Describe UML2 Big Picture for logical modeling |
| === Module 2 === | === Module 2 === | ||
| - | - General structured design approach (contrast with e.g. tuning). Decomposition principles. Modularization. Cohesion and coupling. Structure charts and dataflow modeling. Define software architecture, | + | - General structured design approach (contrast with e.g. tuning). Decomposition principles. Modularization. Cohesion and coupling. Structure charts and dataflow modeling. Define software architecture, |
| - | - Definition of resources and microservices. Microservices identification in bounded contexts. Conway' | + | - Definition of resources and microservices. Microservices identification in bounded contexts. Conway' |
| - | - Hexagonal and microservices architecture (MSA). API patterns: BFF, API GW, Client Integration. Implementation of RESTful HTTP service. Basic internet tech: DNS, TCP/IP, HTTP/1.1, WebSockets. How to select and evaluate COTS. Licensing. | + | - Hexagonal and microservices architecture (MSA). API patterns: BFF, API GW, Client Integration. Implementation of RESTful HTTP service. Basic internet tech: DNS, TCP/IP, HTTP/1.1, WebSockets. How to select and evaluate COTS. Licensing. |
| - | - How to implement a microservice using frameworks OO languages. SOLID principles. Frameworks. Define design patterns. Classification of patterns. | + | - How to implement a microservice using frameworks OO languages. SOLID principles. Frameworks. Define design patterns. Classification of patterns. |
| - | - Data storage in applications and MSA. Reminder: relational and NoSQL DBMSs. Transactions and state management. ACID and BASE. Data access patterns. | + | - Data storage in applications and MSA. Reminder: relational and NoSQL DBMSs. Transactions and state management. ACID and BASE. Data access patterns. |
| - | - Detailed design for microservices and MSA. Applications of object-oriented patterns (GoF). Microservices patterns. | + | - Detailed design for microservices and MSA. Applications of object-oriented patterns (GoF). Microservices patterns. |
| - What is good/bad design? Coherence/ | - What is good/bad design? Coherence/ | ||
| Line 33: | Line 33: | ||
| Individual assignments also include writing a short essay on a research topic in software design from a list provided by instructors. | Individual assignments also include writing a short essay on a research topic in software design from a list provided by instructors. | ||
| - | |||
| ==== Course grading ==== | ==== Course grading ==== | ||
| - | Module grade = 0.2 * Attendance + 0.4 * Team Project + 0.1 * Essay + 0.3 * Practice | + | Module grade = 0.1 * Attendance + 0.45 * Team Project + 0.1 * Essay + 0.35 * Practice |
| Module grade cannot exceed 10. The final grade is an average of Module 1 and Module 2 grades rounded up. | Module grade cannot exceed 10. The final grade is an average of Module 1 and Module 2 grades rounded up. | ||
| Line 43: | Line 42: | ||
| Attendance is 0..10 and covers lectures and practice sessions, 10 is all but one week of absence. | Attendance is 0..10 and covers lectures and practice sessions, 10 is all but one week of absence. | ||
| - | Team Project is 0..15 is proportional to project score achieved by the team, score includes completed project assignments during the practice and the final project report in each Module. Score 10 is given for a project well-done, a greater score may be achieved for larger projects, more detailed solutions or more complex project topics. | + | Team Project is 0, 4..12 is proportional to project score achieved by the team, score includes completed project assignments during the practice and the final project report in each Module. Score 10 is given for a project well-done, a greater score may be achieved for larger projects, more detailed solutions or more complex project topics. |
| - | Essay is {0, 5, 10}. | + | Team Project scores less than 4 are rounded down to 0 (failed). |
| + | |||
| + | Essay is 0..5. Grading details for the essay are provided along with the topics. | ||
| Practice is 0..10 is proportional to individual activity during the practice sessions, including reporting for the team, reports at the blackboard etc. | Practice is 0..10 is proportional to individual activity during the practice sessions, including reporting for the team, reports at the blackboard etc. | ||
| - | |||
| ==== Books ==== | ==== Books ==== | ||
| Line 56: | Line 56: | ||
| - Head-first design patterns | - Head-first design patterns | ||
| - Sommerville. Software Engineering 10th ed. | - Sommerville. Software Engineering 10th ed. | ||
| + | - K. Wiegers, D. Beatty. Software requirements engineering, | ||
| + | |||
| + | ==== Resources ==== | ||
| + | |||
| + | - [[https:// | ||
| + | - [[https:// | ||
| ==== Contacts ==== | ==== Contacts ==== | ||
| Line 61: | Line 67: | ||
| Prof. Anton S. Khritankov, Ph.D. | Prof. Anton S. Khritankov, Ph.D. | ||
| - | Assist | + | Assist. |
| + | |||
| + | TA Azamat Ismagulov, 2023-curr. | ||
| + | |||
| + | **In the past years** | ||
| + | Assist. Prof. Igor. Y. Mezhuev, Ph.D., 2021-2022 | ||