0707.321 Principles of Software Engineering
Fall 2001
Terminology List
Chapter 9: Formal Specification
- Algebraic specification
- Where the system is specified in terms of its operations and
their relationships.
- Model-based specification
- Where the system is specified in terms of a state model (in
mathetmatical terms) and modifications to that state.
Chapter 10: Architectural Design
- System Architecture
- High-level description (in diagrams and text) of complex software
system. Answers questions like:
- What are the primary subsystems?
- How will the subsystems communicate?
- What will the subsystems communicate?
- Subsystem
- A system in its own right whose operation does not depend on
services provided by other systems.
- Composed of modules
- Have defined interfaces used for communication with other
subsystems
- Often reused in design/implementation of multiple software systems
- Repository (Structural Model)
- Shared data stored in centralized location (repository); other
subsystems access data there, and communicate indirectly through
it.
- Passive Repository
- Control is responsibility of subsystems.
Look to repository for data only.
- Active Repository / Blackboard model
- Repository is in control,
subsytems triggered when particular data becomes available
- Pipeline (Structural Model)
- Simplification of repository; each subsystem passes its result
data into the next one in the pipeline
- Client/Server (Structural Model)
- Subsystems viewed as independent processes; shared communication
medium; server provide services; clients communicate only with
servers; servers can service other servers.
- Abstract Machine or Layered Model (Structural Model)
- Each subsystem defines an abstract layer; each subsystem
implemented in terms of subsystem in the layer "below".
- Centralized Control Model
- One subsystem (system controller) responsible to
managing execution of system as a whole. Two subclassifications:
- Call-Return Model
- Traditional top-down subroutine model. (Sequential execution implied.)
- Manager Model
- Subsytems runs as separate processes; managing subsystem
starts/suspends/stops others. (Concurrent execution implied, but
can be adapted for sequential execution as well.)
Managing subsystem can poll subsystems (sensors, etc.) for
event or state changes.
- Event-based Control Model
- No master controller; subsystems react to external events
(eg. other subsytems). Two subclassifications:
- Broadcast Model
- Event broadcast to all process/subsytems; or (if supported),
special event handler process forwards event notice to
appropriate (registered) subsystem
- Interrupt-driven Model
- Hardware-supported; real-time application; triggering of
interrupt event causes control to pass to the interrupt handler
registered in appropriate slot of interrupt vector.
- Generalized Domain-specific Models
- Abstracted from a number of real systems in domain, encapsulating
common, principal characteristics of these systems.
- Reference Models
- Idealized architecture for a target domain. Often a basis for
a system implementation. (eg. OSI (7-layer) network model)
Chapter 11: Distributed System Architectures
- Distributed Systems
- Software system running on multiple computers. Computers may be:
- close or distant
- homogeneous or heterogeneous (hardware and software)
- collectively or separately managed
- Features
-
- Resource sharing
- Openness
- Concurrency
- Scalability
- Fault tolerance
- Transparency
- Disadvantages (increased...)
-
- Complexity
- Security
- Manageability
- Unpredictability
- Client/Server (C/S) Architectural Layers
-
- Presentation (to user)
- Application processing
- Data management
- 2-Tier C/S - Thin Client
- Server does data management and application processing; client
only does presentation
- 2-Tier C/S - Fat Client
- Server does data management; client does application processing
and presentation
- 3-Tier C/S
- Separate servers for application processing and data management
- Distributed Object Architectures
- System viewed as collection of distributed objects;
no client/server distinction among processes;
each process represented as an object;
communication is via an "software bus", an existing component
(middleware) that can be acquired. (Eg.
CORBA, Java Remote Method Invocation, MS DCOM, MS .NET.)
Chapter 12: Object-Oriented Design
- Information Hiding
- Implementation details unimportant at "next highest level"
- Generalization and Inheritance
- Identifying what different classes of objects have in common.
Putting common functionality (state) in superclasses.
Chapter 14: Design with Reuse
- Function reuse
- Eg. code libraries
- Application reuse
- Incorporating applications wholesale into larger system
- Component reuse
- Can occur at various (component) granularities
- Benefits of component reuse
-
- Increased reliability
- Reduced process risk
- Effective use of programmer specialists
- Accelerated development
- Standards compliance
- Problems/Tasks
-
- Risk of increased maintenance costs
- Lack of CASE tool support
- "Not-invented-here" problem
- New task: maintaining component library
- New task: finding and adapting resuable components
- Guidelines for developing reusable components
-
- Should reflect stable domain abstractions
- Should hide state representation
- Should be as independent of other components as possible
- Should publish exceptions
- Code Generators
- Programs that take user input (via form completion or
instructions in "mini-language") and generate compilation units.
Reusable knowledge encoded in programs. Domain-limited. Best
examples: parser generators (eg. lex & yacc), CASE
tool code generators (UML <-> class definitions)
- Application Families (a.k.a. product line)
- A related set of applciation sharing a domain-specific
architecture. Common core reused during development of new
specialized application.
- Platform specialization
- Configuration specialization
(eg. localization, different peripheral devices)
- Functional specialization
(eg. restricting functionality for cheaper produce releases)