Principles of Object-Oriented Software Development
[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

talk show tell print


This chapter explored the notion of software architecture, and in particular how both problem-related issues and technological constraints determine the adoption of a particular architectural style.

Elements of architecture


slide: Section 7.1: Elements of architecture

In section 1, we looked at a number of definitions of the notion of software architecture, including the definition given in  [Practice]. We also looked at the technological infrastructure underlying client/server architectures and discussed some selected distributed object patterns.

Case study -- multimedia feature detection


slide: Section 7.2: Case study -- multimedia feature detection

In section 2, we looked at an experimental musical feature detector, as an example architecture, that uses both a grammar to describe the structural properties of the media items involved, and (embedded) logic to express the rules governing the determination of properties and the retrieval of specified media items.

Crossing boundaries


  • embedded logic -- crossing the paradigm boundary
  • native objects -- crossing the language boundary
  • combining Java and C++

slide: Section 7.3: Crossing boundaries

In section 3, we discussed some of the implications of the architecture sketched in section 2. We looked at embedded logic, as an example of crossing paradigm boundaries, and native objects, as an example of crossing language boundaries. In addition, some of the technical details involved in coupling (native) C++ objects to Java objects were presented.

Architectural patterns and styles


  • technology matrix -- from technology to style
  • case study -- visualization perspectives

slide: Section 7.4: Architectural patterns and styles

In section 4, we discussed how to decide which architectural style to adopt, based on technological constraints on the one hand and application requirements on the other hand. As an illustration, we discuss the alternatives that may arise when realizing an extension to a distributed visualization architecture.

Cross-platform development


  • from Unix to Windows -- AT&T U/Win, Cygnus GNU-win32
  • from Windows to Unix -- Wind/U, Mainwin

slide: Section 7.5: Cross-platform development

Finally, in section 5 we discussed some of the solutions that are available for platform-independent and cross-platform development.


  1. What are the elements of a software architecture? What role does a software architecture description play in development?
  2. Give a definition of software architecture. Can you think of alternative definitions?
  3. What kind of patterns can you think of for distributed object architectures?
  4. Give an example of a complex software architecture. Can you relate the description of the architecture to the definition given earlier?
  5. Discuss the possible motivations for deploying embedded logic.
  6. How would you extend a given imperative or declarative language with objects?
  7. Discuss the Java Native Interface. Does it provide a solution for the problem posed in the previous question? Explain.
  8. What determines the choice for an architectural style? Give an example!

Further reading

An excellent book on software architectures is  [Practice]. You may also want to visit the SEI architecture site at, which provides definitions, and a wealth of other information. As a discussion of the software engineering implications of CORBA, you may want to read  [CorbaPatterns]. If you are interested in multimedia information systems, read  [MM]. For more information on ACOI, visit the ACOI website on .

[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

draft version 0.1 (15/7/2001)