CSE403 Software Engineering Autumn 2001 Gary Kimura Lecture #1 October 1, 2001.

Slides:



Advertisements
Similar presentations
System Development Life Cycle (SDLC)
Advertisements

1 ICS102: Introduction To Computing King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science.
Intro to CIT 594
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Good Morning! Announcements Please pick up an Attendance Form. Final Project paper due December 4 th (SafeAssign TM will be used) If you have not picked.
CS112: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Blackboard – Piazza – Textbook Highlight.
This Moment for America’s Children. Each second we live is a new and unique moment of the universe, a moment that will never be again.
Important concepts in software engineering The tools to make it easy to apply common sense!
What is Software Engineering? And why is it so hard?
June 13, Introduction to CS II Data Structures Hongwei Xi Comp. Sci. Dept. Boston University.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
CSE403 Software Engineering Autumn 2000 Gary Kimura Lecture #1 September 25, 2000.
COMP 110 Introduction to Programming Mr. Joshua Stough August 22, 2007 Monday/Wednesday/Friday 3:00-4:15 Gardner Hall 307.
Introduction to Software Engineering CS-300 Fall 2005 Supreeth Venkataraman.
Modern Optics Lab Modern Optics Lab Introductory Meeting.
COMP 14 – 02: Introduction to Programming Andrew Leaver-Fay August 31, 2005 Monday/Wednesday 3-4:15 pm Peabody 217 Friday 3-3:50pm Peabody 217.
 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.
CS211: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Piazza – Textbook Highlight important.
WEEK 1 CS 361: ADVANCED DATA STRUCTURES AND ALGORITHMS Dong Si Dept. of Computer Science 1.
CSE 1111 Week 1 CSE 1111 Introduction to Computer Science and Engineering.
1 Software Engineering CEN5035 copyright © 1996, 2001 R.S. Pressman & Associates, Inc.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
Please initial the appropriate attendance roster near the door. If you are on the Wait List you will find your name at the bottom. If you are not on the.
Ch.1 1 Software Engineering A Preview Chapter 1. Ch.1 2 Outline My Background Definitions of software engineering (SE) Historical origins of SE SE as.
Hello World! CSE442. Course Summary A semester long group project – You will develop software from idea to implementation You have full freedom to choose.
LORETTA DUNCAN-BRANTLEY Associate Communications Manager Microsoft Corporation Discovering Your Path Through the Maze of Life.
Value Lecture 10 This lecture is part of Chapter 5: Becoming a Millionaire.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
“Each second we live is a new and unique moment of the universe, a moment that will never be again.
CSE403 Software Engineering Autumn 2001 Design (Information Hiding) Gary Kimura Lecture #8 October 17, 2001.
1 CPRE210: Introduction to Digital Design Instructor –Arun K. Somani –Tel: – –Office Hours: MWF 10:00-11:00 Teaching Assistant.
CSE 113 Introduction to Computer Programming Lecture slides for Week 1 Monday, August 29 th, 2011 Instructor: Scott Settembre.
Principles of Computer Science I Honors Section Note Set 1 CSE 1341 – H 1.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
Matter and Interactions 1 Fall 2006 Matter & Interactions I Physics Professor & Lecturer: Dr. Reinhard Schumacher Teaching Assistants: Ms. Elisa.
Your Roadmap for Success Alice: “Would you tell me, please, which way I ought to go from here?" Cat: "That's depends a good deal on where you want to get.
CSE 1105 Week 1 CSE 1105 Course Title: Introduction to Computer Science & Engineering Classroom Lecture Times: Section 001 W 4:00 – 4:50, 202 NH Section.
Systems Development Life Cycle
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Computer Science, Algorithms, Abstractions, & Information CSC 2001.
September 30, 2010COMS W41561 COMS W4156: Advanced Software Engineering Prof. Gail Kaiser
1 CS 101 Today’s class will begin about 5 minutes late We will discuss the lab scheduling problems once class starts.
CSCI1600: Embedded and Real Time Software Lecture 28: Verification I Steven Reiss, Fall 2015.
CSE584: Software Engineering Lecture 1 (September 28, 1998) David Notkin Dept. of Computer Science & Engineering University of Washington
CS112: Course Overview George Mason University. Today’s topics Go over the syllabus Go over resources – Marmoset – Blackboard – Piazza – Textbook Highlight.
The problem that needs to be solved is if a computer career is for me.
Software Engineering (CSI 321) Introduction. Introduction Course Title: Software Engineering Course Code: CSI-321 Credit Hours: 3 Section: 1 2.
Data Structures and Algorithms in Java AlaaEddin 2012.
U.S. History Group Project.  In the remaining weeks of school, you, the students, will be put in the position of teacher. You will be broken up into.
CSE 1340 Introduction to Computing Concepts Class 1 ~ Intro.
The Information School of the University of Washington Information System Design Info-440 Autumn 2002.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
1 Computer Science 1021 Programming in Java Geoff Draper University of Utah.
CSE403 Software Engineering Autumn 2001 Gary Kimura Lecture #2 October 3, 2001.
Welcome to Introduction to Psychology! Let’s share a bit about where we are all from…
Advanced Software Engineering Dr. Cheng
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Theory and Practice of Web Technology
September 27 – Course introductions; Adts; Stacks and Queues
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Automata and Formal Languages
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
CSE403 Software Engineering Autumn 2000
Presentation transcript:

