• No results found

Define Cohesion

In document Software Engineering (Page 51-54)

Software Design

Q.4 Define Cohesion

Ans.: An important measure of design quality is cohesion. It refers to the relationship among elements within a module. If a module does more than one task, the instructions in that module are said to be more cohesive (and less error-prone) than modules that perform multiple tasks. Higher or stronger cohesion usually indicates better partitioning, and so, better system design. A module with low cohesion will have elements (data, instructions, module calls) that have little in common with each other or with the modules overall function. A module with high cohesion is quite the opposite, with most or all elements in some way being directly related to the modules main function.

Q5 Define Design Objective ?

Ans. The various desirable objective of software Design are:

1. Correctness: The Design of a System is correct if a system built precisely according to the design satisfies the requirement of that system. The goal during the design phase is to produce correct designs. However, correctness is not the sole criterion during the design phase, as there can be many correct designs.

2. Simplicity: Simplicity is perhaps the most the most important quality criteria for software systems. Maintenance of software system is usually quite expensive. The design of system is one of the most important factors affecting the maintainability of the system.

3. Verifiability: Design should be correct and it should be verified for correctness. Verifiability is concerned with how easily the correctness of the design can be checked. Various verification techniques should be easily applied to design.

4. Traceability: Traceability is an important property that can get design Verification. it requires that the entire design element must be traceable to the requirements.

5. Efficiency: Efficiency of any system is concerned with the proper use of scarce resources by the system. The need for efficiency arises due to cost considerations. If some resources are scarce and expensive, it is desirable that those resources be used efficiently.

In Computer systems the resource that are most often considered for efficiently are processor time and memory. Two of the important such resources are processor time and memory. An efficient system consumes less processor time and memory. designer should incorporate various alternative approaches.

2. Design should not reinvent the wheel. As time is short and resources are limited so design time should be invested in representing truly new ideas, not to check the previously generated components.

3. The design should follow the same idea of the problem so that the developed product will be according to needs of the problem.

4. The design should be structured to accommodate change. The design should be structured so as to be amenable to change and also maintenance should be easily and properly done.

5. Design is not coding, coding is not design. Each when detailed procedural designs are created for program components, the level of abstraction of design model is higher than code.

6. The Design should be assessed for quality as it is being created, not after the fact. During design phase it is needed that we should consider the quality concern regularly at each step.

7. The design should be reviewed to minimize conceptual errors. To minimize errors, design should be reviewed formally and proper considerations should be given on ambiguity, inconsistency etc.

Q 7 Define Design Concepts?

Ans . A set of fundamental software design concepts have evolved over the past four decades. Although the degree of interest in each concept has varied over the years each has stood the test of time. Each provides the software designer with a foundation from which more sophisticated design methods can be applied. Some of the software design fundamentals are:

1. Abstraction 2. Refinements 3. Modularity

4. Software Architecture 5. Control Hierarchy 6. Structural portioning 7. Data Structure

8. Software procedure 9. Information Hiding

1. Abstraction - Abstraction is the process or result of generalization by reducing the information content of a concept or an observable phenomenon,

typically in order to retain only information which is relevant for a particular purpose.

2. Refinement - It is the process of elaboration. A hierarchy is developed by decomposing a macroscopic statement of function in a stepwise fashion until programming language statements are reached. In each step, one or several instructions of a given program are decomposed into more detailed instructions. Abstraction and Refinement are complementary concepts.

3. Modularity - Software architecture is divided into components called modules.

4. Software Architecture - It refers to the overall structure of the software and the ways in which that structure provides conceptual integrity for a system. A good software architecture will yield a good return on investment with respect to the desired outcome of the project, e.g. in terms of performance, quality, schedule and cost.

5. Control Hierarchy - A program structure that represents the organization of a program component and implies a hierarchy of control.

6. Structural Partitioning - The program structure can be divided both horizontally and vertically. Horizontal partitions define separate branches of modular hierarchy for each major program function. Vertical partitioning suggests that control and work should be distributed top down in the information contained within a module is inaccessible to other modules that have no need for such information

In document Software Engineering (Page 51-54)