software design in software engineering

software design in software engineering

Software Design in software engineering

Software Design is the practice of taking a specification of externally observable 
behavior and adding details needed for actual computer system implementation, including human interaction, task management, and data management details. 
Software design is the process of inventing and selecting programs that meet the objectives for a software system. Input includes an understanding of the following:

1. Requirements
2. Environmental constraints
3. Design criteria

"The output of the design effort is composed as:"
1. Architecture design which shows how pieces are interrelated.  
2. Specifications for any new pieces. 
3. Definition for any new data.

According to the Association of the Software Design{ASD}definitions of the software design is as: 

Software design is the activity of specifying the nature and composition of the software system satisfying client needs and desires, subject to the design constraints.

 Software Design Process

The general design process including design disciplines, building architecture, graphic design, various branches of engineering, and software design also.

Types of Design Process

The software design process can be decomposed into mainly into three levels of design.
  • Interface Design
  • Architecture Design
  • Detailed Design
Interface Design:- Interface design is the specification of the interaction between a system and it's environment. This phase proceeds at a high level of abstraction with respect to the inner working of the system i.e. during interface design, the internals of the system are completely ignored in favor of the relationship between the system and it's environment. the system is treated as a black box.

Interface design should usually include the following details.
  • Precise description of events in the environment, or messages from the agents, to which the system must respond.
  • Precise description of the events or messages that the system must produce.
  • Specification of the data, and the formats of the data, coming into and going out of the system. 
  • Specification of the ordering and timing relationships between incoming events or messages, and outgoing events or outputs(called Protocols).
Often the major task of interface design is User Interface Design, especially for systems with complex graphical user interfaces.

User Interface Design including:
  • Specification of user inputs (from the mouse, keyboard, and so forth).
  • User outputs (sounds, windows, and their contents).
  • valid sequence of user input and outputs.
  • How system features are controlled and monitored by user inputs and outputs.?
User interface design is a large and complex activity in its own right.

Architectural Design

Architectural design is the specification of the major components of the system, their responsibilities, properties, interfaces, and the relationship and interactions between them. In architectural design the overall structure of the system is chosen, but the internal details of major components are ignored.

Threats(issues) in architectural design include.
  • Gross decomposition of the system into their components.
  • Allocation of functional responsibilities to components.
  • Components interfaces.
  • Components scaling and performance properties, resource consumption properties, reliability properties, and so forth.
  • Communication and interaction between components.
Aspects of the system's architecture may be specified in it's requirements, but this is less often the case than with interface design.

Architectural design adds important details ignored during interface design. Design of  the internals of the major components is ignored until the last phase of the design.

Detailed Design

Detailed design is the specification of the internal elements of all major system components, their structure, properties, relationship, processing, and often their algorithm and data structures.

Detailed design is used in all the design specification still left open after architectural design. The detailed may include.
  • Decomposition of major system components into program units.
  • Allocation of functional responsibilities to units.
  • Unit interfaces.
  • Unit states and state changes.
  • Data and control interactions between units.
  • Unit packaging and implementations, including issues of scope and visibility of program elements.
  • Algorithm and data structures.
Detailed design spans a wide range of "details" because there is usually quite a lot to fill in between the architecture and the code. Bulk of software design occurs between the architecture and the code.

Let us know what you feel about this post. So Plz Do Comment

Take a look at here:-

Post a comment