Lecture 6: Software Design (Part I)

Slides:



Advertisements
Similar presentations
Final and Abstract Classes
Advertisements

© 2005 by Prentice Hall Appendix 3 Object-Oriented Analysis and Design Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Copyright © 2002 Pearson Education, Inc. Slide 1.
Chapter 7 System Models.
Requirements Engineering Process
Chapter 6 Structures and Classes. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 6-2 Learning Objectives Structures Structure types Structures.
18 Copyright © 2005, Oracle. All rights reserved. Distributing Modular Applications: Introduction to Web Services.
Modern Systems Analyst and as a Project Manager
1 9 Moving to Design Lecture Analysis Objectives to Design Objectives Figure 9-2.
Communicating over the Network
Chapter 7 – Design and Implementation
Week 2 The Object-Oriented Approach to Requirements
Lilian Blot Announcements Teaching Evaluation Form week 9 practical session Formative Assessment week 10 during usual practical sessions group 1 Friday.
Object-Oriented Software Engineering Visual OO Analysis and Design
The Modular Structure of Complex Systems Team 3 Nupur Choudhary Aparna Nanjappa Mark Zeits.
By Waqas Over the many years the people have studied software-development approaches to figure out which approaches are quickest, cheapest, most.
1 UML ++ Mohamed T IBRAHIM University of Greenwich -UK.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 28 Slide 1 Process Improvement 1.
Lecture 1: Software Engineering: Introduction
Lecture 3: Software Process Models Dr Valentina Plekhanova University of Sunderland, UK
Problem Solving and Algorithm Design
Lecture plan Outline of DB design process Entity-relationship model
Lecture 8: Testing, Verification and Validation
Lecture 7: Software Design (Part II)
Lecture 5: Requirements Engineering
Software Design Fundamentals
Science as a Process Chapter 1 Section 2.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Executional Architecture
Global Analysis and Distributed Systems Software Architecture Lecture # 5-6.
25 seconds left…...
Copyright © 2003 by Prentice Hall Computers: Tools for an Information Age Chapter 15 Programming and Languages: Telling the Computer What to Do.
Chapter 10: The Traditional Approach to Design
Systems Analysis and Design in a Changing World, Fifth Edition
We will resume in: 25 Minutes.
Chapter 11 Component-Level Design
Modeling Main issues: What do we want to build How do we write this down.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Design Concepts and Principles
Information Systems Analysis and Design
A Brief Introduction to Software Design and Design Quality By Laura Leventhal.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
CSE 303 – Software Design and Architecture
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
UHD::3320::CH121 DESIGN PHASE Chapter 12. UHD::3320::CH122 Design Phase Two Aspects –Actions which operate on data –Data on which actions operate Two.
Design Concepts By Deepika Chaudhary.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Computing and SE II Chapter 9: Design Methods and Design Models Er-Yu Ding Software Institute, NJU.
SOFTWARE DESIGN. INTRODUCTION There are 3 distinct types of activities in design 1.External design 2.Architectural design 3.Detailed design Architectural.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Design CS 470 – Software Engineering I Sheldon X. Liang, PH.D.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Basic Characteristics of Object-Oriented Systems
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Further Modularization, Cohesion, and Coupling. Simple Program Design, Fourth Edition Chapter 9 2 Objectives In this chapter you will be able to: Further.
Software Design.
Algorithms and Problem Solving
Lecture 9- Design Concepts and Principles
Software Design Mr. Manoj Kumar Kar.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Lecture 9- Design Concepts and Principles
Algorithms and Problem Solving
John D. McGregor Module 6 Session 1 More Design
Presentation transcript:

Lecture 6: Software Design (Part I) Dr Valentina Plekhanova University of Sunderland, UK http://www.cet.sunderland.ac.uk/~cs0vpl/SE-Com185.htm

Design Process: Definition The next step after requirements analysis and specification is software design. “Design is the creative process of transforming the problem into a solution; the description of a solution is also called design.” [Pfleeger, 1998] Design is a process of constructing preliminary models for producing an expected product/software/program. Design process defines several models of the systems at different levels of abstraction. Lecture 6 Valentina Plekhanova

Principles of Software Design: Abstraction and Decomposition Abstraction is an expression that shows the most important information of the program without telling its implementation details. Decomposition is a way to divide a big task into small tasks, and to develop details of an abstraction. The benefit of decomposition is to reduce the complexity of programs. Lecture 6 Valentina Plekhanova

Principles of Software Design: Decomposition and Modularity Every design method involves some kind of decomposition: starting with a high level depiction of the system’s key elements and creating lower level looks at how the system’s features and functions will fit together [Pfleeger, 1998]. Modularity is a property that a program consists of many independent modules. A module is a modest-sized component that performs independently specific functions. Lecture 6 Valentina Plekhanova

Principles of Software Design: Encapsulation & Information Hiding Encapsulation is the grouping of related ideas into one unit, which can thereafter be referred to by a single name. Information hiding is the use of encapsulation to restrict from external visibility certain information or implementation decisions that are internal to the encapsulation structure. Lecture 6 Valentina Plekhanova

Design Levels & Design Methods Design -> Abstract Design & Detailed Design Abstract Design: different methods can be used, e.g. top down design, modular design, structured design, etc. Detailed Design, e.g. high level design, low level design. Lecture 6 Valentina Plekhanova

