CSE335: Software Design Prof. Eileen Kraemer 3144 Engineering Building Phone: 353-4392 Course web site:

Slides:



Advertisements
Similar presentations
Object-Oriented Software Development CS 3331 Fall 2009.
Advertisements

Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Introduction to Software Engineering Lecture 4 André van der Hoek.
CSCU 411 Software Engineering Chapter 2 Introduction to Software Engineering Management.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
No Silver Bullet “There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement.
What is Software Engineering? And why is it so hard?
The Architecture Design Process
General information CSE 230 : Introduction to Software Engineering
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
K. Stirewalt CSE 335: Software Design Outline of course topics Foundational OO concepts Synthetic concepts: –Program families, program fragments, and abstract.
Course Introduction and Overview of Software Engineering Richard N. Taylor ICS 221 Fall 2002.
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
CS4/542- Software Engineering  Software Design and Development  Required Text -- Code Complete by Steve McConnell  (Focuses on the problems of designing.
Software Engineering Introduction. Why are you here? …alternatively, why do we think you need to be here? Why a course on software engineering? How is.
Chapter 1- Introduction
Essence and Accident in Software Engineering By: Mike Hastings.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 1- Introduction Lecture 1 Ready, fire, aim (the fast approach to software development). Ready, aim, aim, aim, aim... (the slow approach to software.
Principles of User Centred Design Howell Istance.
SOFTWARE ENGINEERING1 Introduction. Software Software (IEEE): collection of programs, procedures, rules, and associated documentation and data SOFTWARE.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
No Silver Bullet. CS460 - Senior Design Project I (AY2004)2 No silver bullet "No Silver Bullet" –– a paper by Fred Brooks, Professor of Computer Science.
Software Engineering Lecture # 1. What is Software? 2 Software is a set of items or objects that includes: programs data documents.
Software Engineering Introduction and Overview Takes customer-defined goals and constraints and derives a representation of function, performance, interfaces,
This chapter is extracted from Sommerville’s slides. Text book chapter
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
An Introduction to Software Engineering. Communication Systems.
The Systems Development Life Cycle
Object-Oriented Analysis and Design Fall 2009.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 11 Slide 1 Design.
Software Engineering, COMP201 Slide 1 Introduction to software engineering Lecture 1.
Chapter 1 The Product. 2 Product  What is it?  Who does it?  Why is it important?  How to ensure it be done right?
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Software Production ( ) First Semester 2011/2012 Dr. Samer Odeh Hanna (PhD)
SOFTWARE ENGINEERING1 Introduction. SOFTWARE ENGINEERING2 Software Q : If you have to write a 10,000 line program in C to solve a problem, how long will.
LESSON 3. Properties of Well-Engineered Software The attributes or properties of a software product are characteristics displayed by the product once.
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
Data Structures Using C++ 2E
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Foundations: Language mechanisms and primitive OO concepts Lecture 1: Classification and Inheritance Michigan State University Spring 2008 E. Kraemer Notes.
Chapter 1: Introduction Omar Meqdadi SE 3860 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Lesson 1 1 LESSON 1 l Background information l Introduction to Java Introduction and a Taste of Java.
Teaching slides Chapter 1. Chapter 1: Introduction Introduction Components of a computer Building the software products What is software engineering?
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Lectures 2 & 3: Software Process Models Neelam Gupta.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Software Design Process. What is software? mid-1970s executable binary code ‘source code’ and the resulting binary code 1990s development of the Internet.
Advanced Software Engineering Dr. Cheng
CompSci 280 S Introduction to Software Development
What is Wrong with Models?
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Complexity Time: 2 Hours.
Introduction SOFTWARE ENGINEERING.
Software Engineering (CSE 314)
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
CSE 303 – Software Design and Architecture
Objective of This Course
UFCE8V-20-3 Information Systems Development SHAPE Hong Kong 2010/11
Presentation transcript:

CSE335: Software Design Prof. Eileen Kraemer 3144 Engineering Building Phone: Course web site: (soon)

Introductions … Professor Eileen Kraemer –Visiting Professor, from University of Georgia –PhD, Georgia Tech, 1995 –Research Interests: Human-computer Interaction Software Engineering Bioinformatics –Working with Professors Stirewalt & Dillon on projects related to usability of SE diagrams and understanding how people go about maintaining concurrent software

>

General policies: Attendance Not part of course grade HOWEVER: You will be responsible for material from multiple sources (e.g., lectures, notes, books) Slide presentations are a framework around which the lecture is formed: reading over slides is not equivalent to attending lecture Inherent problems with multiple sources: –Incompleteness –Inconsistency Rule: What I say in class trumps what appears in the notes, which trumps what appears in the text

Use of laptops in class … A privilege –Okay for note-taking or to follow along on slides –Prohibited for activities not related to class Rude Distracting Counter-productive –If this becomes a problem, I’ll ban their use altogether

General policies: response I tend to read first thing in the morning, and then again in the evening –Thus, could take me up to a day to respond –If you’ve not heard back within 24 hours, it may have been lost in the spam; so please send a gentle reminder

Homework for today Reading: –Blaha and Rumbaugh chapters 1 and 2

Traditional Engineering Defn: The creation of: –cost-effective solutions –to practical problems –by applying scientific knowledge –to building things –in the service of mankind Software engineering aims to do the same where “built things” are software systems

Traditional Engineering Defn: The creation of: –cost-effective solutions –to practical problems –by applying scientific knowledge –to building things –in the service of mankind Software engineering aims to do the same where “built things” are software systems

Cost-effectiveness Software systems notoriously expensive: –Most projects delivered late and over budget –Many end before there is a product to deliver Why do we always run out of time? –Industrial quality software systems are often BIG! Lack of good quantitative models The models that do exist are based on a reasonable approximation of the structure and size of the system –More to software products than code ([Brooks 1]) –Up to 70% of costs occur during maintenance phase

Linear model of software lifecycle ConceptualizationAnalysis System designDetailed design ImplementationTesting Maintenance/enhancementRetirement

Unique characteristic: Complexity Software more complex (for its size) than any other human construct because no two parts are alike: –If they are, we merge into one sub-routine –Thus, software differs profoundly from computers, buildings, or automobiles, where repetition abounds Scaling up software is NOT merely the repetition of same elements in larger size; it is necessarily an increase in different elements, which interact non-linearly [Brooks No Silver Bullet]

Traditional Engineering Defn: The creation of: –cost-effective solutions –to practical problems –by applying scientific knowledge –to building things –in the service of mankind Software engineering aims to do the same where “built things” are software systems

Design science of software? The bad news: Not an empirical science as is physics to the civil engineers Not-so-bad news: There is a body of knowledge for constructing real software –Based on principles and systematic methods –Is highly notational and mathematical* –Proves to be useful in practice Much of this course concerned with exploring and articulating this body of knowledge

Traditional Engineering Defn: The creation of: –cost-effective solutions –to practical problems –by applying scientific knowledge –to building things –in the service of mankind Software engineering aims to do the same where “built things” are software systems

Software: Different kind of `built thing’ More than executable code –documentation –operational specs –test cases “Wears out” differently than hardware –Akin to an “aging factory” Inherent malleability of code contributes to the loss of critical “design information”

Hardware Failure Curve Time Failure Rate “infant mortality” Wears out

Ideal Software Failure Curve Time Failure Rate continues at same rate until software is retired

Actual Software Failure Curve Time Failure Rate changes actual curve ideal curve

Unique characteristic: Conformity Much complexity stems from need to conform to arbitrary interfaces and contexts –E.g., business rules and processes, which vary drastically from business to business –E.g., existing databases of information Software often made to conform because the medium is seen as the most accommodating

Unique characteristic: Changeability Software constantly subject to pressures for change All successful software gets changed: –As product found to be useful, people try it in new cases, at the edge or beyond of its intended use. –Pressures come from users who like the basic function and invent new uses for it –Successful software outlives the life of the machine on which it was implemented

Unique characteristic: Invisibility Software is invisible and often not easy to visualize Attempts to diagram software structure reveal not one, but several directed graphs, each super-imposed on the other –Often graphs not even planar –Almost never hierarchical Using diagrams to reason about and document software is a key concern in this course

This course introduces… …core principles of software design …rigorous methods that articulate these principles, specifically for OO systems …modeling notations that support design and specification …new forms of design abstractions …a wealth of design patterns that have proven useful in practice

Software design “body of knowledge” Organized around a set of core principles –Separation of concerns –Abstraction –Anticipation of change –Modularity –Generality –Incrementality Goal: At end of this course, you should be able to apply these principles with proficiency in real design contexts. Source: Fundamentals of Software Engineering by Ghezzi, Jazayeri, and Mandrioli

Example: Generality principle “Every time you are asked to solve a problem, try to focus on the discovery of a more general problem that may be hidden behind the problem at hand. It may happen that the generalized problem is no more complex---it may even be simpler than---the original problem. Being more general, it is likely that the solution to the generalized problem has more potential for being reused. It may even happen that the solution is already provided by some off-the-shelf package. Also, it may happen that by generalizing a problem, you end up designing a module that is invoked at more than one point of the application, rather than having several specialized solutions.”

Principles are not enough! Principles are general and abstract: –In some problems, may be at odds with one another –E.g., a generalized solution may be more costly (in terms of efficiency or development time) than a specialized solution tailored to original problem To apply principles, engineers require methods and techniques that help incorporate the desired properties into a product –E.g., for systematically applying inheritance and polymorphism to achieve generality

>