Design - Architecture CS-300 Fall 2005 Supreeth Venkataraman.

Slides:



Advertisements
Similar presentations
Design Validation CSCI 5801: Software Engineering.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Describing Process Specifications and Structured Decisions Systems Analysis and Design, 7e Kendall & Kendall 9 © 2008 Pearson Prentice Hall.
Design Concepts and Principles
1 Software Design Introduction  The chapter will address the following questions:  How do you factor a program into manageable program modules that can.
Principles of Software Development CS-300 Fall 2005 Supreeth Venkataraman.
What is Software Design?  Introduction  Software design consists of two components, modular design and packaging.  Modular design is the decomposition.
Software Design Deriving a solution which satisfies software requirements.
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.
Chapter 2: Algorithm Discovery and Design
Chapter 7 Using Data Flow Diagrams
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Jump to first page 1 System Design (Finalizing Design Specifications) Chapter 3d.
Chapter 1 Program Design
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2: Algorithm Discovery and Design
Chapter 2: Algorithm Discovery and Design
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall 1.1.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Simple Program Design Third Edition A Step-by-Step Approach
สาขาวิชาเทคโนโลยี สารสนเทศ คณะเทคโนโลยีสารสนเทศ และการสื่อสาร.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
CSE 303 – Software Design and Architecture
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science, C++ Version, Third Edition.
Invitation to Computer Science, Java Version, Second Edition.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Chapter 3 Developing an algorithm. Objectives To introduce methods of analysing a problem and developing a solution To develop simple algorithms using.
Software Design Deriving a solution which satisfies software requirements.
SE: CHAPTER 7 Writing The Program
Developing an Algorithm
Cohesion and Coupling CS 4311
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
Problem Solving using the Science of Computing MSE 2400 EaLiCaRA Spring 2015 Dr. Tom Way.
Programming Logic and Design Using Methods. 2 Objectives Review how to use a simple method with local variables and constants Create a method that requires.
Introduction to Software Development. Systems Life Cycle Analysis  Collect and examine data  Analyze current system and data flow Design  Plan your.
Design Concepts By Deepika Chaudhary.
A Use Case Primer 1. The Benefits of Use Cases  Compared to traditional methods, use cases are easy to write and to read.  Use cases force the developers.
1 CMPT 275 High Level Design Phase Modularization.
The Software Development Process
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Software Design Chapter 11. Purposes of Design Design transforms the specification into a design. The end purpose of the design is to produce detail and.
Lecture VIII: Software Architecture
Chapter 2: Algorithm Discovery and Design Invitation to Computer Science.
Chapter 9: Coupling & Cohesion Omar Meqdadi SE 273 Lecture 9 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Program Design. Simple Program Design, Fourth Edition Chapter 1 2 Objectives In this chapter you will be able to: Describe the steps in the program development.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
 System Requirement Specification and System Planning.
Unit - 3 OBJECT ORIENTED DESIGN PROCESS AND AXIOMS
Algorithms and Problem Solving
Coupling and Cohesion 1.
Software Design Mr. Manoj Kumar Kar.
Part 3 Design What does design mean in different fields?
Lecture 2 Introduction to Programming
Designing and Debugging Batch and Interactive COBOL Programs
Objective of This Course
Software life cycle models
Baisc Of Software Testing
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Algorithms and Problem Solving
Presentation transcript:

Design - Architecture CS-300 Fall 2005 Supreeth Venkataraman

CS-300 Fall 2005 Supreeth Venkataraman 2 Outline Introduction From Requirements to Design Iterative Enhancement Stepwise Refinement The Design and the Test Plan The Design Process Architectural Design

CS-300 Fall 2005 Supreeth Venkataraman 3 Introduction Design is the process of turning the requirements into a form ready to be implemented Technical expertise of developers come to the fore Primary creative activity in software development “How” are we going to solve the problem

CS-300 Fall 2005 Supreeth Venkataraman 4 Introduction Design IS problem solving The requirements phase helps analyze the problem The design phase is when a solution is developed for the problem Coding is merely the implementation of this solution. Designers must be well versed in “what” the problem is and also in “how” to solve that problem Designers begin by visualizing the architecture of the system Some requirements constrain design. If high speed searches are required, a linked list is not a viable data structure. Hash tables might be used instead