CSE403 Software Engineering Autumn 2001 Gary Kimura Lecture #1 October 1, 2001

~ You are a marvel ~ Each second we live is a new and unique moment of the universe, a moment that will never be again… And what do we teach our children? We teach them that two and two make four, and that Paris is the capital of France. When will we also teach them what they are? We should say to each of them: Do you know what you are? You are a marvel. You are unique. In all the years that have passed, there has never been another child like you. Your legs, your arms, your clever fingers, the way you move. You may become a Shakespeare, a Michelangelo, a Beethoven. You have the capacity for anything. Yes, you are a marvel. And when you grow up, can you then harm another who is, like you, a marvel? You must work – we must all work – to make the world worthy of its children. Pablo Casals ( )

Today Who I am CSE403 educational objectives (and why) Overview of the course Quick overview of software engineering and why we study it

Who I am Gary Kimura Sieg 325E (206) Office Hours: MWF 10:30 – 11:30 or by appointment is the best way to contact me Background –4 years at DEC –11 years at Microsoft –Learned Software Engineering by doing it with one of the best Please ask questions during class the lectures should be interactive

CSE 403 rumors and myths What is the worst thing that you’ve heard about CSE403? What is the best thing that you’ve heard about CSE403? Why take CSE 403? –Is it an easy 4 credits? –Learn some of what goes into building a complex software project Software Engineering is not rocket science and not something to learn from a textbook Software Engineering is the use of common sense and discipline

Educational Objective of CSE 403 Learn that building large software systems is not a mere matter of programming My goal is to have you more than just intellectually know it but really feel it and believe it

How to teach Software Engineering There is not a single right way to teach software engineering My approach is to teach what I’ve learned from experience and not simple textbook solutions All engineering, including software engineering, is concerned with building useful artifacts under constraints (some people even define engineering to be “design under constraints”) If it weren’t for the constraints, there might be a single right way to engineer software systems

How we will meet our educational objectives There is a big multi-person project Lectures and sections –Monday, Wednesday, and Friday will be more formal lectures with occasional group project days and oral presentations. –Thursday section for quizzes and TA discussion –Attend lectures is key to get the most out of the class because a lot of the material is not covered in the readings Instructor - Been there, done that Teaching Assistants - Student advocate, discussion leader, and interpreter of what I say

More on the class Project (approximately 20 students, we’ll form groups on Thursday) –We give you a high-level description, you refine it –Strict milestones (some flexibility later on) –Weekly reports, due on Fridays; list top 3 risks, plus other material ( is fine) –Not primarily graded on whether your program "works“ Special topics (often guest lectures), last weeks of quarter Schedule is on the web page

Grading the course Project accounts for 80% of final grade –Heavily objective –Group members will not necessarily receive identical grades Quizzes account for 20% of final grade –4 short quizzes based on readings and lectures

In groups of 2 or 3 people Take one minute and write down some possible issues besides simply writing code that might affect how you would engineer software; some examples include –Ship your computer game by November 15th or miss the Christmas market — and your company will go out of business –The US market for your product is nearing saturation, and you need to start marketing internationally –The US government restricts export of a key piece of technology needed by your company to remain competitive –Headcount on this project is ten people –You have to program in C++, because that’s the only language people currently in this shop use, but new hires only know Java.

What is Software Engineering? The practical application of scientific knowledge to the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them [Boehm]. The systematic approach to the development, operation, maintenance, and retirement of software [IEEE]. The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines [Bauer]. Multi-person construction of multi-version software [Parnas]. “Software from womb to tomb.”

Why study Software Engineering? Building software without discipline is crazy Software is critical to society Building a large complete software project is hard There is a perceived crisis in our ability to build software It’s fun! $$$$

