Computer Science 684 – Spring 2012

Software Architecture and Design


Instructor:                    Bob Lingard

Office:                          JD 4417

Office Phone:              677-3825

Email Address:  

Web URL:         

Office Hours:               Tuesday and Thursday 2 – 4 PM, and by appointment

Prerequisites:              Comp 380/L (Introduction to Software Engineering) and Comp 682

                                                (Software Requirements Analysis and Specification)

Text:                            Software Architecture in Practice, 2nd Edition,

                                                Len Bass, Paul Clements, and Rick Kazman

                                                Addison Wesley (Pearson Education, Inc.), 2003

                                                (ISBN 0-321-15495-9)

Ticket# 17982: Meets Tuesday and Thursday 5:30 – 6:45 PM in JD 3508


Course Description


Techniques, methods, and tools for designing, building, analyzing, and evaluating the structural, architectural, and behavioral properties of software systems.  It includes the study of the fundamental concepts and principles of software architectural design, structured design, object-oriented design, component-level design and design for reuse.


Course Objectives


Upon successful completion of the course students will be able to

1.     Understand and discuss the properties of good architectural design

2.     Compare and contrast object-oriented analysis and design with structured analysis and design.

3.     Evaluate the quality of multiple architectural designs based on key design principles and concepts.

4.     Select and apply appropriate architectural patterns in the development of a software system.

5.     As part of a team effort, create and specify a software architectural design for a medium-size software product based on an existing software requirement specification using an accepted program design methodology (e.g., structured or object-oriented), and appropriate design notation.

6.     Conduct a software architectural review using appropriate guidelines.

7.     Evaluate a software architecture at the component level.

8.     Evaluate a software architecture from the perspective of reuse.




An absolute grading system will be used, where 90% is required for an A, 80% for a B, 70% for a C, 60% for a D, and anything below 60% is failing.  Pluses and minuses will be given for grades within 3 percentage points of the dividing marks.  For example, a final total which is 80% or more but less than 83% would correspond to a letter grade of B-, a total of 77% or more but less than 80% would correspond to a C+, etc.  The final grade will be based on the following:


                                    Midterm Exam                                     15%

                                    Final Exam                                          30%

                                    Group Projects                                    15%

                                    Individual Projects/Homework 15%

                                    Presentations                                      25%


Late work will be accepted without penalty only if some compelling reason is provided (preferably in advance) justifying the lateness.  Without such a justifiable excuse, late work will be penalized 5% for each calendar day that it is late (with a maximum penalty of 50%).


Plagiarism (intentionally or knowingly representing the words, ideas, or work of another as one’s own) or any other form of academic dishonesty will not be tolerated.  Students who are guilty of such dishonesty will receive no credit for the given assignment or exam and will not be allowed the opportunity to redo the work in question. In addition, incidents of academic dishonesty may be reported to the University and further disciplinary actions are possible including expulsion or suspension from the University.  (See Appendix E-2 of the University Catalog.)




The exams may be “take home” exams or “in class” exams.  They may be open book or closed book, but, in any case, they must be individual efforts.  Discussing the questions on the exam with an individual, other than the instructor, is not permitted.


Group Projects


The students in the class will be divided into teams of four to five members each.  The group projects will be done as team efforts and a single result will be turned in by the team.  Members of each team will evaluate the performance of the other team members at the end of the semester.  This evaluation will account for 25% of the total Group Project grade (or 5% of the total course grade).


Individual Projects/Homework


Individual assignments and projects will also be given.  Discussion and collaboration with other class members on individual assignments is permitted, and even encouraged, to the extent that said collaboration is a fair and equitable exchange of ideas.  That is, one individual should not be doing all the work and sharing it with others.  It is permissible to ask other students for help, but it is not permissible to copy the results of others.  If several students collectively solve a problem, each should write up the results in his or her own words.




Each student will be required to select a technical article on a subject relevant to the course, review and analyze the article, and present a summary and critical evaluation to the class.


Tentative Outline


1.     Introduction to Software Architecture                                                                   

a.     What is Software Architecture?

b.     Why is Software Architecture Important?

c.      Components of a System

d.     Relationship between Components

2.     System Quality Attributes Influencing the Architecture                                        

a.     Runtime Attributes (e.g., performance, usability, etc.)

b.     Software Engineering Attributes (e.g., modifiability, reusability, etc.)

c.      Business Attributes (e.g., cost, time to market, etc.)

3.     Security Implications for Software Architectures                                                  

4.     Architectural Design Principles                                                                            

a.     Decomposition

                                                    i.     Identifying Functional Components

                                                   ii.     Composition/Aggregation

                                                  iii.     Component Communication

b.     Replication

c.      Abstraction

d.     Resource Sharing                                                                              

5.     The Process of Software Architectural Design                                                    

a.     Architectural Requirements

b.     System Structuring

c.      Architectural Validation

d.     Organizational Considerations

6.     Architectural Styles and Patterns                                                                         

a.     Data Centered Architecture

b.     Data-Flow Architecture

c.      Virtual Machine Architecture

d.     Call-and-Return Architecture

e.     Independent Component Architecture

f.       Heterogeneous Architectures

7.     Architectural Representation and Documentation                                               

a.     Review of UML Notation

b.     Architectural Design Languages                                                                    

8.     Analyzing and Assessing Software Architectures                                                

a.     Properties of a Good Software Architecture

b.     Review Techniques


Final Exam: Tuesday, May 15, 5:30 – 7:30 pm