CS-300 Fall 2005 Supreeth Venkataraman 5 From Requirements to Design Design is written by engineers for engineers From requirements to design Become intimately familiar with each requirement Derive functions that must be provided for the system to work Decide upon data structures Identify algorithms needed

CS-300 Fall 2005 Supreeth Venkataraman 6 Identify Functionalities Common, needed functions This is the set of functions that will be implemented Any statement in the requirements that begins with “the software will…” or “the software must” is very likely a function that needs to be implemented Or for that matter, use-cases lend themselves to function identification

CS-300 Fall 2005 Supreeth Venkataraman 7 Identify data structures Major data structures Examination of the requirements leads to data structure decisions Permanent data structures More thought and care Temporary data structures Sometimes data structure decisions can be forced because the system may get inputs from another system

CS-300 Fall 2005 Supreeth Venkataraman 8 Update test plan Adding to the test plan in design As design decisions are made, ideas about testing them come up Record these ideas immediately When modules are specified and designed, ideas about testing arise too These are unit tests (verify that the modules do what they are supposed to) In the design phase, system level functional tests can be refined We know how to implement the system. Embellish the initial test plan with this information. Eg: The SSN will be stored in a buffer occupying a maximum of 11 characters. Suitable test cases would be to Check with 11 and 13 character strings Hyphen positions etc

CS-300 Fall 2005 Supreeth Venkataraman 9 At a bare minimum, Decomposition into intellectually controllable subproblems Further decompose into modules “Specify” the modules (what does this module do?) Decide how to implement the modules Intellectual control Decomposes programming parts uniquely in the ideal case

CS-300 Fall 2005 Supreeth Venkataraman 10 Problems of Design All the problems associated with system requirements Requirements can change The urge to code first, and then design Knowing when to stop.

CS-300 Fall 2005 Supreeth Venkataraman 11 Iterative Enhancement Identify the core problem and work with it i.e what is the essence of the problem? Eg: What is the core of E-LIB? Design and implement the repository mechanism and build everything else around this First iteration will have a repository capable of storing user data, files etc. In the second iteration, we design and add update and retrieve capabilities, and integrate it with the repository And so on… Iteratively enhance the functionalities

CS-300 Fall 2005 Supreeth Venkataraman 12 Iterative Enhancement Iterative enhancement is a good design technique, but problems exist If we get the core wrong (bad design) what happens? It might be after enhancing the core that problems come to light Might need to change both the enhancements as well as the core Mistakes will be more and more expensive to correct as we progress (sound familiar?)

CS-300 Fall 2005 Supreeth Venkataraman 13 Stepwise Refinement This is essentially decomposition into a hierarchy Start at the top where you have the entire system that has to be solved Break this system into a small group of subsystems that will solve the system Select each subsystem and further break down into components until each component is simple enough to be solved on its own. The leaves of the hierarchy are essentially modules.

CS-300 Fall 2005 Supreeth Venkataraman 14 Stepwise Refinement When the level of detail is fine enough, functional specifications must be written for each component These must specify the interfaces and communication data structures. Test cases must be recorded for each component Global data structure decisions can be made in the beginning itself What is the global data structure for E-LIB in concept?

CS-300 Fall 2005 Supreeth Venkataraman 15 The Design Process

CS-300 Fall 2005 Supreeth Venkataraman 16 Architectural Design The main purpose of this step is to transform the requirements into a high-level architecture. All requirements must be allocated to subsystems and modules. Defines an approach for implementation Serves to lay down the foundation for detailed design. Architectural design effectively is a high-level solution that is further refined in detailed design.

CS-300 Fall 2005 Supreeth Venkataraman 17 Architectural Design Architectural design involves Breaking down the system into subsystems Deciding on communication details Deciding an interface for each subsystem Deciding global data structures Handling exceptional situations Traceability is maintained to the requirements (traceability mappings/matrices) “Architecture diagrams and the traceability mappings are the blueprints of the system”

CS-300 Fall 2005 Supreeth Venkataraman 18 Decomposition Breaking down the system into components Identify all major subsystems Decompose the system into subsystems Identify further subsystems and decompose Decompose till all modules have been identified. Many, many ways of decomposing systems

CS-300 Fall 2005 Supreeth Venkataraman 19 Rules for decomposition Subsystems should be independent of each other Connectivity should be at a minimum between subsystems Clearly define the subsystems that handle errors.