Software is critical to society Economically important Essential for running most enterprises Key part of most complex systems Essential for designing many engineering products In many if not in most cases, the software is embedded in the system you are using — you don’t see the software

Software is big Code sizes due to Jon Jacky (mostly); KLOC = 1000 lines of code; MLOC = 1,000,000 lines of code Bar code scanners10-50KLOC 4-speed transmissions20KLOC ATC ground system130KLOC Automatic teller machine600KLOC Call router2.1MLOC B-2 Stealth Bomber3.5MLOC Seawolf submarine combat3.6MLOC NT 4.010MLOC NT 5.0 (NTFS alone) 60+LMLOC (250K source lines or 100KLOC )

Software it big, so what? Delivered source lines per person Common estimates are that a person can deliver about 1000 source lines per year (including documentation, scaffolding, etc.) Therefore, most complex systems require many people to build This would be true even with an order of magnitude increase in productivity Hence the critical need for coordination Brooks reminds us that people  time

“The Software Crisis” We’ve been in the midst of a crisis ever since the 1968 NATO meeting that christened software engineering “We are unable to produce or maintain high-quality software at reasonable price and on schedule.” “Software systems are like cathedrals; first we build them and they we pray. [Redwine]"

To some degree this is accurate We’ll look at some classic software failures later on in the quarter But it’s not fully accurate Given the context, we do pretty well We surely can, should and must improve Some so-called software “failures” are not –They are often management errors (the choice not to do something that would have helped) In some areas, in particular safety-critical real-time embedded systems, we may indeed have a looming crisis

Some “crisis” issues Relative cost of hardware/software Low productivity “Wrong” products Poor quality Constant maintenance Technology transfer is slow

Why is it hard? There is no single reason software engineering is hard— it’s a “wicked problem” Lack of well-understood representations of software makes customer and engineer interactions hard [Brooks] Still a relatively young field Software intangibility is deceptive –Norman Augustine [Wulf]: “Software is like entropy. It is difficult to grasp, weighs nothing, and obeys the second law of thermodynamics; i.e., it always increases.” [Law XXIII]

As the size of the software system grows, the dominant discipline changes (due to Stu Feldman) Code Size (LOC)Dominant Discipline 10 3 Mathematics 10 4 Science 10 5 Engineering 10 6 Social Science 10 7 Politics 10 8 Legal?

Your CSE classes to date In CSE so far you have mostly implemented carefully defined specifications In most cases, the central objective was to build an implementation that satisfied specific speed and space requirements

From a CSE326 assignment –“For this assignment, you are required to write a program mzsolve that finds routes through mazes and solves the 2-coloring problem. Your program will take a maze as input (in a file format described below) and output a solution path for the maze and a strategy for 2- coloring the maze. To accomplish this, you will implement a Maze ADT to represent the maze as a graph. You will implement Maze ADT operations to construct a graph from a maze file, search the graph for solution paths using DFS and BFS, and determine a two color painting scheme for the maze.”

Continued –mzsolve.C - this is the main driver code for the program that we've partially implemented. Mostly, this will just make calls to the Maze ADT and output their results. –Maze.h,Maze.C - these contain a skeleton of the specification and implementation of the Maze ADT as a C++ class. You will implement the internal representation of the the maze. You are free to use any implementation you prefer. Be aware that some representations are better than others, and we will evaluate your choice. The data structure should be able to handle arbitrary mazes (thus, arbitrary graphs). At the minimum, you will need to implement these methods:

continued Maze(istream &inFile); // construct a maze from input stream DFSolve(); // solve using DFS BFSolve(); // solve using BFS TwoColor(); // determine whether a maze is 2- colorable –Makefile - make mzsolve will use this to build your program. –You were given... (1) …the specification (what to do) (2) …the design (roughly, what ADTs to build) (3) …hints about the implementation (4) …some partial code (5) …a pointer to some libraries to use (omitted from the slides) –Somebody had to figure all this stuff out for you; now that's software engineering, and now it's your turn

Software lifecycle A software engineering lifecycle model describes how one might put structure on the software engineering activities The classic lifecycle model is the waterfall model (roughly due to Royce in 1956), which is structured by a set of activities and is inherently document-driven

Software lifecycle

Limited feedback increases risk “You start at the top and it’s all downhill from there.” [uncertain origin] The cost of fixing errors at later lifecycle phases is much higher than at earlier stages –Boehm’s 1976 data still hold — the differences are often an order of magnitude –Must increase feedback in the lifecycle to reduce these costs (and other risks)

Next time Wednesday –Models Friday –Project overview