Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

University Of Technology and Applied Sciences Department of Information Technology CSSE4101- Software Design and Testing OUTCOME 1 : UNDERSTAND THE BASIC CONCEPTS OF SOFTWARE DESIGN PROCESS, DESIGN TECHNIQUES, DESIGN QUALITY AND DESIGN PRINCIPLES. Software D...

University Of Technology and Applied Sciences Department of Information Technology CSSE4101- Software Design and Testing OUTCOME 1 : UNDERSTAND THE BASIC CONCEPTS OF SOFTWARE DESIGN PROCESS, DESIGN TECHNIQUES, DESIGN QUALITY AND DESIGN PRINCIPLES. Software Design Basics Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. For assessing user requirements, an SRS (Software Requirement Specification) document is created whereas for coding and implementation, there is a need of more specific and detailed requirements in software terms. The output of this process can directly be used into implementation in programming languages. Software design is the first step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domain. It tries to specify how to fulfill the requirements mentioned in SRS. Software Design Levels Software design yields three levels of results: Architectural Design - The architectural design is the highest abstract version of the system. It identifies the software as a system with many components interacting with each other. At this level, the designers get the idea of proposed solution domain. High-level Design- The high-level design breaks the ‘single entity- multiple component’ concept of architectural design into less-abstracted view of sub-systems and modules and depicts their interaction with each other. High-level design focuses on how the system along with all of its components can be implemented in forms of modules. It recognizes modular structure of each sub-system and their relation and interaction among each other. Cont… Detailed Design- Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs. It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules. Design Process Software design is an iterative process through which requirements are translated into a “blueprint” for constructing the software. Initially, the blueprint/proposal depicts a holistic/complete view of software, i.e. the design is represented at a high-level of abstraction. Software design process can be perceived as series of well-defined steps. Though it varies according to design approach (function oriented or object oriented, yet It may have the following steps involved: Cont.. A solution design is created from requirement or previous used system and/or system sequence diagram. Objects are identified and grouped into classes on behalf of similarity in attribute characteristics. Class hierarchy and relation among them is defined. Application framework is defined. Design Technique Modularization Modularization is a technique to divide a software system into multiple discrete and independent modules, which are expected to be capable of carrying out task(s) independently. These modules may work as basic constructs for the entire software. Designers tend to design modules such that they can be executed and/or compiled separately and independently. Modular design unintentionally follows the rules of ‘divide and conquer’ problem-solving strategy this is because there are many other benefits attached with the modular design of a software. Cont.. Advantage of modularization:  Smaller components are easier to maintain  Program can be divided based on functional aspects  Desired level of abstraction can be brought in the program  Components with high cohesion can be re-used again  Concurrent execution can be made possible  Desired from security aspect Concurrency Back in time, all software are meant to be executed sequentially. By sequential execution we mean that the coded instruction will be executed one after another implying only one portion of program being activated at any given time. Say, a software has multiple modules, then only one of all the modules can be found active at any time of execution. In software design, concurrency is implemented by splitting the software into multiple independent units of execution, like modules and executing them in parallel. Cont… In other words, concurrency provides capability to the software to execute more than one part of code in parallel to each other. It is necessary for the programmers and designers to recognize those modules, which can be made parallel execution. Example The spell check feature in word processor is a module of software, which runs along side the word processor itself. Coupling and Cohesion When a software program is modularized, its tasks are divided into several modules based on some characteristics. As we know, modules are set of instructions put together in order to achieve some tasks. They are though, considered as single entity but may refer to each other to work together. There are measures by which the quality of a design of modules and their interaction among them can be measured. These measures are called coupling and cohesion. Cont.. Cohesion is a measure that defines the degree of intra-dependability within elements of a module. The greater the cohesion, the better is the program design. Coupling is a measure that defines the level of inter-dependability among modules of a program. It tells at what level the modules interfere and interact with each other. The lower the coupling, the better the program. Design Quality Design Verification The output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all functional or non-functional requirements. The next phase, which is the implementation of software, depends on all outputs mentioned above. It is then becomes necessary to verify the output before proceeding to the next phase. The early any mistake is detected, the better it is or it might not be detected until testing of the product. Cont.. If the outputs of design phase are in formal notation form, then their associated tools for verification should be used otherwise a thorough design review can be used for verification and validation. By structured verification approach, reviewers can detect defects that might be caused by overlooking some conditions. A good design review is important for good software design, accuracy and quality. Throughout the design process, the quality of the evolving design is assessed with a series of formal technique reviews or design walkthroughs. Cont.. Three characteristics serve as a guide for the evaluation of a good design:  The design must implement all of the explicit requirements contained in the analysis model, and it must accommodate all of the implicit requirements desired by the customer.  The design must be a readable, understandable guide for those who generate code and for those who test and subsequently support the software.  The design should provide a complete picture of the software, addressing the data, functional, and behavioral domains from an implementation perspective. Quality Guidelines In order to evaluate the quality of a design representation, we must establish technical criteria for good design. 1. A design should exhibit an architecture that: i. Has been created using recognizable architectural styles or patterns, ii. Is composed of components that exhibit good design characteristics, and iii. Can be implemented in an evolutionary fashion  For smaller systems, design can sometimes be developed linearly. 2. A design should be modular; that is, the software should be logically partitioned into elements or subsystems 3. A design should contain distinct representations of data, architecture, interfaces, and components. Cont.. 4. A design should lead to data structures that are appropriate for the classes to be implemented and are drawn from recognizable data patterns. 5. A design should lead to components that exhibit independent functional characteristics. 6. A design should lead to interfaces that reduce the complexity of connections between components and with the external environment. 7. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis. 8. A design should be represented using a notation that effectively communicates its meaning. Quality Attributes Hewlett-Packard developed a set of software quality attributes that has been given the acronym FURPS. The FURPS quality attributes represent a target for all software design: Functionality: is assessed by evaluating the features set and capabilities of the program, the generality of the functions that are delivered, and the security of the overall system. Usability: is assessed by considering human factors, overall design, consistency, and documentation. Reliability: is evaluated by measuring the frequency and severity of failure, the accuracy of output results, the mean-time-to-failure, the ability to recover from failure, and the predictability of the program. Cont.. Performance: is measured by processing speed, response time, resource consumption, throughput(Throughput refers to how much data can be transferred from one location to another in a given amount of time ), and efficiency. Supportability: combines the ability to extend the program extensibility, adaptability, serviceability  maintainability. In addition, testability, compatibility, configurability, etc. Design Principles: Basic Rules of Software Design 1. Principle of Modular Designs 2. Principle of Portable Designs 3. Principle of Malleable Design 4. Principle of Conceptual Integrity 5. Principle of Intellectual Control 6. Principle of Visualisation Design Principles Modularity can be achieved by: ◦ dividing large aggregates of components into units having loose inter- unit coupling and high internal cohesion ◦ by abstracting each unit’ s behavior so that its collective purpose can be known ◦ by recording each unit’s interface so that it can be employed, and by hiding its design so that it can be changed. ◦ Abstract == GIVING less details/ main details only Design Principles  Principle of portable designs: Portability can be achieved by employing abstract context interfaces.  Principle of malleable designs: Malleability can be achieved with designs that model the end-user’s view of the external environment.  Principle of conceptual integrity: conceptual integrity can be achieved by uniform application of a limited number of design forms. Design Principles  Principle of intellectual control: Intellectual control can be achieved by recording designs (after developing a design strategy) as hierarchies of increasingly detailed abstractions.  Visibility can be achieved (or partially achieved) by: representing designs in visual notations such as diagrams, pictures and figures, etc. to express the characteristics of the behavior of system components and the relationships between the components. REFERENCES Mohapatra, P.K.J. (2010). Software Engineering. Retrieved from http://ebookcentral.proquest.com, pp.231 – 236. Otero, C. (2012). Software engineering design : Theory and practice. Retrieved from https://ebookcentral.proquest.com, pp. 1- 16. Zhu, H. (2005). Software design methodology : From principles to architectural styles. Retrieved from https://ebookcentral.proquest.com, pp. 1-54. https://ieeecs-media.computer.org/media/education/swebok/swebok-v3.pdf https://www.tutorialspoint.com/software_engineering/software_design_basics.htm https://eds.a.ebscohost.com/eds/ebookviewer/ebook/ZTAwMHh3d19fMTY2MjE3X19BTg 2?sid=7a0e19e0-13d4-45ae-af81-64dda9b552e7@sdc-v-sessmgr03&vid=0&format=E B&rid=1

Use Quizgecko on...
Browser
Browser