next up previous contents
Next: Information Systems Development and Up: Course outlines Previous: Web Application Engineering   Contents

Software Architecture Design

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



Matthew Dailey 2006-11-20