Daddy's Technology Notes

Read, think, and write down the notes.

Tuesday, October 04, 2005

Software Architecture (1)

Preface

Start from today, I will spend the rest of week working on "Software Architecture" by Mary Shaw. One objective is to review the book so as to get some background information for the presentation I am going to give; the other intention is to leave myself some trace what I have read. My plan is to read the first 5 chapters in this weeek, after each one, I will summarize the content here.

The first chapter is introduction, giving the definition of engineering and software architecture; The second chapter mainly gives seven popular architectures; Some case studies are presented in chapter 3 and the different designs are discussed and compared; Chapter 4 is on the shared information systems, which is really about databases to my understanding; and chapter 5 provides architectural design guidelines. The book also provides some formal tools (chapter 6 to 9), however they are too academic to be useful to the introduction of this topic, therefore are excluded.

1. Introduction

1.1 What is software Architecture (SA)?

Software architecture involves the description of elements from which systems are built, interactions among those elements, patterns that guide their composition, and constraints on those patterns. In short, it is related to the system structure instead of algorithm and data structure.

2 reaons that SA is of substantive value to SW engineers:

  • Engineers have evolved over time a collection of idioms, patterns, and styles of SW organization that serves as a shared, semantically rich vocabulary;
  • Although architecture are abstract in relation to the actual computation details, those structures provide a natural framework for understanding broader, system level concerns.

1.2 An engineering discipline for software

Engineering refers to the disciplined application of scientific knowledge to resolve conflicting contraints and requirements for problems of immediate, practical significance in the service of mankind.

  • cost-effective solutions;
  • practical problems;
  • apply scientific knowledge;
  • build things;
  • in the service of mankind.

Engineering design are of 2 kinds:

  • Routine design: familiar problems;
  • Innovaive design: unfamiliar problems.

Software is an innovative design, but we try to make it more routine (component, routine libraries?)

Evolution of engineering discipline:

Production

> Commercial

Craft > Professional Engineering

Science

Engineering exploration starts from craftmanship, later it becomes widely accepted, therefore routine, then science comes in to describe the routine process, which leads to the engineering discipline.

1.3 The status of SA

It is still immature, but made good progress:

  • architectural description language;
  • codification of architectural expertise;
  • frameworks for specific domains;
  • formal underpinnings for architecture.

0 Comments:

Post a Comment

<< Home