CS-300 Fall 2005 Supreeth Venkataraman 20 Example – A simple calculator We wish to design a simple calculator 1. The calculator must be capable of accepting user input 2. The calculator must be able to compute simple arithmetic. 3. The calculator must perform 3a. Addition 3b. Subtraction 3c. Multiplication 3d. Division 4. The calculator must validate all inputs before operation and will work on integers. 5. A simple error message will be displayed by the validating unit if the inputs are erroneous 6. The calculator must be able to display computed results to the user

CS-300 Fall 2005 Supreeth Venkataraman 21 Functional Decomposition Calculator InputProcessOutput AcceptValidateAddSubtractMultiplyDivideDisplay

CS-300 Fall 2005 Supreeth Venkataraman 22 Functional Decomposition What about functional decomposition? Hierarchical Much more presentable Abstract off communication details Intellectual control can be achieved We may not know when to stop Additional documentation for communication details (at least, more than the temporal version)

CS-300 Fall 2005 Supreeth Venkataraman 23 Temporal Decomposition Input AcceptValidate Process AddSubtractMultiplyDivide Output Display

CS-300 Fall 2005 Supreeth Venkataraman 24 Temporal Decomposition What is the advantage of using temporal decomposition? Communication details can be embedded in the architecture Easy to model architecture into pseudocode Disadvantage is that the architectural diagram could easily get messy. Hard to achieve intellectual control What lends itself directly to temporal decomposition? Sequences of use-cases

CS-300 Fall 2005 Supreeth Venkataraman 25 Alternatives The very fact that design can be approached in many ways suggests alternatives Usually architecture styles are chosen based on the type of application, but styles can be imposed on the process as well. It is wise to investigate many architectural alternatives and choose the best one. Might turn out to be more costly…

CS-300 Fall 2005 Supreeth Venkataraman 26 Hey, what about traceability? The architecture diagram is an abstract view of the system Useful for visualization The traceability mappings are derived separately. What is the traceability mapping for the block labeled “calculator” ?

CS-300 Fall 2005 Supreeth Venkataraman 27 Traceability Matrices Traceability matrices map subsystems and modules back to the requirements document. Traceability matrices are vital to keep the design orderly. 3a Addition They can be organized by either requirements or subsystems “Assign each requirement to as few subsystems as possible. Difficult requirements can be decomposed into multiple requirements that can then be assigned to only a few subsystems.”

CS-300 Fall 2005 Supreeth Venkataraman 28 Communications We need to decide how the subsystems will communicate The medium of communications is through unique interfaces for each subsystem. How do we determine which subsystems need to communicate? The traceability matrix comes in very handy here.

CS-300 Fall 2005 Supreeth Venkataraman 29 Traceability matrix for calculator (High-Level) [1]Input [2]Input, Process [3]Input, Process [3a]Input, add … [4] Input [5]Input, Output [6]Output

CS-300 Fall 2005 Supreeth Venkataraman 30 Questions Is there any data the process subsystem needs from the input subsystem? Is there any data the output subsystem needs from the input subsystem? Is there any data the output subsystem needs from the process subsystem? Is there any data the input subsystem needs from the process and output subsystems? Is there any data the process subsystem needs from the output subsystem?

CS-300 Fall 2005 Supreeth Venkataraman 31 Which subsystems must communicate? Input – process ? Input – output ? Process – input ? Process – output ? Output – input ? Output – process ?

CS-300 Fall 2005 Supreeth Venkataraman 32 Hmmm … there are more subsystems The input subsystem is made up of Accept Validate The process subsystem is made up of Add Subtract Multiply Divide The output subsystem is made up of Display We need to know which part of the subsystem to call!!

CS-300 Fall 2005 Supreeth Venkataraman 33 Traceability Matrix (Detailed) [1]Accept, Validate [2]Accept, Validate, add/sub/mul/div [3]Accept, Validate, add/sub/mul/div [3a] Accept, Validate, Addition [3b]Accept, Validate, Subtraction [3c]Accept, Validate, Multiply [3d]Accept, Validate, Divide [4]Accept, Validate [5]Accept, Validate, Display [6]Accept, Validate, add/sub/mul/div, display

