Software Design Basic Concepts (Year 3 Semester 1) : University of Mines and Technology, Tarkwa Umat
This document outlines the key concepts of software design. It discusses the objectives of software design which include reliability, maintainability, usefulness and timely delivery. It describes the characteristics of software design such as enabling early evaluation, demanding modeling, and facilitating communication. It also covers the major elements of the software design process including goals, constraints, alternatives, representations and solutions. Finally, it discusses different levels of software design and considerations for software design.
Download as PPT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
54 views
Software Design Basic Concepts (Year 3 Semester 1) : University of Mines and Technology, Tarkwa Umat
This document outlines the key concepts of software design. It discusses the objectives of software design which include reliability, maintainability, usefulness and timely delivery. It describes the characteristics of software design such as enabling early evaluation, demanding modeling, and facilitating communication. It also covers the major elements of the software design process including goals, constraints, alternatives, representations and solutions. Finally, it discusses different levels of software design and considerations for software design.
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 17
SOFTWARE DESIGN BASIC
CONCEPTS
LECTURE 3
(YEAR 3 SEMESTER 1)
UNIVERSITY OF MINES AND TECHNOLOGY, TARKWA UMaT
LECTURE OBJECTIVES
Understanding the significance of
software design process Knowing the characteristics of software design Knowing the various elements of software design and basic software concepts
UNIVERSITY OF MINES AND TECHNOLOGY, TARKWA UMaT
SOFTWARE DESIGN Software design - Software design is a process to transform user requirements into some more suitable form, which helps the programmer/designer in the actual software coding and implementation. It is a process of planning a solution for a software problem. The relevance of the practice of Software Design can be explained by the ever-increasing complexity of software systems. Because of such complexity, the risk of building a system that will not meet its goals is indeed too high. The process of Software design involves deciding which components to use, which functions they COMPONENTS OF SOFTWARE DESIGN
OBJECTIVES OF SOFTWARE DESIGN
High reliability and quality, leading to greater user end satisfaction Maintainability and modifiability of code leading to lower overall costs End user service Usefulness and ease of use Timely delivery of software CHARACTERISTICS OF SOFTWARE DESIGN Design enables early evaluation Ensures the stakeholders of the development of the right program, because it describes and delivers several aspects of the final software. No organization wants to commit resources to developing software that solves the wrong problem. Design demands modeling. When modeling, the designer focuses on the domain problem. This enables the designer to distinguish the problem's essential complexity from the accidental one. Design involves planning. Planning helps in estimating detailed costs, e.g., time to be spent on overall development, how many implementers will be necessary for a specific module, should a module built in-house or outsourced, etc. Design facilitates communication. Contains knowledge from the system that can be recorded, transmitted, and discussed. It can act as a communication vehicle. To support a SOFTWARE DESIGN While the design process occurs, it is possible that the client might; Change his mind about the core problem at hand Describe his problem incorrectly Consider that the problem itself changed, or have been solved, during the design process. All these three possibilities must be kept in mind because they may lead the designer to fail on achieving the client's objectives and eventually to waste time and money. Although a software design must be correct, its processes may not be followed during the implementation stage. We must therefore be aware that wrong implementation of a design can lead to wrong software just like a wrong design would. ELEMENTS OF SOFTWARE DESIGN PROCESS
Software design process is the process of choosing a
representation of a solution from a set of alternatives, given the constraints towards a set of goals. It can be divided in two phases: diversification and convergence. The diversification is the phase of generating alternatives. Not necessarily documents describing a possible solution, but, at least, on the designer's mind. During the convergence phase, the designer chooses the alternative (or the combination of alternatives) that meets the intended goals. 5 major elements are involved in the design process namely; Goals, Constraints, Alternatives, Representations, and Solution. These elements together define a mental framework that helps to understand the 5 MAJOR ELEMENTS GOALS The design process is undertaken to solve a clients need. It starts with a need to be specified and goals are outlined to achieve the goals through the design process. Goals are also referred to as requirements, therefore functional and non-functional. A functional requirement specifies the functionality that a system will exhibit. A non-functional requirement specifies properties or characteristics that a software system must exhibit other than the observable behavior.
CONSTRAINTS - Constraints are the rules or limitations
through which design is conceived and created. These limitations can be self-imposed, conceptual necessities, client directives, cost influenced, etc ALTERNATIVES A design alternative is a possibility of solution. Since design problems often have multiple solutions, the 5 MAJOR ELEMENTS Representations This represents the communication commitments between the stakeholders on a software project. A design representation allows communication because it turns alternatives into product representations which can be manipulated, described, analyzed, and discussed.
Solutions - A design solution is nothing more
than a description enabling system construction that uses one or many representations in order to expose sufficient details. Design solutions mirror the problem complexity, usually having many LEVELS OF SOFTWARE DESIGN According to the Guide to Software Engineering Body of Knowledge (SWEBOK), software design consists of two activities: top-level design or system design and Detailed design or logic design. Software Architectural Design (sometimes called top-level design): concerned on describing the fundamental organization of the system, identifying its various components and their relationships to each other and the environment in order to meet the system's quality goals. Software detailed design: describes each component sufficiently to allow for its construction according to the top-level design. Detailed design describes the specific behavior of these components. SOFTWARE DESIGN Enabling techniques - are guidelines, approaches, and key notions that are known to result on generally good and sound software designs.
Design Concepts Serves as a platform from which more
sophisticated methods can be applied. A set of fundamental design concepts has evolved. They are:
Abstraction Providing only the essential information
needed to the outside world and hiding the background details. E.g. POS
Refinement The process of breaking down/elaborating
programming language statements into more detailed SOFTWARE DESIGN Modularity Stepwise decomposition/division of the entire software architecture into smaller components, units or modules.
Some benefits of modularization are as follows:
Promotes understanding, since each module can be grasped at a time, It eases development, since each module can be designed, implemented, and tested separately, Software Architecture - Refers to the overall structure of the software with respects to achieving set goals (i.e. in terms of performance, quality, schedule, cost, etc.). Control Hierarchy - A program structure that represent the organization of program components and implies a SOFTWARE DESIGN 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 program structure. Data Structure Represents the logical relationship among individual elements of data. Software Procedure Emphasis is placed on the individual processing of each module. Information Hiding/Encapsulation - Modules should be specified and designed so that information contained within a module is inaccessible to other modules that have no need for such information. Information hiding involves concealing the details of a [system entity's] DESIGN CONSIDERATION Many aspects are to be considered in software design. Each aspect must reflect the goals of the software. Compatibility - The software is able to operate with other products that are designed for interoperability with another product. Extensibility - New capabilities/features can be added to the software without any major changes. Fault-tolerance - The software is resistant to and able to recover from component failure. Maintainability - The software can be restored to a specified condition within a specified period of time. For example, antivirus software may include the ability to periodically receive virus definition updates in order to maintain the software's effectiveness. DESIGN CONSIDERATION Modularity - Stepwise decomposition/division of the entire software architecture into smaller components, units or modules. The components could be then implemented and tested in isolation before integrated to form a desired software system. Packaging/Branding - Printed material such as the box and manuals should match the style designated for the target market and should enhance usability. All compatibility information should be visible on the outside of the package. Reliability - The software is able to perform a required function under stated conditions for a DESIGN CONSIDERATION Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. Usability - The software must be user friendly for its target user/audience. Reusability - The software is able to add further features and modification with slight or no modification. Security - The software is able to withstand internal and external shocks, hostile acts and influences. END OF LECTURE 3