0707.321 Principles of Software Engineering
Spring 2002
Terminology List
Chapter 7: System Models
- System model
- Diagrams that help in the specification of system requirements
- Context model
- Identifies the boundary between the system and its environment
(typically, other systems)
- Architectural model
- Identifies the principal sub-systems of the system
- Behavioral models
- Descriptions of system behavior
- Data-processing model (Data-flow diagrams)
System as "assembly line", processing data at different stages
- State machine models (aka statecharts)
System as single machine moving from state to state
- Data models
- Descriptions of data organization
- Semantic Data Model
Describes logical structure of data
(Eg., entity-relationship-attribute model)
- Object model
Object-oriented perspective, includes:
- Inheritance models (class hierarchy)
- Aggregation models ("object is composed of these other objects")
Chapter 8: Prototyping
- Throw-away prototype
- A tool to help with the development of system requirements, the
concrete artifact complementing the mental visualization. It is
useful when the requirements are (initially) poorly understood.
- Evolutionary prototype
- Prototype developed quickly and modified as requirements are
refined, ultimately becoming the production system.
- Component Assembly
- Prototype is built out of pre-existing components which are
integrated using a common control and communications framework
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
- 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
- Peer-to-peer (P2P) Model
- Clients can communicate with each other without involving server
- 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
- Object-Oriented Development
- Integrated process featuring:
- Object-Oriented analysis (requirements analysis in terms of interacting objects)
- Object-Oriented design
- Object-Oriented programming
- Object-Oriented design
- Stages of design:
- Define context and modes of use
- Design system architecture
- Identify principle objects
- Design/model principal objects
- Specify object interfaces
- Information Hiding
- Reduces complexity; 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
- Components implementing a single function
(Eg. mathematical functions, standard program libraries)
- Application reuse
- Incorporating applications wholesale into larger system;
application families
- Component reuse
- Can occur at various (component) granularities
- Assumptions for software development based around reusable components
-
- Must be possible to find appropriate reusable components
- The reuser of the component must be confident that the components will be reliable and will behave as specified
- The components must be documented so that they can be understood and, where appropriate, modified
- 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)
- Design Patterns
- Predefined abstract designs for components. Leverage object-oriented
language principles.