CSE 503 – Software Engineering

Slides:



Advertisements
Similar presentations
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
Advertisements

CSE 784 Software Studio Phil Pratt-Szeliga Fall 2010 Slides Derived From: Dr. Fawcett.
Design The goal is to design a modular solution, using the techniques of: Decomposition Abstraction Encapsulation In Object Oriented Programming this is.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Business Area Analysis Focus: Domain View (selected business area) Goals: –Isolate functions and procedures that allow the area to meet its goals –Define.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 5CSA 217 Design in Construction Chapter 5 1.
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.
An Introduction to Software Architecture
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Requirements Engineering CSE-305 Requirements Engineering Process Tasks Lecture-5.
Software Requirements Engineering CSE 305 Lecture-2.
3rd Country Training, K.Subieta: System Engineering and Databases. Lecture 3, Slide 1 February 20, 2004 Lecture 3: Introduction to Software Analysis and.
Software Engineering Management Lecture 1 The Software Process.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
Drexel University CS 451 Software Engineering Winter Yuanfang Cai Room 104, University Crossings
CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
L10 - April 12, 2006copyright Thomas Pole , all rights reserved 1 Lecture 10: Software Assets and Text: Ch. 8: Language Anatomy and Ch 9: Families.
Dale Roberts Object Oriented Programming using Java - Introduction Dale Roberts, Lecturer Computer Science, IUPUI Department.
Introduction to Design (and Zen) CpSc 372: Introduction to Software Engineering Jason O. Hallstrom Authorship Disclaimer. These.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1 Introduction to Design. 2 Outline Basics of design Design approaches.
Stages of design  High level design  High level data structure  Architecture  Low level design-code design  Algorithms  Low level data structures.
It is the fuel of modern life Business are run Government rule Scientists Industries Education However, building and maintaining software is hard and getting.
CS223: Software Engineering Lecture 13: Software Architecture.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
OOPS CONCEPT.  OOPS  Benefits of OOPs  OOPs Principles  Class  Object Objectives.
Documenting an Architecture 10 pages, half pictures.
PhD at CSE: Overview CSE department offers Doctoral degree in the Computer Science (CS) or Computer Engineering areas (CpE) at both MS to PhD and BS to.
Advanced Computer Systems
CompSci 280 S Introduction to Software Development
Software Engineering Management
Chapter 4: Business Process and Functional Modeling, continued
Chapter 4 – Requirements Engineering
CHAPTER 5 GENERAL OOP CONCEPTS.
Mastering the Fundamentals of RESTful API Design
Software Quality Engineering
SOFTWARE DESIGN AND ARCHITECTURE
CS 350 – Software Design The Facade Pattern – Chapter 6
Informatics 121 Software Design I
4th Edition Chapter 25 Design Step #5: The Design Defense.
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Documenting an Architecture
Software Engineering Lecture #9.
UNIT 3 CHAPTER 1 LESSON 4 Using Simple Commands.
CSE 503 – Software Engineering
CSE341: Programming Languages Lecture 12 Equivalence
Architecture Description Languages
CSE341: Programming Languages Lecture 12 Equivalence
CSE341: Programming Languages Lecture 12 Equivalence
An Introduction to Software Architecture
4th Edition Chapter 25 Design Step #5: The Design Defense.
Introduction to Systems Analysis and Design Stefano Moshi Memorial University College System Analysis & Design BIT
Professor Ioana Banicescu CSE 8843
CS 8532: Advanced Software Engineering
Applying Use Cases (Chapters 25,26)
Team Skill 6 - Building The Right System Part 1: Applying Use Cases
Applying Use Cases (Chapters 25,26)
4th Edition Chapter 25 Design Step #5: The Design Defense.
CSE403 Software Engineering Autumn 2000 Design (Information Hiding)
CSE341: Programming Languages Lecture 12 Equivalence
CSE341: Programming Languages Lecture 12 Equivalence
Definitions of “Design”
CSE341: Programming Languages Lecture 12 Equivalence
Presentation transcript:

CSE 503 – Software Engineering Lecture 12: Modularity and decomposition Rob DeLine 5 May 2004

Learning about software design How many of you have had an undergraduate course in... algorithm selection and analysis? data structure selection and analysis? operating systems? compilers? software design/software architecture? Undergraduate CS curricula seldom include a design course Right now we count on on-the-job training Imagine if building architects were trained this way! Imagine if civil engineers were trained this way!

Learning about building design Contrast CS training to architecture training Undergrads have studio courses, typically every semester Students are given a “design brief” to fulfill Students work “en charette” on the design until the jury (These training projects are sometimes called “charettes”) Students get feedback through juries Individuals or teams present their designs Design consists of drawings and maquettes, presented live Design is also recorded in a companion written report Students get feedback from jury committee and each other Design is a skill learned through experience and feedback

503 Charette The logistics: The brief, in brief: You have the rest of the quarter to work on a design You will work in teams of four (no more than 7 total teams) The jury is during the final exam slot Each team gets fifteen minutes to present and get feedback The jury committee will include experienced designers The brief, in brief: You will design an email and appointment system for a business A simplified form of Outlook/Exchange or Notes High availability, cost effective performance Your design will include A detailed system architecture Behavioral models with demonstrated properties You will get a more detailed brief next Mon 10 May

Modularity Why decompose a system? To divide the work load The make the system comprehensible To support reuse To make the system reasonably testable To facilitate change of design decisions What design decisions can we encapsulate? Encapsulate algorithms with procedural abstraction Encapsulate data representations with information hiding Combine these as abstract data types Any other mechanisms?

Basics of information hiding Modularize based on anticipated change Minimize dependencies on decisions that are likely to change Reduces effort in making the change Separate interfaces from implementations Implementations capture decisions likely to change Interfaces capture decisions unlikely to change Clients dependent on interface, not implementation Implementation dependent on interface, not clients Underlying assumptions The most common anticipated change is about data representation The effort to make a change is proportional to the dependencies, i.e. the act of change is mechanical or syntactic How relevant are these assumptions today?

Managing dependencies In theory, a client depends only on an interface But, what exactly is an interface? Data types and function signatures? Ordering constraints and other usage rules of functions? Asymptotic complexity of functions’ algorithms? Resource usage of functions? Implementation policies (client usage assumptions), e.g. caching? What about when client and implementation run in parallel? Very complex when client and implementation are from different companies Need to provide new features in new products Should also be backward-compatible – whatever that means For infrastructure, modularity may be a legal matter (MS vs DOJ)