AT 70.18
Software Architecture Design
Semester: January
Rationale:
Designing, developing, and evolving complex software systems
requires a mastery of analytical and technical skills, as well as a
knowledge of appropriate processes, architectures and design
patterns. Software architects building complex systems must create
the illusion of simplicity through decomposition, abstraction, and
encapsulation of functionality.
This course teaches the fundamentals of software architecture, drawn
from research and best practice on large software projects.
Students will learn techniques and tools for modeling, analyzing,
evaluating, and controlling the development of complex software
systems. Real-world case studies will be used throughout the
course.
A major component of the course will be the design of a significant
open-source software project. Students may make a specific
contribution to an existing large open source project or start a new
project of their own choice. Projects with the potential to play a
role in development of the Asian region will be strongly encouraged.
Catalog description:
Software engineering, Software architecture, Software frameworks,
Enterprise application architecture
Credits:
3(3-0)
Prerequisite:
Experience programming in a high-level programming language, e.g. C
or Java, or by permission of the instructor.
Course Outline:
1. Architectural design principles
1. Abstraction
2. Encapsulation
3. Cross-cutting concerns
2. The unified modeling language (UML)
1. Types of diagrams
2. UML tools
3. Architectural views
1. Use case view
2. Logical view
3. Process view
4. Implementation view
5. Deployment view
4. Object-oriented analysis and design
1. Problem domain modeling
2. Classes, interfaces, and roles
3. Design patterns
4. Model-driven architecture
5. Attribute-driven design
1. Quality attribute scenarios
2. Achieving quality goals
3. Attribute-driven architecture evaluation
6. Architectural patterns and anti-patterns
7. Enterprise application integration
8. Service-oriented architecture
9. Business process modeling
10. Enterprise application architecture middleware
1. Java EE
2. .NET
11. Architecture and agile development processes
12. Architectural reconstruction of legacy code bases
Textbook:
Lecture notes provided by instructor
References (books):
Bass, L., Clements, P., and Kazman, R. (2003). Software Architecture
in Practice. Addison-Wesley, 2nd edition.
Booch (2006), Handbook of Software Architecture,
http://www.booch.com/architecture/index.jsp
Booch, Rumbaugh, and Jacobson (2005), The Unified Modeling Language
User Guide, 2nd Edition, Addison-Wesley.
Brooks (1995), The Mythical Man-Month: Essays on Software
Engineering, 2nd Edition, Addison-Wesley, ISBN 0-201-83595-9.
Fowler (2003) UML Distilled: A Brief Guide to the Standard Object
Modeling Language, Third Edition. Addison-Wesley.
Fowler et al. (2002), Patterns of Enterprise Application
Architecture. Addison-Wesley.
Garland and Anthony (2002), Large-Scale Software Architecture: A
practical guide using UML, Wiley.
Maier and Rechtin (2000), The Art of Systems Architecting, 2nd
Edition, ISBN 0-8493-0440-7.
Pilone and Pitman (2005), UML 2.0 in a Nutshell, O'Reilly.
Sommerville (2005), Software Engineering, 7th Edition,
Addison-Wesley, ISBN 0-321-21026-3.
Stevens (2006), Using UML: Software Engineering with Objects and
Components, 2nd Edition, Addison-Wesley, ISBN 0-321-26967-5.
Journals and articles:
Bach, J., What Software Reality is Really About. Computer (December
1999): 148-149.
Brooks, F.P., No Silver Bullet: Essence and Accidents of Software
Engineering. IEEE Computer, April 1987.
Davis, A., Fifteen principles of software engineering IEEE
Software, 11(6): 94-96, 101 (1994)
Davis, A., Software Lemmingineering. IEEE Magazine (September 1993):
79-82.
Ewusi-Mensah, K., Critical Issues in Abandoned Information Systems
Development Projects. Communications of the ACM 50, no. 9 (September
1997).
Garlan, D., and Shaw, M., (1993). An Introduction to Software Architecture,
In V. Ambriola and G. Tortora (ed.), Advances in Software
Engineering and Knowledge Engineering, Series on Software
Engineering and Knowledge Engineering, Vol 2, pp. 1-39.
Kruchten, The 4+1 View Model of Architecture, IEEE Software 12(6),
November 1995.
Ledgard, H.F., The Emperor with No Clothes, Communications of the
ACM 44(10), 2001.
Leveson, N., Software Engineering: A Look Back and A Path to the
Future, December 14, 1996
Meyer, B., A Really Good Idea. Computer (December 1999): 144-147.
Miller, S.K., Aspect-oriented programming takes aim at software
complexity. IEEE Computer, 34(4), pp. 18-21, 2001.
Wirth, N., A Plea for Lean Software. Computer (February 1995):
64-68.
Coursework and Grading:
Homework (20%), open-source project plan (30%), midterm exam (20%),
final exam (30%)
Instructor:
Dr. Matthew Dailey