Putting together a complete system Chapter 10. Overview  Design a modest but complete system  A collection of objects work together to solve a problem.

Slides:



Advertisements
Similar presentations
Chapter 18 Building the user interface. This chapter discusses n Javas graphical user interface. n Swing: an enhancement of a library called the Abstract.
Advertisements

Testing Relational Database
1 Software Testing and Quality Assurance Lecture 13 - Planning for Testing (Chapter 3, A Practical Guide to Testing Object- Oriented Software)
1 Information Systems Development (ISD) Systems Development Life Cycle Overview of Analysis Phase Overview of Design Phase CP2236: Information Systems.
What is Software Design?. Systems Development Life- Cycle Planning Analysis Design Implementation Design.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Chapter 2 – Software Processes
Alternate Software Development Methodologies
OOP Design Patterns Chapters Design Patterns The main idea behind design patterns is to extract the high level interactions between objects and.
Use Case Diagram © copyright 2001 SNU OOPSLA Lab..
Practical Object-Oriented Design with UML 2e Slide 1/1 ©The McGraw-Hill Companies, 2004 PRACTICAL OBJECT-ORIENTED DESIGN WITH UML 2e Chapter 5: Restaurant.
Unit 231 Software Engineering Introduction to SWE What is SDLC Phases of SDLC.
Chapter 14 Requirements and Specifications. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Software Engineering The implementation.
Graphical User Interface (GUI) Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Graphical User Interface (GUI) Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
© Copyright Eliyahu Brutman Programming Techniques Course.
Chapter 1 Program Design
Introduction to Software Testing
Software System Integration
TIBCO Designer TIBCO BusinessWorks is a scalable, extensible, and easy to use integration platform that allows you to develop, deploy, and run integration.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Java Programs COMP 102 #3.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
An Introduction to Software Architecture
Understand Application Lifecycle Management
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
Programming in Java Unit 3. Learning outcome:  LO2:Be able to design Java solutions  LO3:Be able to implement Java solutions Assessment criteria: 
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Lecture 3 Software Engineering Models (Cont.)
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Introduction to Software Development. Systems Life Cycle Analysis  Collect and examine data  Analyze current system and data flow Design  Plan your.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
The Static Analysis Model Class Diagrams Prof. Hany H. Ammar, CSEE, WVU, and Dept. of Computer Science, Faculty of Computers and Information, Cairo University.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
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.
An Introduction to Programming and Object Oriented Design using Java 3 rd Edition. Dec 2007 Jaime Niño Frederick Hosch Chapter 18 Integrating user interface.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Chapter 9 Putting together a complete system. This chapter discusses n Designing a complete system. n Overview of the design and implementation process.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
An Introduction to Programming and Object Oriented Design using Java 2 nd Edition. May 2004 Jaime Niño Frederick Hosch Chapter 8: Putting a System Together.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Fusion Design Overview Object Interaction Graph Visibility Graph Class Descriptions Inheritance Graphs Fusion: Design The overall goal of Design is to.
CMSC 2021 Software Development. CMSC 2022 Software Development Life Cycle Five phases: –Analysis –Design –Implementation –Testing –Maintenance.
CSCI 383 Object-Oriented Programming & Design Lecture 7 Martin van Bommel.
Barron’s chapter 5 Software development life cycle.
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.
 Problem Analysis  Coding  Debugging  Testing.
ICS 3UI - Introduction to Computer Science
System.
Security SIG in MTS 05th November 2013 DEG/MTS RISK-BASED SECURITY TESTING Fraunhofer FOKUS.
Introduction to Design Patterns
The Object-Oriented Thought Process Chapter 09
The Systems Engineering Context
SDLC Model A framework that describes the activities performed at each stage of a software development project.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Software System Integration
Software life cycle models
Patterns.
An Introduction to Software Architecture
Baisc Of Software Testing
CHAPTER 9 (part a) BASIC INFORMATION SYSTEMS CONCEPTS
Software System Integration
Presentation transcript:

Putting together a complete system Chapter 10

Overview  Design a modest but complete system  A collection of objects work together to solve a problem  Overview over design and implementation process  See how the different steps of this process work  Case study: Simple Nim game  An Example as simple as practicable

Software Life Cycle: Overview  Problem Analysis  System Design  Implementation  Testing  Maintenance

Software Life Cycle: Overview (cont.)  Process is Iterative Incremental Compositional

Software Life Cycle  Problem Analysis  System Specification Document or Functional Specification Document  precisely describes what the system is intended to do (not how)  contract between customer and developer  Description of the product to be delivered  Initial version: incomplete and inconsistent  Requirements are not stable  Hitting a moving target  Several versions needed  Version control

Software Life Cycle (cont.)  System Design Phase  System Design Document  Design a collection of objects (classes) and their interactions  System Implementation Phase  Software Documentation  Constructing the software modules (classes)  Use Programming Languages and other development tools  Actual "Coding" or "Programming"  Test Phase  Test plans & performing the tests