CS-300 Fall 2005 Supreeth Venkataraman 34 How do we get the subsystems talking to each other? Specify an interface for each module and subsystem What data does the “add” module require, and from which module? What type of data is needed? Specify the interface The interface to the “add” module must have the capability to accept two integers. What other questions do we need to ask? What about the environment?

CS-300 Fall 2005 Supreeth Venkataraman 35 Interfaces External Interfaces Interfaces to user Interfaces to operating system Interfaces to hardware etc. Internal Interfaces Interfaces to subsystems that are part of the system Eg: The “borrow” subsystem calls the repository

CS-300 Fall 2005 Supreeth Venkataraman 36 Environment It is vital that the environment in which the product will operate be identified early and should be considered during design. Software to read temperature sensors Assume that lowest temperature that can be read in Florida is - 10 F, and is hardcoded in the design. Then somehow, the software is hooked up with sensors in Antarctica. No matter how low the temperature is, the software might happily display -10F What if the temperature outside was -150 F, and a rescue team was to be dispatched if the temperature fell below -100 F? Never assume the environment. What happened to the “Galloping Gertie?”

CS-300 Fall 2005 Supreeth Venkataraman 37 Cohesion and Coupling Coupling and cohesion describe the interaction between subsystems and within subsystems. They give us a way to classify modules and subsystems based on their interactions. In the ideal situation we want to achieve high cohesion and low coupling. Let us now see what these terms mean exactly.

CS-300 Fall 2005 Supreeth Venkataraman 38 Cohesion Cohesion is a measure of the amount of interactions within a module. Does every component within the module work towards the achievement of a common goal? Ideally every component within a module must work towards a common goal What does this mean exactly?

CS-300 Fall 2005 Supreeth Venkataraman 39 Cohesion Let us consider the “Accept” module What is the function of the accept module? Accept integers from the user Accept operators from the user We must strive to ensure that all components within the “accept” module work only towards this purpose. If we can achieve this, then we have high cohesion

CS-300 Fall 2005 Supreeth Venkataraman 40 Cohesion Modules with high cohesion lend themselves naturally to the concept of re-use. All we need to know is the interface of the module. What happens if the module’s components work towards different goals? (multiple goals within a module) High cohesion implies simpler interfaces.

CS-300 Fall 2005 Supreeth Venkataraman 41 Coupling Coupling is a measure of interactions amongst modules. Ideally we would like to minimize the amount of interactions between modules. More interactions mean that modules are very much dependent upon each other. Means more complicated interfaces

CS-300 Fall 2005 Supreeth Venkataraman 42 Coupling More interactions also means more communication overheads. Imagine a situation where every module calls every other module. What if something inside one module has to be changed? Does it initiate a change within all other modules? Most likely given the amount of dependency

CS-300 Fall 2005 Supreeth Venkataraman 43 Cohesion and Coupling

CS-300 Fall 2005 Supreeth Venkataraman 44 Cohesion and Coupling

CS-300 Fall 2005 Supreeth Venkataraman 45 Cohesion and Coupling High cohesion and weak coupling help build modules that can be Designed independently Coded independently Tested independently Integrated with few integration errors Re-used All we need to know about is the interface to the modules.

CS-300 Fall 2005 Supreeth Venkataraman 46 Cohesion and Coupling Cohesion and coupling are essentially opposites High cohesion automatically implies low coupling and vice versa How to achieve low coupling? Minimize shared common data between modules Minimize the number of parameters Ensure that change in one module does not lead to cascading changes in the modules it communicates with.

CS-300 Fall 2005 Supreeth Venkataraman 47 Make global data structure decisions During architectural design, it is common to make decisions about global data structures Global data structures usually define the back- end of applications These data structures are usually permanent, and retain state information even after the program has terminated. So what global data structure decisions would you make for E-LIB?

CS-300 Fall 2005 Supreeth Venkataraman 48 Make decisions about algorithms This entire process we’ve been through is itself a big algorithm on its own We might need to identify specialized algorithms to be used by certain modules. For example, module A might sort a set of integers, and the decision on what sorting algorithm needs to be used has to be made in architectural design. Decisions about algorithms for modules are a task for detailed design

CS-300 Fall 2005 Supreeth Venkataraman 49 Detailed Design – A sneak peek Detailed design involves Specifying each module with a functional description Making decisions about variables, data types Representing each module in a form that can be easily implemented. We will see detailed design in great detail in the next class