Textbook Information
Required Material: Mark Grand, “Patterns in Java”, Volume I, Wiley, 2nd Edition, 2002, ISBN 0-471-22729-3
Optional:
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns: Elements of reusable object-oriented software. Addison-Wesley Professional. ISBN 978-0201633610
- Fowler, M. (2003). Patterns of enterprise application architecture. Addison-Wesley Professional. ISBN 978-0-321-12742-6.
- Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., & Stal, M. (2001). Pattern-oriented software architecture: A system of patterns (Vol. 1). Wiley. ISBN 0-471-95869-7.
- Bass, L., Clements, P., and Kazman, R. (2003). Software architecture in practice (2nd ed.). Addison Wesley. ISBN 0-321-15495-9.
- Shaw, M. & Garlan, D. (1996). Software architecture: Perspectives on an emerging discipline. Prentice Hall. ISBN 0-13-182957-2.
- Schmidt, D., Stal, M., Rohnert, H., and Buschmann, F. (2000). Pattern-oriented software architecture (Vol. 2), Wiley. ISBN 0-471-60695-2.
Published Remarks
- None
Hardware Requirements
- A computer that is able to download, install, and run the software for this course.
Software Requirements
-
Visual Studio Community 2022: this is a C# development IDE that can be downloaded from https://visualstudio.microsoft.com/students/.
- Microsoft Visio: please request “Azure Dev Tools for Teaching” from the PSU software request site here: https://softwarerequest.psu.edu/Home/AllReleases.
- An email will be sent to you with instruction to sign in with your new account on the Azure site here: https://azureforeducation.microsoft.com/devtools
- Visio can then be found under “Software” on the left-side of the page under the category “Learning resources.”
- ModelIO: this is an OO design tool good for drawing UML diagrams. The old full version can be downloaded at https://www.modelio.org/downloads/download-modelio.html
- Gliffy: this is another UML design tool that is available online and works with most browsers. The link is https://go.gliffy.com/go/html5/launch
- PlantUML: open source software. The link is https://plantuml.com/.
- There is a vsCode extension for using it in Visual Studio IDE. The link is https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml
Proctored Exams
- None
Course Description
This course conveys 6 categories of design patterns with an acronym called FCC + PBS. The understanding of these 6 categories will help you understand best practices in the software industry, realize the broad spectrum of software reuse, develop large-scale software more effectively, work better as a team, utilize UML diagrams for software design and to reason the pros and cons of the design. You are going to learn patterns in Java and develop software systems using the C# .net framework. Please take advantage of your Java OOD knowledge to self-learn the C# programming language. It is about time for you to learn languages by yourself or as a team. You are going to follow the software process concept by first designing the system and then implementing the system. There are a variety of problems that you will be facing and I would like you to peer program with another person. Peer programming will help you learn alternative designs from your peer and polish your programming skill by going out of your comfort zone.
Overview
SWENG 421 has a strong focus on design and development. The main goal is to learn software architecture, especially at the design patterns level. The implementation in C# is for you to prove the correctness, effectiveness, and quality of your design. The provided course modules mainly cover six categories of design patterns. This course conveys 6 categories of design patterns with an acronym called FCC + PBS. The understanding of these 6 categories will help you understand best practices in the software industry, realize the broad spectrum of software reuse, develop large-scale software more effectively, work better as a team, utilize UML diagrams for software design and to reason the pros and cons of the design. You are going to learn patterns in Java and develop software systems using the C# .net framework. Please take advantage of your Java OOD knowledge to self-learn the C# programming language. It is about time for you to learn languages by yourself or as a team. You are going to follow the software process concept by first designing the system and then implementing the system. There are a variety of problems that you will be facing and I would like you to peer program with another person. Peer programming will help you learn alternative designs from your peer and polish your programming skill by going out of your comfort zone.
Course Outline:
Module 1_2 – Intro to Software Architecture and Review of UML Diagrams Module 3 – Fundamental Design Patterns (Part I) Module 4 – Fundamental Design Patterns (Part II) Module 5 – Creational Design Patterns (Part I) Module 6 – Creational Design Patterns (Part II) Module 7 – Partitioning Design Patterns Module 8 – Structural Design Patterns (Part I) Module 9 – Structural Design Patterns (Part II) Module 10 – Behavioral Design Patterns (Part I) Module 11 – Behavioral Design Patterns (Part II) Module 12 – Concurrency Design Patterns (Part I) Module 13 – Concurrency Design Patterns (Part II) Module 14_15 – Concurrency Design Patterns (Part III & Part IV) Final Project – Team Project Presentations
Objectives
By the end of this semester, you will …
- be able to communicate and design software architecture using UML notations.
- have many experiences to design, develop, and apply fundamental patterns.
- demonstrate how to design, develop, and apply creational patterns.
- practice how to design, develop, and apply partitioning patterns.
- make judgment on how to design, develop, and apply structural patterns.
- develop systems and learn to design, develop, and apply behavioral patterns.
- show how to design, develop, and apply concurrent patterns.
- justify the trade-offs among different types and levels of architectural designs.
- explore the applications of multi-process and multi-thread concurrent architectures.
- compare the tradeoffs between two-tier and three-tier client/server architectures and learn their practices.
- understand the benefits of software design reuse and the applications.
- exercise the development of large-scale software systems.
- learn the architectural design concepts of enterprise applications.
Outcomes
Upon completion of the course, students should possess:
- the ability to learn the C# programming language
- the ability to design large scale software systems
- the ability to apply UML diagrams for system design
- the ability to apply suitable design patterns into system design and development
- the ability to work with others as a team
- the ability to brainstorm with team members into making design decisions
- the ability to propose a system that incorporates constrained design choices
- the ability to choose a suitable software environment to develop a system
the ability to develop multi-user concurrent applications
Course Requirements and Grading
1. Grading Policy
Mid Term 1 |
Mid Term 2 |
Final Exam |
Discussion Participation |
Quizzes |
Homework and Labs |
Final Project |
2. Grade Assignments
A > 92.5 | A- 88.5 – 92.5 | B+ 84.5 – 88.5 |
B 80.5 – 84.5 | B- 76.5 – 80.5 | C+ 72.5 – 76.5 |
C 68.5 – 72.5 | D 64.5 – 68.5 | F < 64.5 |