One of the greatest difficulties for young graduates that work in software is getting the big picture. Why are things organized the way they are? Why do they behave the way they do? What can you do to change it? Architecting software is normally reserved for senior people, but this course shows you the ropes of the trade so that you too can work towards becoming a software architect.
This course teaches how to design, understand, and evaluate software systems at an architectural level of abstraction. By the end of the course, students will be able to:
· Recognize major architectural styles in existing software systems.
· Describe a systems architecture accurately.
· Generate architectural alternatives to address a problem and choose among them.
· Design a medium-sized software system that satisfies a specification of requirements.
· Use existing tools to expedite software design.
· Evaluate the suitability of a given architecture in meeting a set of system requirements.
· SWE/CS 421
Documenting Software Architectures: Views and Beyond. Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, Judith Stafford., Addison-Wesley 2003 (required available at the GMU bookstore)
Software Architectures Perspectives on an Emerging Discipline. Mary Shaw and David Garlan, Prentice Hall, 1996 (recommended)