“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture.

Slides:



Advertisements
Similar presentations
Understand and appreciate Object Oriented Programming (OOP) Objects are self-contained modules or subroutines that contain data as well as the functions.
Advertisements

Design, prototyping and construction
INSTRUCTION SET ARCHITECTURES
COMPSCI 105 S Principles of Computer Science 12 Abstract Data Type.
Keeping Secrets Within a Family: Rediscovering Parnas H. Conrad Cunningham Computer & Information Science, University of Mississippi Cuihua Zhang Computer.
Software Requirements Engineering
© 2005 Prentice Hall6-1 Stumpf and Teague Object-Oriented Systems Analysis and Design with UML.
Hestia: Aarthi Giridharan Govindarajan Panneerselvam Nirmal Chander Shesha Chandrika Moka Sriram Rajendran Suryanarayanan Ganesh Melarkode Vignesh Swaminathan.
Requirements Engineering n Elicit requirements from customer  Information and control needs, product function and behavior, overall product performance,
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
IT ARCHITECTURE © Holmes Miller BUILDING METAPHOR 3CUSTOMER’S CONCERN Has vision about building that will meet needs and desires 3ARCHITECT’S CONCERN.
LEARNING OBJECTIVES Index files.
Software Architecture Design Instructor: Dr. Jerry Gao.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Physical design. Stage 6 - Physical Design Retrieve the target physical environment Create physical data design Create function component implementation.
Introduction to Database Management
Architectural styles and Case studies 1 | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
SDLC. Information Systems Development Terms SDLC - the development method used by most organizations today for large, complex systems Systems Analysts.
Methodology Conceptual Database Design
Course Instructor: Aisha Azeem
Design process. Design briefs Investigating Designing Producing Analysing and evaluating Design process wall charts.
03 - ParnasCSC4071 A Sketchy Evolution of Software Design 1960s –Structured Programming (“Goto Considered Harmful”, E.W.Dijkstra) Emerged from considerations.
Architecture, Implementation, and Testing Architecture and Implementation Prescriptive architecture vs. descriptive architecture Prescriptive architecture:
Page 1 ISMT E-120 Introduction to Microsoft Access & Relational Databases The Influence of Software and Hardware Technologies on Business Productivity.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
WP6: Grid Authorization Service Review meeting in Berlin, March 8 th 2004 Marcin Adamski Michał Chmielewski Sergiusz Fonrobert Jarek Nabrzyski Tomasz Nowocień.
Chapter 10 Architectural Design
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
Implementation & Integration Phase Implementation, then integration: Implementation, then integration:  Each module is implemented by member of programmer.
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Requirements Analysis
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
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.
Eng. Mohammed Timraz Electronics & Communication Engineer University of Palestine Faculty of Engineering and Urban planning Software Engineering Department.
Computers Data Representation Chapter 3, SA. Data Representation and Processing Data and information processors must be able to: Recognize external data.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Key Principles of Software Architecture and Design (I) adapted from Dave Penny’s.
Querying Large Databases Rukmini Kaushik. Purpose Research for efficient algorithms and software architectures of query engines.
Chapter 12: Design Phase n 12.1 Design and Abstraction n 12.2 Action-Oriented Design n 12.3 Data Flow Analysis n Data Flow Analysis Example n
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.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
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.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Software Engineering Issues Software Engineering Concepts System Specifications Procedural Design Object-Oriented Design System Testing.
Comparing Designs By Chris McCall. Comparing Designs A decision-making method for deciding between many designs for a single specification Provides a.
CS523 Database Design Instructor : Somchai Thangsathityangkul You can download lecture note at Class Presence 10% Quiz 10%
Presentation on Database management Submitted To: Prof: Rutvi Sarang Submitted By: Dharmishtha A. Baria Roll:No:1(sem-3)
Dillon: CSE470: ANALYSIS1 Requirements l Specify functionality »model objects and resources »model behavior l Specify data interfaces »type, quantity,
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
 System Requirement Specification and System Planning.
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.
IS 350 Course Introduction. Slide 2 Objectives Identify the steps performed in the software development life cycle Describe selected tools used to design.
On the Criteria to Be Used in Decomposing Systems into Modules
Prepared by Charlie Meyer, May 2009
CHAPTER 2 CREATING AN ARCHITECTURAL DESIGN.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
On the Criteria To Be Used in Decomposing Systems into Modules
On the Criteria To Be Used in Decomposing Systems into Modules D. L
CHAPTER 9 (part a) BASIC INFORMATION SYSTEMS CONCEPTS
DATABASES WHAT IS A DATABASE?
Database System Concepts and Architecture
PHASE 1 - PRESENTATION Presented By - Karthik Kannambadi Sridhar
CS/SE ADVANCED SOFTWARE ARCHITECTURE AND DESIGN FALL 2015
Module Structure David Parnas Discusses “modularization”
Presentation transcript:

