Engr 691: Special Topics in Engineering Science
Software Architecture
Spring Semester 1998
Lecture Notes


Introduction

Acknowledgements: This material is based primarily on Chapter 1 of the textbook for this course, Software Architecture: Perspectives on an Emerging Discipline by Mary Shaw and David Garland (Prentice Hall, 1996).

Thanks to Wen Wen Xu for entering my handwritten slides as HTML so that I could prepare these notes more quickly.


What is Engineering?

Many definitions include a phrase similar to:
creating cost-effective solutions
to practical problems
by applying scientific knowledge
building things
in the service of mankind

Key approach:
codify scientific knowledge about a problem domain in a form directly useful to practitioners
(and hence extend the capability of the ordinary design talent)

Question:
Is software development an engineering discipline?


Engineering Design

Engineering Design
routine <====> innovative
familiar problems unfamiliar problems
reuse prior solutions novel solutions
(handbooks, manuals)

Question:
What is the situation with software design?


Software Reuse

Reuse of software
code <===> design

Problems in reuse:


Figures from the Shaw and Garlan Textbook

Examine Figure 1.2, Evolution of an Engineering Discipline.

Examine Figure 1.3, Codification Cycle for Science and Engineering.

Examine Figure 1.4, Evolution of Software Engineering.


Codification through Abstraction

Abstraction:
emphasizing the essentials, ignoring the details

Computer science has progressed by increasing the level of abstraction---moving to larger conceptual building blocks.

(The following dates are approximate.)

1950's machine language
symbolic assemblers
macro processors
simple compilers (e.g., early Fortran)
1960's data typing (Algol)
modularity
user-defined types
1970's theory of abstract data types
early OOP ideas
module interconnection languages (MIL)
1980's . . .
class libraries
1990
CORBA
application framework
patterns
. . .


Aspects of the Emerging Science


What is Software Architecture?

It involves description of: