Design principles and Guidelines
Software design is an iterative process through which requirements are translated into a “blueprint” for constructing the software. The design is represented at a high level of abstraction. As design iterations occur, subsequent refinement leads to design representation at much lower levels of abstraction.
A set of principles for software design:
- The design process should not suffer from “tunnel vision”.
- The design should be traceable to the analysis model.
- The design should not reinvent the wheel.
- The design should “minimize the intellectual distance” between the software and the problem in the real world.
- The design should exhibit uniformity and integration.
- The design should be structured to accommodate change.
- The design should be structured to degrade gently.
- Design is not coding.
- The design should be assessed for quality.
- The design should reviewed to minimize conceptual errors.
More detailed, see Software Design Principles and Guidelines by Douglas C. Schmidt d.schmidt@ vanderbilt.edu. Vanderbilt University.
Real-Time Software Development – an Engineering Approach
By Andrew J. Kornecki and Janusz Zalewski
In this paper, they introduce principles and notations for real-time software development. Concepts of software development methodologies, including methods, techniques and tools for real-time systems are presented. Basic aspects of requirements specification for real-time software are outlined. Notions of a physical diagram and a context diagram are introduced, including the major components of the environment. Two major approaches for software design: structured and object-oriented development are overviewed.
- Background
- Software Development Methodologies
- Principles of Requirements Specification for Real-Time Systems
- System and Its Environment: Physical and Context Diagram
- Basic Categories of Real-Time Systems
- Verification of Requirements Specification
- Design Notations: Structural vs. Object-Oriented Notation
- Characteristics of Automatic Tools for Real-Time Software Development
Read this paper...