“Architecture” The outcome of top-level design, reflecting principal design decisions Can (and should) be modified and updated Analogous to architecture in buildings – Need a plan before construction begins – Need to reconcile opposing interests and constraints But the analogy is not very good – In software there is much less specialization – Software is much more malleable and easy to fix later (even subject to evolutionary development)

Principal Design Decisions Structure (e.g. classes and inheritance) Functional behavior (e.g. sequencing of operations) Communication mechanisms (e.g. events vs. procedure calls) Non-functional properties (e.g. how to achieve reliability) Implementation techniques and frameworks

Problem Statement The KWIC (Key Word in Context) index system accepts an ordered set of lines, each line is an ordered set of words, and each word is an ordered set of characters. Any word in any line may be identified as the index word. The KWIC index system outputs a listing of all lines with all possible index words, in alphabetical order of the index words.

KWIC Example Database index Keyword listing Indexing story keywords Telling stories Database index Indexing story keywords Keyword listing Indexing story keywords Keyword listing Telling stories Indexing story keywords Telling stories

Your Task Design a system that implements the KWIC index List modules and interfaces between them No shortcuts (don’t use libraries that do everything) What are the main considerations (why done this way)

D. L. Parnas, “On the criteria to be used in decomposing a system into modules”. Comm ACM 15(12), pp , Dec 1972 Major contributor to information hiding and modularization (this paper) Advocate of software development as an engineering discipline Including good documentation! Opponent of “star wars” Fellow of ACM, IEEE

1970s Flow-Chart Based Solution Read input Cyclic shift Alpha- betize Output Master control Shared memory data manipulation with pointers data index

More Common KWIC Format Database Indexing Keyword story Telling Indexing Database index index Indexing story keywords Keyword listing keywords listing stories story keywords Telling stories Change only output module

Ignoring Stop Words Provide list of common words that should not be indexed – The – And – A – Of – It – In – As – This The output should not include lines with these words identified as index words Filter them out in cyclic shifter module

Identifying All Keywords All at once – Create multiple copies of each line and store them Possible alternative: incremental – Create shifted copies of lines upon request – Not compatible with flow Useful alternatives depend on interface and may affect calling module

Alphabetizing Approach All at once – Alphabetize the whole list – Then output the result Alternative: incremental – Upon request, search for first line – Delete it after use Alternative: mixed – Partition data into sorted segments like quicksort – Alphabetize each segment when needed Hidden only if interface provides an iterator; alternatives not suitable if providing a list

Alternative ADT Solution Read input Cyclic shift Alpha- betize Output Master control insert Line storage iterate insert copies iterate provide order interface defining logical operations

Another Alternative Solution Read input Cyclic shift Alpha- betize Output Master control insert lines Line storage implementation can copy lines or generate them on demand iterator

Another Alternative Solution Read input Cyclic shift Dictionary (alphabetized) Output Master control store lines extract lines Line storage read index iterator store index

Design Competitions There is more than one solution Different solutions have different strengths and weaknesses Idea: use multiple design teams in parallel – Common in other fields, e.g. architecture Discuss pros and cons of designs Combine solutions if appropriate

Storage Format In first approach this is exposed to all modules – All need to know how to manipulate pointers In second approach this is hidden – Line storage interface is naturally in lines – Can also support words or characters Importantly can select different storage media – In memory – Swap to disk as needed – Store on the cloud Might impact performance

Information Hiding Provide possibility of easy adaptation – Design decisions isolated within modules – Using a module is oblivious to the decision (= to the chosen implementation) Provide possibility of easy extension Do not add complexity in order to do so – Avoid YAGNI (You Ain’t Gonna Need It)

Architecture and Modules Defined by interfaces Just what a user needs to know and no more – What it does and how to us it – Not how it is implemented Just what an implementer needs to know and no more – What it needs to do – Not how or why it will be used – Free to choose implementation