Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. COMPUTER ENGINEERING DEPARTMENT Course: CMPE 296G Course Title: Software Architectures Semester: Spring 2005 _____________________________________________________________________________________ Course Catalog Description Provides in depth the concepts, principals, methods, and best practices in software architectures; emphasizes on team projects to architect domain-specific architectures, service-oriented architectures, product-line architectures, adaptive and generative architectures. Prerequisites: CmpE202, 3 units Prerequisites:CmpE202 (System Engineering), or instructor’s permission -- It is desirable the students have sound programming skills in C++ or Java and a sound first level exposure to data structures. Clear understanding of the concept of object oriented programming would help. Familiarity with C++ or Java is helpful but not mandatory. Students with excellent aptitude in the course but with little prior exposure to prerequisites may also take the course but they will have to put in substantial extra effort during the first one month or so. Required Textbooks: Must likely are a group of papers and/or one of the following books: 1. C. Hofmeister, R. Nord, D. Sonic. Applied Software Architecture. Addison-Wesley Object Technology Series, Addison-Wesley, October 1999, ISBN# 0201325713 2. Len Bass, Paul Clements & Rick Kazman; Software Architecture in Practice, 2nd edition, Addison-Wesley, 2003 3. Paul Clements,, Evaluating Software Architectures: Methods and Case Studies , Addison Wesley, 2002 Support Text: 1. M. Fayad, D. Schmidt & R. Johnson. Implementing Application Frameworks: Object-Oriented Frameworks at Work, New York: John Wiley & Sons, September 1999, ISBN# 0-471-15012-1 2. M. Fayad and R. Johnson. Domain-Specific Application Frameworks: Experience by Industry, New York: John Wiley & Sons, October 1999 with a C.D. 3. B. Tekinerdogan. Synthesis-Based Software Architecture Design, Ph.D. Thesis, University of Twente, 2000 4. M. Johnson, R. Baxter, and T. Dahl. SanFrancisco Life Cycle Programming Techniques, Addison-Wesley, 2000 with a CD. 1 of 8
  2. 2. COMPUTER ENGINEERING DEPARTMENT 5. P. Monday, J. Carey, and M. Dangler SanFrancisco Component Framework: An Introduction, Addison-Wesley, 2000 with a CD. 6. M. Shaw and D. Garlan, Software Architecture-Perspectives on an Emerging Discipline, Prentice-Hall, Upper Saddle River, New Jersey, 1996. Please note: More articles will be provided in the 16 weeks schedule below. Student Learning Objectives: By the end of the course, you should: 1. Have an ability to apply knowledge of several software architectures, such as product line architectures, service-oriented architectures 2. Have an ability to document effectively software architectures. 3. Have an ability to use the principles, methods, techniques, and skills of architecting any software systems. 4. Be capable of becoming a talented “software architects” with superior competence in building robust and adaptive software systems in extremely effective way. Course Overview: The OBJECTIVE of the course is to provide a sound technical exposure to the concepts, principles, methods, and best practices in software architecture and software design. The VISION of the course is to produce "software architects" with sound knowledge and superior competence in building robust, scalable, and reliable software intensive systems in an extremely effective way. They would have a clear appreciation of the role of abstraction, modeling, architecture, and design patterns in the development of a software product. They would be able to make optimal architectural choices and employ the most relevant methods, best practices, and technologies for architecting and implementing a software product, regardless of its complexity and scale. Software architecture has become an area of intense research in the software engineering community. A number of architecture modeling notations and support tools, as well as new architectural styles, have emerged. The focus of architecture-based software development is shifted from lines-of-code to coarser-grained building blocks and their overall interconnection structure. Explicit focus on architecture has shown tremendous potential to improve the current state-of-the- art in software development and alleviate many of its problems. This course will expose you to the concepts, principles, and state-of- the-art methods in software architectures, including domain-specific software architectures (DSSA), architectural styles, architecture description languages (ADL), software connectors, dynamism in architectures, and architecture-based testing and analysis. In the process of studying these concepts, we will make explicit the boundaries of the field and discuss its relationship to other areas of software engineering, specifically requirements, design (including object-oriented design and related notations, such as UML), and implementation. The course will also examine the practical applicability of architecture research, specifically its relationship to the work in software reuse and component interoperability platforms (such as CORBA, JavaBeans, and COM/DCOM). Homework assignments and an exam will be given to assess your understanding of important concepts, 2 of 8
  3. 3. COMPUTER ENGINEERING DEPARTMENT methods, languages, and tools. A project will give you an opportunity to study an aspect of architectures in more depth and "push the envelope" of architecture practice and research. This course will treat the following topics in depth: 1. Software Architectures Architecture-based software engineering research has yielded an impressive array of technologies and demonstrations over the past decade. Using an architecture-based approach, applications have been built which: - Are understandable - Are expected to evolve - Exhibit remarkable flexibility - Demonstrate significant reuse of off-the-shelf components - Leverage experience from related applications in the same problem domain - Are analyzable earlier in their development than ever before - Are key milestones in software managerial and development processes. Currently, there is relatively little guidance for software developers on how to develop software architectures. This course addresses several topics crucial to the state of the art and practice of software architecture. The course presents a complete reference on how to develop a good software architecture and provides guidelines for resolving key software architecture issues, such as evolving software architectures, leveraging existing investment in software architecture artifacts, representing architecture description languages, introducing formal models for software architectures, addressing architectural analysis techniques & development methods, transitioning from software architecture to coding and surveying architectural design tools and environments. In addition, the course will include sections on: accessing of software architectures, testing and validating software architectures, improving software architecture quality, documenting software architectures, and many more. 2. Product-Line Architectures (PLAs) Software product lines are emerging as a new and important software development paradigm. A Product- Line Architecture (PLA) is a design for a family of related applications, and its motivation is to simplify the design and maintenance of program families and to address the needs of highly customizable applications in an economical manner. Companies are realizing that the practice of building sets of related systems from common assets can yield remarkable improvements in productivity, time to market, product quality and customer satisfaction. But these gains are only a part of the picture; organizational, technical and management issues are other factors that should be considered. Although there are encouraging research experiences with PLAs and some guidelines exist to help in the development process, some issues about component-based development in PLAs are still under study. The goal of this course is to examine the foundational concepts underlying product lines and address the essential activities developers should consider to apply a PLA to a number of lines of products. 3. Service-Oriented Architectures (SOAs) 3 of 8
  4. 4. COMPUTER ENGINEERING DEPARTMENT A service-oriented architecture is essentially a collection of services. These services communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity. Some means of connecting services to each other is needed. Service-oriented architectures are not a new thing. The first service-oriented architecture for many people in the past was with the use DCOM or Object Request Brokers (ORBs) based on the CORBA specification. For more on DCOM and CORBA Course Format: In first half of the semester I will cover the basic topics in the more traditional lecture format. There will be four structured exercises and a midterm test devoted to this part. The instructor, visitors, and students will jointly present some of the advanced topics in the second half. Students will work on a project of their choice during this period and submit a paper-length report (about 30 double-spaced pages including figures and references) by the last day of classes. Project presentations will be scheduled during the last and the final's weeks. Grading (Tentative): Midterm: 20% Final Take Home 30% Project (Team Reports): 40% Short Esay: 10% Schedule (Subject to Change) Week Lecture Topic Readings • Course introduction W1 • Overview of software engineering principles • F. P. Brooks, Jr. No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, April 1987. • F. DeRemer and H. H. Kron. Programming-in-the-Large • Origins of versus Programming-in-the-Small. IEEE Transactions on software W2 Software Engineering, June 1976. architectures • B. W. Boehm and W. L. Scherlis. Megaprogramming. Software Technology Conference 1992, Los Angeles, April 1992. W3 • Introduction • Chapter 1 4 of 8
  5. 5. COMPUTER ENGINEERING DEPARTMENT to software architectures • D. E. Perry and A. L. Wolf. Foundations for the Study of Software Architectures. ACM SIGSOFT Software Engineering Notes, October 1992. • Scope of • Chapter 3 software W4 architectures • 2nd International Software Architecture Workshop (ISAW-2) Case Study • Chapter 5 • T. Korson and J.D. McGregor. Understanding Object- Oriented: A Unifying Paradigm. Communications of the • Arriving at an ACM, September 1990 W4 architecture • P. Kruchten. Mommy, Where Do Software Architectures Come from? 1st International Workshop on Architectures for Software Systems, Seattle, WA, 1995. • Domain- specific • W. Tracz. DSSA (Domain-Specific Software Architecture) software Pedagogical Example. ACM SIGSOFT Software Engineering W5 architectures Notes, July 1995. (DSSA) (html) • Chapter 2 • Architectural • Chapter 8: Section 8.2 W6 styles • M.Shaw. Comparing Architectural Design Styles. IEEE Software, November 1995. • D. Batory and S. O'Malley. The Design and Implementation of Hierarchical Software Systems with Reusable • Examples of Components. ACM Transactions on Software Engineering domain- and and Methodology, October 1992. W6 style-specific architectures • R. N. Taylor et al. A Component- and Message-Based Architectural Style for GUI Software. IEEE Transactions on Software Engineering, June 1996. • Project W6 Discussion & Project Requirements, Sample Projects Suggestions W7 • Software • M.Shaw. Procedure Calls are the Assembly Language of connectors Software Interconnections: Connectors Deserve First-Class Status. Workshop on Studies of Software Design, 1993. 5 of 8
  6. 6. COMPUTER ENGINEERING DEPARTMENT • E. M. Dashofy et al. Using Off-the-Shelf Middleware to Implement Connectors in Distributed Software Architectures. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999. • Addendum: Specification of the C2SADEL Architecture • Project W7 Description Language discussion • McGregor, John D.; Northrop, Linda M.; Jarrad, Salah; & Pohl, Klaus. "Initiating Software Product Lines." IEEE Software 19, 4 (July/August 2002): 24-27. • Clements, P. & Krueger, C. Two-part Point/Counterpoint column: "Being Proactive Pays Off" and "Eliminating the Adoption Barrier." • Product-Line IEEE Software 19, 4 (July/August 2002): 28-31. W8 Architectures • Northrop, Linda M. "SEI's Software Product Line Tenets." IEEE (PLA) Software 19, 4 (July/August 2002): 32-40. • Kang, Kyo C.; Lee, Jaejoon; & Donohoe, Patrick. "Feature- Oriented Product Line Engineering." IEEE Software 19, 4 (July/August 2002): 58-65. • PLA W8 Examples Jean-Jacques Dubray "Constructing Software for • Service- Service Oriented Architecture" Oriented W9 Architectures • Jean-Jacques Dubray "Standards for a Service Oriented (SOA) Architecture",, November 2003 • SOA W9 Examples • Architecture • N. Medvidovic and R. N. Taylor. A Framework for description Classifying and Comparing Architecture Description W10 languages Languages. 6th European Software Engineering Conference (ADLs) with the 5th ACM SIGSOFT Symposium on the Foundations of Software Engineering, Zurich, Switzerland, September 1997. • D. C. Luckham and J. Vera. An Event-Based Architecture Definition Language. IEEE Transactions on Software Engineering, September 1995. • ADL W10 Examples • N. Medvidovic et al. A Language and Environment for Architecture-Based Software Development and Evolution. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999. W11 • Dynamism in • J. Magee and J. Kramer. Dynamic Structure in Software 6 of 8
  7. 7. COMPUTER ENGINEERING DEPARTMENT Architectures. 4th ACM SIGSOFT Symposium on the Foundations of Software Engineering, San Francisco, CA, software October 1996. architectures • P. Oreizy et al. Architecture-Based Runtime Software Evolution. 20th International Conference on Software Engineering, Kyoto, Japan, April 1998. • M. Moriconi et al. Correct Architecture Refinement. IEEE Transactions on Software Engineering, April 1995. • Architecture- based testing W12 • C. Gacek and B. W. Boehm. Composing Components: How and analysis Does One Detect Potential Architectural Mismatches? Workshop on Compositional Software Architectures, Monterey, CA, January 1998. (html) • J. E. Robbins et al. Integrating Architecture Description Languages with a Standard Design Method. 20th • Role of UML International Conference on Software Engineering, Kyoto, in software W13 Japan, April 1998. architectures • Rose/Architect: A Tool to Visualize Architecture. Hawaii Interntaional Conference on System Sciences, January 1999. • Role of UML W14 in software More articles will be listed architectures • D. Krieger and R.M. Adler. The Emergence of Distributed • From Component Platforms. IEEE Computer, March 1998. architecture to W15 • E. Di Nitto and D. S. Rosenblum. Exploiting ADLs to Specify implementati Architectural Styles Induced by Middleware on Infrastructures. 21st International Conference on Software Engineering, Los Angeles, CA, May 1999. • Middleware - • S. Vinoski. CORBA: Integrating Diverse Applications W15 CORBA Within Distributed Heterogeneous Environments. IEEE Communications Magazine, February 1997. • R. Natarajan and D. S. Rosenblum. Merging Component • Middleware - Models and Architectural Styles. Third International W16 JavaBeans Software Architecture Workshop, Nov. 1998. • Sun Microsystems, Inc. Java Beans 1.01 Specification. W16 • Summary and • N. Medvidovic and D. S. Rosenblum. Domains of Concern in review Software Architectures and Architecture Description Languages. USENIX Conference on Domain-Specific • Final project Languages, Santa Barbara, CA, October 1997. 7 of 8
  8. 8. COMPUTER ENGINEERING DEPARTMENT discussion and clarification 8 of 8