Software Life Cycle (cont.) Features of this process:  Iterative & Incremental  Tests uncover errors which must be corrected  Design changes influence all other documents  Again: Version Control  Compositional  Compose a whole by simpler parts  Apply this cycle to the parts separately  System Maintenance  During the whole lifetime of the system

Fundamental Subsystems  Most Software Systems consist of the following fundamental subsystems: User Interface gets course preferences displays schedules Model represents students, etc. checks prerequisites adds/modifies students, etc. Data Management maintains external data, e.g., transcripts Example: Student Registration System  external interface, user interface  model  data management

Case Study: Simple Nim Game  Two players  Pile of Sticks  In one play a player can  remove one stick OR  remove two sticks OR  remove three sticks  The player who removes the last stick loses.  The user can play several games and choose the number of sticks to start with

Steps of the Design Process of Nim Game Example  System Functionality  Preliminary Design  Basic Subsystems  Identifying Objects  Determining responsibilities  Relations between Objects  Integrating User Interface and Model  Object Specification  Implementation  Top Level  Model  User Interface

Basic Function and System Functionality  Basic Function:  Play a number of games of "Simple Nim", reporting the results to the user.  System Functionality:  Allow the user to specify the number of sticks the pile contains at the start of the game  For each player in turn, determine what play to make (number of sticks to remove) and make the play  Display the state of the game number of sticks taken number of sticks left whether game over, and who wins  Allow the user to choose to play another game

Preliminary Design: Basic Subsystems  Need a user interface  Need a model of the nim game  No need for a data management system (no permanent data to maintain)  In the Basic Functionality description only What not How  e.g., User interface:  Input with keyboard, mouse,...?  How to deal with incorrect input?  How to display results?  Separate user interface allows easy changes without touching the model

Preliminary Design: Identifying Objects  Non-trivial iterative process with many options  Needs experience  What we really do: specify classes (not objects)  Objects are created dynamically after start-up  Different kinds of classes:  some classes are directly derivable from the things we want to model (e.g., student)  architectural classes: define relationships between system components support maintainability efficiency  classes for algorithmic implementation: well-known classes

Preliminary Design for Simple Nim  Initial class collection can be derived from required system functionality  Responsibilities and relationships lead to other classes  Postpone user interface for the moment  Model classes  Player  Pile of sticks  NOT Sticks individually (too simple, but if we had playing cards, we would design a class Card)  Somebody must be responsible to "glue" these elements together: GameManager -- Knows the rules of the game

 GameManager  Manages Pile (aggregate relationship)  Manages Players (component relationship) Relations

 Player  Plays with Pile (client/server relationship) Relations (cont.)

Relations: Model Interactions PilePlayer GameManager Nim Game Model

Model Interaction (cont.) player2:

Integrating User Interface and Model  Principle: The Model should be independent of the User Interface  On the other hand: The User Interface depends on the model  It should be possible to build different UIs while preserving the model  Client/Server pattern:  Server knows little about clients  Client must know about server  Consequence: We choose  the Model as the Server  the User Interface as a Client

Components of the User Interface  The User Interface has two principal components:  Display Data  Input Data  Displaying data consists of providing a View of the Model to the user  Input data consists of providing a means of Control of the Model to the user  In a system with Graphical User Interface (GUI), the control is event-driven  Mouse clicks  Keystrokes  Event driven approach is too difficult for the moment (wait until CSCI 2120)

Dilemma in the UI – Model Interaction  Let us focus on the display function for the moment  The User Interface must display some aspect of the state of the Model  The UI queries the Model as soon as the Model's state changes  Problem: How does the UI know when the model changes??  Periodical queries: not efficient  Model tells UI when it changes: negates independence of Model from UI  Solution: the UI is an Observer of the Model  The Model is the target of this observation

Observer - Target Relations

Observer - Target Interactions

Class Pile: Responsibilities public int size() {…} public void remove( int number ) {…}

Class Pile: Implementation  uses ooj.utilities.Require class to effect validation of preconditions Pile.java

Class Player: Responsibilities public void makeMove( Pile pile ) {…} public String name() {…} public int numberTaken () {…}

Class Player: Implementation  uses ooj.utilities.Require class to effect validation of preconditions Player.java  uses Pile object

Class GameManager: Responsibilities public void play() {…}public Player nextPlayer () {…} public boolean gameOver () {…} public int sticksLeft() {…}

Class GameManager: Implementation  uses ooj.utilities.Require class to effect validation of preconditions GameManager.java  uses Pile and Player objects as servers  collaborates with NimUI object as observer

Class UserInterface: Responsibilities public void update( GameManager target ) {…} public void start() {…} GameManager

Class UserInterface: Implementation  use OOJ.basicIO classes to effect text- based input/output  OOJ.basicIO.BasicFileReader provides methods for input OOJ.basicIO.BasicFileReader  OOJ.basicIO.BasicFileWriter provides methods for output OOJ.basicIO.BasicFileWriter

Class UserInterface: Implementation NimUI.java