A software design is an essential engineering description of some software product that is to be established. A design can be determined to the customer's requirements and can be assessed for quality against predefined patterns.
Design specification models
Data design - designed by transforming the analysis data model (data dictionary and ERD) into data structures needed to execute the software.
Architectural design - describes the relationships among the significant structural elements of the software, it is obtained from the system specification, the analysis model, and the subsystem interactions defined in the analysis model (DFD)
Interface design - it defines how the software elements interact with each other, with other systems, and with human users, the data flow and control flow diagrams give much the essential data.
Component level design - generated by transforming the structural elements represented by the software architecture interprocedural descriptions of software components using data obtained from the PSPEC, CSPEC, and STD.
The design process and design quality
Three features that serve as a guide for the evaluation of a good design (goal of a design process)
Characteristics of a good design
design concept Fundamentals
Resolving a problem without being concerned about each element of lower-level specifications. At the most important level of consideration, a solution is stated in broad using the language of the problem conditions. At a lower level of thinking, a more procedural orientation is taken.
There are three different abstractions:
Procedural abstraction - named sequence of events, (e.g open for a door. Open implies a long sequence of procedural steps, like walk to the door, reach out, turn the knob and pull door, step away from moving door, etc.,)
Data abstraction - It named set of data objects (e,g., door contains a set of attributes that specify door, like door type, swing direction, opening tool, weight, dimensions)
Control abstraction - implies a program control mechanism without specifying internal details.
Software Architecture and design patterns include modularity, that is, the software is broken into separately named and addressable components, sometimes called modules, that are combined to meet problem requirements
Modular design method evaluation criteria
Modular decomposability - provides a systematic means for breaking the problem into subproblems.
Modular composability - encourages reuse of existing modules in new methods
Modular understandability - module can be assumed as a standalone Organization.
Modular continuity - side effects due to module changes minimized
modular protection - side effects due to processing errors minimized
Software quality assurance Software quality is described as conformance to explicitly state functional and performance requirements, explicitly documented standards and implicit features that are anticipated of all professionally developer software ... Read More
A tunnel establishes a virtual pipe for data packets between a tunnel entry and a tunnel endpoint. Packets entering a tunnel are forwarded inside the tunnel leave the tunnel unchanged. Tunneling, that is, sending a packet through a tunnel, is achieved by using encapsulation ... Read More
The overall structure of the software components and how the success provides a conceptual integrated file system. In other words, architecture is the hierarchical structure of program components, how these components interact, and the structure of data that are used by the components ... Read More
Real-time and distributed system design The real-time system is a software system the correct functioning of the system depends on the results produced by the system the time at which these results are produced ... Read More
Waterfall Model The waterfall model also called classic life cycle requirements is well defined and stable. It suggests a systematic, sequential approach to software development. It begins with customer specification of requirements and processes through planning, modeling, instruction, and deployment ... Read More
Software Design A software design is an essential engineering description of some software product that is to be established. A design can be determined to the customer's requirements and can be assessed for quality against predefined patterns ... Read More