Fundamental issues in software design


















Completeness: The design should have all the components like data structures, modules, and external interfaces, etc.

Maintainability: A good software design should be easily amenable to change whenever a change request is made from the customer side. Software Design Concepts: Concepts are defined as a principal idea or invention that comes into our mind or in thought to understand something.

The software design concept simply means the idea or principle behind the design. It describes how you plan to solve the problem of designing software, the logic, or thinking behind how you will design software. It allows the software engineer to create the model of the system or software or product that is to be developed or built. The software design concept provides a supporting and essential structure or model for developing the right software.

There are many concepts of software design and some of them are given below:. Skip to content. Change Language. Related Articles. Table of Contents. These decisions are taken into account to successfully develop the software and carry out its maintenance in a way that the quality of the end product is improved. Developing design is a cumbersome process as most expansive errors are often introduced in this phase.

Moreover, if these errors get unnoticed till later phases, it becomes more difficult to correct them. Therefore, a number of principles are followed while designing the software. These principles act as a framework for the designers to follow a good design practice. Some of the commonly followed design principles are as following.

Note that design principles are often constrained by the existing hardware configuration, the implementation language, the existing file and data structures, and the existing organizational practices. Also, the evolution of each software design should be meticulously designed for future evaluations, references and maintenance.

Every software process is characterized by basic concepts along with certain practices or methods. Methods represent the manner through which the concepts are applied. As new technology replaces older technology, many changes occur in the methods that are used to apply the concepts for the development of software. However, the fundamental concepts underlining the software design process remain the same, some of which are described here. Abstraction refers to a powerful design tool, which allows software designers to consider components at an abstract level, while neglecting the implementation details of the components.

As a process, it refers to a mechanism of hiding irrelevant details and representing only the essential features of an item so that one can focus on important things at a time.

As an entity, it refers to a model or view of an item. Each step in the software process is accomplished through various levels of abstraction. At the highest level, an outline of the solution to the problem is presented whereas at the lower levels, the solution to the problem is presented in detail. For example, in the requirements analysis phase, a solution to the problem is presented using the language of problem environment and as we proceed through the software process, the abstraction level reduces and at the lowest level, source code of the software is produced.

There are three commonly used abstraction mechanisms in software design, namely, functional abstraction, data abstraction and control abstraction. All these mechanisms allow us to control the complexity of the design process by proceeding from the abstract design model to concrete design model in a systematic manner.

The software architecture enables the software engineers to analyze the software design efficiently. In addition, it also helps them in decision-making and handling risks. The software architecture does the following. Currently, software architecture is represented in an informal and unplanned manner. Though the architectural concepts are often represented in the infrastructure for supporting particular architectural styles and the initial stages of a system configuration, the lack of an explicit independent characterization of architecture restricts the advantages of this design concept in the present scenario.

Note that software architecture comprises two elements of design model, namely, data design and architectural design. A pattern provides a description of the solution to a recurring design problem of some specific domain in such a way that the solution can be used again and again.

The objective of each pattern is to provide an insight to a designer who can determine the following. Software engineer can use the design pattern during the entire software design process. When the analysis model is developed, the designer can examine the problem description at different levels of abstraction to determine whether it complies with one or more of the following types of design patterns. Modularity is achieved by dividing the software into uniquely named and addressable components, which are also known as modules.

In summary, a software design is a multifaceted artifact produced by the design process and generally composed of relatively independent and orthogonal views. Various authors have identified a number of major architectural styles:. While architectural styles can be viewed as patterns describing the high-level organization of software, other design patterns can be used to describe details at a lower level.

These lower level design patterns include the following:. Architectural design is a creative process. During the design process, software designers have to make a number of fundamental decisions that profoundly affect the software and the development process. It is useful to think of the architectural design process from a decision-making perspective rather than from an activity perspective.

Often, the impact on quality attributes and tradeoffs among competing quality attributes are the basis for design decisions. One approach to providing for reuse of software designs and components is to design families of programs, also known as software product lines. This can be done by identifying the commonalities among members of such families and by designing reusable and customizable components to account for the variability among family members.

In object-oriented OO programming, a key related notion is that of a framework: a partially completed software system that can be extended by appropriately instantiating specific extensions such as plug-ins. User interface design is an essential part of the software design process. User interface design should ensure that interaction between the human and the machine provides for effective operation and control of the machine.

For software to achieve its full potential, the user interface should be designed to match the skills, experience, and expectations of its anticipated users. User interface design must integrate user interaction and information presentation. User interface design should consider a compromise between the most appropriate styles of interaction and presentation for the software, the background and experience of the software users, and the available devices.

User interaction involves issuing commands and providing associated data to the software. User interaction styles can be classified into the following primary styles:. Information presentation may be textual or graphical in nature.

A good design keeps the information presentation separate from the information itself. The MVC Model-View-Controller approach is an effective way to keep information presentation separating from the information being presented.

Software Design Software engineers also consider software response time and feedback in the design of information presentation. Response time is generally measured from the point at which a user executes a certain control action until the software responds with a response. An indication of progress is desirable while the software is preparing the response.

Abstract visualizations can be used when large amounts of information are to be presented. According to the style of information presentation, designers can also use color to enhance the interface. There are several important guidelines:. User interface design is an iterative process; interface prototypes are often used to determine the features, organization, and look of the software user interface. This process includes three core activities:.

User interface design often needs to consider internationalization and localization, which are means of adapting software to the different languages, regional differences, and the technical requirements of a target market. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without major engineering changes.

Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating the text. Localization and internationalization should consider factors such as symbols, numbers, currency, time, and measurement units. User interface designers can use metaphors and conceptual models to set up mappings between the software and some reference system known to the users in the real world, which can help the users to more readily learn and use the interface.

When designing a user interface, software engineers should be careful to not use more than one metaphor for each concept. Metaphors also present potential problems with respect to internationalization, since not all metaphors are meaningful or are applied in the same way within all cultures. This section includes a number of quality analysis and evaluation topics that are specifically related to software design.

See also the Software Quality KA. Software design reviews can also evaluate security. Aids for installation, operation, and usage for example, manuals and help files can be reviewed. Formal design analysis uses mathematical models that allow designers to predicate the behavior and validate the performance of the software instead of having to rely entirely on testing.

Formal design analysis can be used to detect residual specification and design errors perhaps caused by imprecision, ambiguity, and sometimes other kinds of mistakes. Measures can be used to assess or to quantitatively estimate various aspects of a software design; for example, size, structure, or quality. Most measures that have been proposed depend on the approach used for producing the design. These measures are classified in two broad categories:. Many notations exist to represent software design artifacts.

Some are used to describe the structural organization of a design, others to represent software behavior. Certain notations are used mostly during architectural design and others mainly during detailed design, although some notations can be used for both purposes.

In addition, some notations are used mostly in the context of specific design methods see topic 7, Software Design Strategies and Methods. Please note that software design is often accomplished using multiple notations. Here, they are categorized into notations for describing the structural static view vs.

The following notations, mostly but not always graphical, describe and represent the structural aspects of a software design—that is, they are used to describe the major components and how they are interconnected static view :.



0コメント

  • 1000 / 1000