Software Engineering (2160701)

BE | Semester-6   Summer-2017 | 04/27/2017

Q3) (c)

Explain different design Concepts in details.

  • Software design sits at the technical core of software engineering and is applied regardless of the software process model that is used.
  • The design task produces a data design, an architectural design, an interface design, and a component design.

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.

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.

Patterns

  • A design pattern describes a design structure and that structure solves a particular design problem in a specified content.

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.

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.

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: 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: Coupling is an indication of interconnection between modules in a structure of software.

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.

Refactoring

  • It is a reorganization technique which simplifies the design of components without changing its function behavior.
  • Refactoring is the process of changing the software system in a way that it does not change the external behavior of the code still improves its internal structure.

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.