Software process designing concepts

Introduction to design process

  • The main aim of design engineering is to generate a model which shows firmness, delight and commodity.
  • Software design is an iterative process through which requirements are translated into the blueprint for building the software.

Software quality guidelines

  • A design is generated using the recognizable architectural styles and compose a good design characteristic of components and it is implemented in evolutionary manner for testing.
  • A design of the software must be modular i.e the software must be logically partitioned into elements.
  • In design, the representation of data , architecture, interface and components should be distinct.
  • A design must carry appropriate data structure and recognizable data patterns.
  • Design components must show the independent functional characteristic.
  • A design creates an interface that reduce the complexity of connections between the components.
  • A design must be derived using the repeatable method.
  • The notations should be use in design which can effectively communicates its meaning.

Quality attributes

The attributes of design name as 'FURPS' are as follows:

It evaluates the feature set and capabilities of the program.

It is accessed by considering the factors such as human factor, overall aesthetics, consistency and documentation.

It is evaluated by measuring parameters like frequency and security of failure, output result accuracy, the mean-time-to-failure(MTTF), recovery from failure and the the program predictability.

It is measured by considering processing speed, response time, resource consumption, throughput and efficiency.

  • It combines the ability to extend the program, adaptability, serviceability. These three term defines the maintainability.
  • Testability, compatibility and configurability are the terms using which a system can be easily installed and found the problem easily.
  • Supportability also consists of more attributes such as compatibility, extensibility, fault tolerance, modularity, reusability, robustness, security, portability, scalability.

Design concepts

The set of fundamental software design concepts are as follows:

1. Abstraction
  • A solution is stated in large terms using the language of the problem environment at the highest level abstraction.
  • The lower level of abstraction provides a more detail description of the solution.
  • A sequence of instruction that contain a specific and limited function refers in a procedural abstraction.
  • A collection of data that describes a data object is a data abstraction.
2. Architecture
  • The complete structure of the software is known as software architecture.
  • Structure provides conceptual integrity for a system in a number of ways.
  • The architecture is the structure of program modules where they interact with each other in a specialized way.
  • The components use the structure of data.
  • The aim of the software design is to obtain an architectural framework of a system.
  • The more detailed design activities are conducted from the framework.
3. Patterns
A design pattern describes a design structure and that structure solves a particular design problem in a specified content.

4. Modularity
  • A software is separately divided into name and addressable components. Sometime they are called as modules which integrate to satisfy the problem requirements.
  • Modularity is the single attribute of a software that permits a program to be managed easily.
5. Information hiding
Modules must be specified and designed so that the information like algorithm and data presented in a module is not accessible for other modules not requiring that information.

6. Functional independence
  • The functional independence is the concept of separation and related to the concept of modularity, abstraction and information hiding.
  • The functional independence is accessed using two criteria i.e Cohesion and coupling.
  • Cohesion is an extension of the information hiding concept.
  • A cohesive module performs a single task and it requires a small interaction with the other components in other parts of the program.
Coupling is an indication of interconnection between modules in a structure of software.

7. Refinement
  • Refinement is a top-down design approach.
  • It is a process of elaboration.
  • A program is established for refining levels of procedural details.
  • A hierarchy is established by decomposing a statement of  function in a stepwise manner till the programming language statement are reached.
8. Refactoring
  • It is a reorganization technique which simplifies the design of components without changing its function behaviour.
  • Refactoring is the process of changing the software system in a way that it does not change the external behaviour of the code still improves its internal structure.
9. Design classes
  • The model of software is defined as a set of design classes.
  • Every class describes the elements of problem domain and that focus on features of the problem which are user visible.