Conceptual Design & Technical Design This stage is concerned with planning how to build the software itself. Conceptual design tells the customer exactly what the system will do (i.e. What? – conceptual design concentrates on the system’s functions). Technical design allows system builders to understand the actual hardware and software needed to solve the customers’ problem (i.e. How? – technical design describes the form the system will take) [Pfleeger, 1998] Lecture 6 Valentina Plekhanova

Architecture Architecture associates the system capabilities identified in the requirements specification with the system components that will implement them. Components are usually modules, and the architecture also describes the interconnections among them. Lecture 6 Valentina Plekhanova

Cohesion Cohesion is an internal property of a module - level of relationships between elements of the module. We say that a module has high cohesion if all of its elements (e.g. procedures, statements) are related strongly in a logical way. They cooperate to achieve a common goal, which is the function of the module. Lecture 6 Valentina Plekhanova

Coupling Coupling characterises interrelationship among modules in a software, i.e. represents a module’s relationship to other modules. With low coupling we can analyse, modify, test, and reuse modules separately. Lecture 6 Valentina Plekhanova

Cohesion and Coupling Cohesion and Coupling are used for measurement of independence of elements/modules in a design, i.e. assessment of design quality [Yourdon and Constantine, 1978] The goal of software engineer is to design the modules with high cohesion and low coupling. Lecture 6 Valentina Plekhanova

Design Methods Top down design Bottom up design Modular design Structured design Object oriented design Lecture 6 Valentina Plekhanova

Top-down Design Top-down design supports the abstract and decomposition principle. By this design method, a system is first abstracted as a high level unit (e.g. module, process, procedure, function), and then decomposed into low level units, possibly integrated together using some constructs. Lecture 6 Valentina Plekhanova

Top-down Software Design We begin by considering the problem to be computerised as a whole and identify its major components. For each component we then do the same – identify what its major sub-components are Each of the sub-components can then be broken down into its sub-components and so on, until we reach a level whereby the individual pieces can be understood and designed without any difficulty. Lecture 6 Valentina Plekhanova

Top-down Design This process of top-down design (also called stepwise refinement) is a way to manage complexity. We are able to create user-defined functions and general procedures to carry out subtasks. Lecture 6 Valentina Plekhanova

Top-down Design: Reasons for Use Systemic way of breaking a large system/problem into the smaller manageable parts. Easier to understand the system/problem. Easier to test these smaller parts. Lecture 6 Valentina Plekhanova

Top-down Design: An Example Lecture 6 Valentina Plekhanova

Object-Oriented Design Object-oriented design is a way of designing a program system by focusing on the design of objects and their integration. An object is an encapsulation of attributes and operations (or methods); it takes inputs and performs some functions. In fact, an object is a kind of module. An object-oriented program can be regarded as a network of objects that interact with each other by means of sending and receiving messages (which are similar to calling methods in Java). Lecture 6 Valentina Plekhanova

Design Levels High Level Design Low Level Design Lecture 6 Valentina Plekhanova

High-level Design One way to represent high-level design is to use a hierarchical structure chart where each box on the chart represents a component or subtask of the program. A high-level algorithm may be presented either in pseudocode or with structure charts, and it should be language independent. Lecture 6 Valentina Plekhanova

High Level Design: Structure Chart Lecture 6 Valentina Plekhanova

High Level Design High level design documents such as structure charts show: the overall system design how the program is decomposed into separate modules which modules call which other ones how they communicate via data Lecture 6 Valentina Plekhanova

High Level Design they do not show: the order in which the modules are called the number of times they are called if it’s more than once the condition(s) determining optional/conditional invocation the internal workings of the modules Lecture 6 Valentina Plekhanova

High-level Design High-level program design involves the identification of components of our program - task, subtasks and decisions about how information flows between them. We need to make decisions about the type of data to be used, names for variables and where to declare them (local, form-level, module or global variables), and what type of data structures and external data storage requirements are required. Lecture 6 Valentina Plekhanova

High-level Design At the end of high-level design we will have decided the forms, objects, procedures and functions needed and where code needs to be added to carry out the work of the program. All of these decisions may take several passes through the design process, each time round, adding more detail. It is a process of spiralling down from the requirement level to the code level - though at this stage we do not have to worry about the details of the low-level code for the procedures and functions. Lecture 6 Valentina Plekhanova

High-level Design: Representation We can represent out high-level design decisions by the use of a structure chart which act as a 'picture' of all the software 'parts' making up the program. Additional information can be placed on a structure chart to show the flow of data between the different parts. Lecture 6 Valentina Plekhanova

High-level Design: An Example Project (a,b,e,r, z, x,…) e,r a,b Task 1 (a,b,c,d) Task 2 (e,r,t,y,p) t,y,p c,d Subtask 2.1 (t,y,p,w) Subtask 1.1 Function 2.1.A w Lecture 6 Valentina Plekhanova

Week 8: 24.04.2003-28.04.2003 Project Control Session Tutorial Time: 10 minutes for each Team Students will present project file, particularly Schedule, plus any project documentation. Students will describe where they are in the project and any problems encountered. During the discussion reviewers will ask to see evidence of deliverables for any tasks that are complete to determine whether they have in fact been done. Lecture 6 Valentina Plekhanova