Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
Introduction To System Analysis and Design
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Design Creative Process of transferring the problem into a solution
Component-Level Design
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
Designing the system Conceptual design and technical design
Fall 2007CS 225 Introduction to Software Design Chapter 1.
Software Design Project Phase 2 Team 1: Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Designing Software for Ease of Extension and Contraction
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
Chapter 1 Principles of Programming and Software Engineering.
WEL COME PRAVEEN M JIGAJINNI PGT (Computer Science) MCA, MSc[IT], MTech[IT],MPhil (Comp.Sci), PGDCA, ADCA, Dc. Sc. & Engg.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Designing Software for Ease of Extension and Contraction Group 1: Lisa Anthony Erik Hayes Luiza Da Silva Diana Tetelman CS575 – Software Design Fall 2001.
On the Criteria to Be Used in Decomposing Systems into Modules Group 1: Lisa Anthony, Erik Hayes, Luiza Helena da Silva, and Diana Tetelman.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Chapter 6: Architectural Design
Software Architecture for DSD The “Uses” Relation.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
KWIC Project – Part 1 Mini-Project to Evaluate Architectural Patterns(Styles) Carl Chesser Ji Li EECS 761.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
1 On the Criteria To Be Used in Decomposing Systems into Modules by D.L.Parnas Dec presented by Yuanhua Qu for spring 2003 CS5391.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architecture styles Pipes and filters Object-oriented design Implicit invocation Layering Repositories.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
Cohesion and Coupling CS 4311
Systems analysis and design, 6th edition Dennis, wixom, and roth
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
Unit 2 Architectural Styles and Case Studies | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS 1.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Abstraction ADTs, Information Hiding and Encapsulation.
Chapter 7: Architectural Design Chapter 11 in textbook 1.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Comparing Designs By Chris McCall. Comparing Designs A decision-making method for deciding between many designs for a single specification Provides a.
Systems Design.  Application Design  User Interface Design  Database Design.
Lecture VIII: Software Architecture
Keyword In Context Presented by Team 2 Francisco Soria Zhiyu Zhang Xuheng Xu Irene Peysakhov.
Chapter 2 Principles of Programming and Software Engineering.
Principles of Programming. Achieving an Object-Oriented Design  Abstraction and Information Hiding  Object-Oriented Design  Functional Decomposition.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
KWIC example The KWIC [key word in context] system accepts an ordered set of lines; each line is an ordered set of words, and each word is an ordered set.
Principles of Programming & Software Engineering
7. Modular and structured design
Coupling and Cohesion Rajni Bhalla.
Coupling and Cohesion 1.
On the Criteria to Be Used in Decomposing Systems into Modules
Data Abstraction: The Walls
Principles of Programming and Software Engineering
Part 3 Design What does design mean in different fields?
Prepared by Charlie Meyer, May 2009
Hierarchical Architecture
Princess Nourah bint Abdulrahman University
Paper by D.L Parnas And D.P.Siewiorek Prepared by Xi Chen May 16,2003
Chapter 2. Problem Solving and Software Engineering
Cohesion and Coupling.
Presentation transcript:

Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman

Style Overviews General Issues and Design Diagrams

Object-Oriented (ADT) Classes: Main, Input, Output, Shifter, Sorter SentenceCollection, ObjectCollection, KWICRow, KWIObject KWICException Minimal class coupling Each class is a module Several layers of abstraction to enhance data hiding and reuse possibilities

Object-Oriented Design Diagram

Pipe-and-Filter Classes: Main, Input, Output, Shifter, Sorter SentenceCollection, ObjectCollection, KWICRow, KWIObject KWICException Central data object passed along from module to module Format of data cannot change during journey No implicit trust in other modules completing their tasks

Pipe-and-Filter Design Diagram

Implicit Invocation Classes: Master, Input, Output, Shifter, Sorter SentenceCollection, ObjectCollection, KWICRow, KWIObject KWICException Modules are concurrent threads Communicate via pipes (not event handling) Pipes set up by Master One pipe for each module Read/Write ends assigned to specific module Implicit trust in other modules completing their tasks

Implicit Invocation Design Diagram

Analysis of Styles Comparison & Contrast

Modularization All styles used similar class structure Modularization not necessarily the same “Secrets” of each module differ in each implementation Data hiding Several extra layers to make data more generic (in case of future changes to input/output)

Object-Oriented (ADT) Modules don’t know about each other Input module more complex to handle possible future changes to data format choice of interfaces (i.e., multiple infiles or only 1 infile)

Pipe and Filter Each module has single point of entry Use of OO language (Java) caused difficulty in adhering to strict pipe-and-filter style – used central data object Addition of modules that changed data format in the middle of flow would require a translation filter afterwards Removal of modules does not require a lot of change

Implicit Invocation 2 centralized data objects Input (unshifted) data Shifted data Concurrency issues Each module waits for events to occur in others Modules communicate via pipes Know your neighbors But don’t know if others did their jobs – implicit trust Pipes set up by Main module New modules would severely affect current system – not easily changed

Data Representation Level of transparency Generic interface Hidden access to data Generic data collection – doesn’t know it is dealing with Strings 3 rd layer converts to Strings Can sort, compare, print Change to a different input type would involve only changes to this layer Promotes reuse of code

Hierarchical Structures “Uses” Hierarchy Diagram, Other Structures

“Uses” Diagram

IIMaster : mainIIInput : runIIShifter : runIISorter : runIIOutput : run Input : start Shifter : start Sorter : start Output : start Input : readSentence() message : SHIFT Shifter : shiftSentence() * iterations message : DONE message : SORT Sorter : sortCollection() message : OUT Output : printCollection() Implicit Invocation Sequence Diagram

Commonalities “Uses” diagrams are the same – why? Most “obvious” way to structure functionality to prevent loops Division of work into modules of this type made co-development easier Not a lot of communication needed Except for data representation (interface had to be finished 1 st )

Other Points Transparency, Code Reuse, Undesired Events, Etc.

Program Families Are these three styles members of the same family? Not really: Not developed from a base system which is common to all 3

Ease of Extension & Contraction Object-Oriented: easiest to extend/subset 2 nd level of “uses” hierarchy are all independent Promotes reuse Pipe-and-Filter: Contraction easy Extension not so easy Implicit Invocation: Not at all easy Difficult to coordinate new threads and redefine pipes

Transparency Loss of transparency apparent in data structure used in all implementations: Comprised of 3 layers Upper levels attempt to hide some lower level concepts; ex. the KWICRow performs operations on words that are not possible through use of higher layers

Undesired Events All implementations handle undesired events via use of a KWICException (Java throw): All exceptions are created at the lowest level All exceptions are reflected up the execution hierarchy to ensure recovery

Code Reuse Data structure and exception class reusable: used in all 3 implementations Object-Oriented easily reused due to generic interfaces Implicit Invocation not easily reused due to expectance of specific events Pipe and Filter easily reused as long as new component uses the same data structure

Abstract Data Type Collection used to store sentences to be operated on: Assumptions:  Random access  Iterator Provides interface to data that manages to hide some details (secrets)

Unit Tests Used to ensure correct functioning of all modules of Pipe and Filter and Object Oriented implementations Difficult to use on Implicit Invocation implementation due to the amount of dependency between modules

Summary of Results Which style is the best for Parnas’ purposes?

Conclusions Object-Oriented style is most like Parnas’ ideal Other styles are weaker with respect to Reuse Changeability Centralized data structure helps all 3 styles become stronger Loss of transparency (data hiding) Translation modules needed but other modules preserve interfaces