UNIT 3 SOFTWARE DESIGN
Structure
3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Introduction Objectives Data Design Architectural Design Modular Design Interface Design Design of Human Computer Interface Summary Solutions/ Answers Further Readings Page Nos. 39 39 39 42 43 46 49 51 51 52
Software Design
3.0 INTRODUCTION
Software design is all about developing blue print for designing workable software. The goal of software designer is to develop model that can be translated into software. Unlike design in civil and mechanical engineering, software design is new and evolving discipline contrary classical building design etc. In early days, software development mostly concentrated on writing code. Software design is central to software engineering process. Various design models are developed during design phase. The design models are further refined to develop detailed design models which are closely related to the program.
3. 1 OBJECTIVES
After going through this unit, you should be able to: design data; understand architectural design; develop modular design, and know the significance of Human Computer Interface.
3.2 DATA DESIGN
To learn the process of system design involved to translate user requirement to implementable models. Designing of Data Architectural design which gives a holistic architecture of the software product Design of cohesive and loosely coupled module Design of interface and tips for good interface design Design of Human interface
Software Design Process Software design is the process of applying various software engineering techniques to develop models to define a software system, which provides sufficient details for
39
An Overview of Software Engineering
actual realisation of the software. The goal of software design is to translate user requirements into an implementable program. Software design is the only way through which we can translate user requirements to workable software. In contrary to designing a building software design is not a fully developed and matured process. Nevertheless the techniques available provides us tools for a systematic approach to the design of software. Figure 3.1 depicts the process of software design.
Information model Data design
User requirements
Functional model Requirements
System design
Procedural design
Code
Figure 3.1 : Process of software Design
During the process of software design, the information model is translated to data design. Functional model and behavioural model are translated to architectural design, which defines major component of the software. Keeping in view of the importance of design, it should be given due weightage before rushing to the coding of software. Software design forms the foundation for implementation of a software system and helps in the maintenance of software in future too. Software quality and software design process are highly interrelated. Quality is built into the software during the design phase. High level design gives a holistic view of the software to be built, where as low level refinements of the design are very closely related to the final source code. A good design can make the work of programmer easy and hardly allow the programmer to forget the required details. Sufficient time should be devoted to design process to ensure good quality software. The following are some of the fundamentals of design: The design should follow a hierarchical organisation. Design should be modular which are logically partitioned into modules which are relatively independent and perform independent task. Design leading to interface that facilitate interaction with external environment. Step wise refinement to more detailed design which provides necessary details for the developer of code. Modularity is encouraged to facilitate parallel development, but, at the same time, too many modules lead to the increase of effort involved in integrating the modules.
Data design is the first and the foremost activity of system Design. Before going into the details of data design, let us discuss what is data? Data describes a real-world information resource that is important for the application. Data describes various entities like customer, people, asset, student records etc. Identifying data in system design is an iterative process. At the highest level, data is defined in a very vague manner. A high level design describes how the application handles these information resources. As we go into more details, we focus more on the types of data and its properties. As you keep expanding the application to the business needs or business processes, we tend to focus more on the details.
40
Data design Architectural design Modular Design Human Computer Interface Design
Figure 3.2 : Technical aspects of design
Software Design
The primary objective of data design is to select logical representation of data items identified in requirement analysis phase. Figure 3.2 depicts the technical aspects of design. As we begin documenting the data requirements for the application, the description for each item of data typically include the following: Name of the data item General description of the data item Characteristics of data item Ownership of the data item Logical events, processes, and relationships.
Data Sructure A data structure defines a logical relationship between individual elements of a group of data. We must understand the fact that the structure of information affects the design of procedures/algorithms. Proper selection of data structure is very important in data designing. Simple data structure like a scalar item forms the building block of more sophisticated and complex data structures. A scalar item is the simplest form of data. For example, January (Name of the Month), where as the collection of months in a year form a data structure called a vector item. Example: Month as string months_in_year = [Jan, , Dec] The items in the vector called array is sequenced and index in a manner so as to retive particular element in the arry. Month_in_year[4] will retrieve Apr The vector items are in contiguous memory locations in the computer memory. There are other variety of lists which are non-contiguously stored. These are called linked lists. There are other types of data structures known as hierarchical data structure such as tree. Trees are implemented through linked lists.