Computer Science
684 – Spring 2012
Software Architecture
and Design
Instructor: Bob Lingard
Office: JD 4417
Office
Phone: 677-3825
Email
Address: rlingard@csun.edu
Web
URL: http://www.ecs.csun.edu/~rlingard
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.
Grading
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.
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
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