CS 501: Software Engineering

Lecture 1

Introduction to Software Engineering


CS 501 Spring 2005

About the Course
Web site: www.cs.cornell.edu/Courses/cs501/2005sp/ Email: cs501-l@lists.cs.cornell.edu (student to course team) Newsgroup: cornell.class.cs501 (student to student) Instructor: William Arms Teaching assistants: Lin Guo, Amar Phanishayee Assistant: Anat Nidar-Levi Computer lab: Computer Science Undergraduate Lab, Upson Hall, Room 315/317.
2 CS 501 Spring 2005

send email to: cs501-l@lists. except for questions to the teaching assistant assigned to your project. 3 CS 501 Spring 2005 .cs.Course Administration Email To contact members of the course team.cornell. Teaching Assistants do not have office hours.edu Do not send email to the instructor or an individual teaching assistant. but you can schedule an appointment by email.

Academic Integrity Software Engineering is a collaborative activity. You are encouraged to work together. Good professional practice: To make use of the expertise of others and to build on previous work. ‡ Always give credit to your sources and collaborators. 4 CS 501 Spring 2005 . with proper attribution. but . Unethical and academic plagiarism: To use the efforts of others without attribution.. which points to the Cornell code.. ‡ Some tasks may require individual work. See: Code of Academic Integrity on the course Web site.

No examinations.) Quizzes Four quizzes held during class times.) Wednesday evening This time is for project team meetings. see the Syllabus file on the course Web site. 5 CS 501 Spring 2005 . (Note that this syllabus may change as the course progresses. readings and quizzes. assignments. but each project should have at least one regular weekly meeting. You may choose to meet at other times. (See Quizzes on the Web site for details.About the Course Syllabus For the schedule of lectures.

About the Course Readings: Required readings. 6 CS 501 Spring 2005 . Textbook: There is no course textbook. that will not be tested explicitly. See the Web site for general books on Software Engineering. Recommended material. See the Books and Readings file on the Web site. Material that will be tested in the quizzes will be identified during classes. Background reading.

Grading (Subject to Change) Project (group) Project (individual) Quizzes 45% 25% 30% 7 CS 501 Spring 2005 .

You know a good deal about computing. Soon you will be in charge! It may be your money! We want you to make your mistakes now and learn from your mistakes. 8 CS 501 Spring 2005 . you are going to work on production projects where success or failure costs millions of dollars. can program reasonably. When you leave Cornell. can learn more on the job.Overall Aim of the Course We assume that you are technically proficient.

9 CS 501 Spring 2005 .Projects The Course is Built around the Projects ‡ ‡ ‡ ‡ ‡ Real project for real client who intends to use the software in production. 5 to 7 people. design. any branch of software development Project teams. final The class on Thursday will discuss the projects. Select your own project. Feasibility study and plan: due February 18 Group presentations and reports: requirements.

Project Selection Read the Web site ‡ Some projects are suggested on the Web site and will be discussed in class on Thursday ‡ You are encouraged to find other projects Contact potential clients ‡ ‡ ‡ Gain idea of their expectations Estimate scope and complexity of the project Discuss business decisions Assemble project team ‡ ‡ Post message on newsgroup cornell.class.cs501 Advertise at the beginning of class CS 501 Spring 2005 10 .

technical. writing. Consider appointing a leader to coordinate the effort CS 501 Spring 2005 .organizational.Thoughts about Project Selection Projects ‡ ‡ Target must be a production system (not research) Client should be one or two designated people -. etc.client should be prepared to meet with you regularly and attend the presentations Team ‡ ‡ 11 Teams need many strengths -.

. mobile telephones Offices: word processing.. digital libraries Sensors: weather data System software: operating systems. weather forecasting Graphical: film making. pensions Information systems: web sites. design etc. GPS Data processing: telephone billing.Variety of Software Products Examples Real time: air traffic control Embedded systems: digital camera. compilers Communications: routers. 12 CS 501 Spring 2005 ... video conferences Scientific: simulations.. etc... etc.

Customer) The client provides resources and expects some product in return. Question: Who is the client for Microsoft Excel? 13 CS 501 Spring 2005 .a. Client satisfaction is the primary measurement of success in a software project.k.Client Client (a.

IRS internal system) ‡ Demonstration.g.g..Categories of Software Product Categories of client and software product: ‡ Generic (e. prototype. Who is the client for each category of product? 14 CS 501 Spring 2005 .g. Cornell's payroll system) ‡ Bespoke (customized) (e. Mathematica) ‡ Customized versions of generic packages (e...g. . Microsoft Excel) ‡ Packages (e... research..

Previous Experience (Yours) Your background ‡ ‡ ‡ ‡ ‡ ‡ Biggest program that you have written? Biggest program that you have worked on? Biggest project team that you have been part of? Longest project that you have worked on? Most people who have used your work? Longest that your project has been in production? 15 CS 501 Spring 2005 .

Observations Most software development is by teams ‡ Effectiveness of team determines success Most large software projects are built on older ones ‡ It is rare to start a new suite of programs from scratch ‡ Building on the work of others is a fundamental skill of software development 16 CS 501 Spring 2005 .

Before a big project is completed the requirements have changed many times.3 person/years. A big project may be 100 to 1.000+ person years. Every important program is written by many people. 17 CS 501 Spring 2005 . who are constantly changing.Observations about Big Projects ‡ ‡ ‡ ‡ A CS 501 project is about 0. No large system is ever complete.

Future Experience What will you be doing one year from now? Ten years from now? Typical career paths in computing combine technical work with varying degrees of project management. 18 CS 501 Spring 2005 . etc. entrepreneurship. marketing.

routers. SNMP. ‡ Administrative data processing. file systems.) 19 CS 501 Spring 2005 . ‡ Two campus networks. ‡ Digital libraries (including current large project for the National Science Foundation) (Theme has been first production system where the methods have previously been used only in research. etc. with some time in industry. Projects where I was in charge ‡ Operating system. general ledger. compilers. etc. ‡ Distributed computing environment. etc. etc. I was in charge of computing at Dartmouth and Carnegie Mellon.Previous Experience (Mine) Much of my career.

Software is Expensive Software is expensive! The major costs are salaries (your salaries)! Every software project has a trade-off between: Functionality Resources (cost) Timeliness Example: Console monitor 20 CS 501 Spring 2005 .

Failures of software development projects can bankrupt companies! 21 CS 501 Spring 2005 .Course Themes: Risk Risk (as Seen by a Manager) ‡ Problems Over budget Late delivery Does not work as expected ‡ Never used Does the wrong thing Needs change Users dislike to use it etc.

Course Themes: Visibility Visibility (as Seen by a Manager) ‡ Problem Must rely on others for reports of progress or difficulties ‡ Software Developers Have difficulty evaluating progress Optimistic Consider reporting a waste time etc. The people who take the responsibility must know what is happening! 22 CS 501 Spring 2005 .

and social factors Nobody comprehends more than a fraction of the project! 23 CS 501 Spring 2005 . legal.Course Themes: Process Process in Large Software Projects ‡ Software as a product Clients and their needs Quality ‡ Requirements and specification Usability Evolution ‡ Project management Personnel management Economic.

Course Themes: Scale Techniques for large and very large systems ‡ Software design Software architecture Object-oriented design ‡ Dependable systems Reliability Verification ‡ Legacy systems 24 CS 501 Spring 2005 .

. Example: Optical scanner 25 CS 501 Spring 2005 .. not the end itself.What is Good Software? General characteristics Usability Maintainability Dependability Efficiency Good software products require good programming. but . Programming quality is the means to the end.

operating system. tools. etc. The craft of software development is to select appropriate methods for each project and apply them effectively. 26 CS 501 Spring 2005 .The Craft of Software Development Software products are very varied --> Client requirements are very different --> There is no standard process for software engineering --> There is no best language. A skilled software developer knows about a wide variety of approaches. development environment. database system. methods. platform.

. the Internet worm). trade secrets. Acceptable use and misuse: Computer abuse can paralyze an organization (e. Confidentiality: Software developers and systems administrators may have access to highly confidential information (e.Professional Responsibility Organizations put trust in software developers: ‡ ‡ Competence: Software that does not work effectively can destroy an organization.g.g. personal data). intellectual property. Legal environment: Software exists in a complex legal environment (e. CS 501 Spring 2005 ‡ ‡ 27 ..g. obscenity)..

Next Steps ‡ ‡ Read the Web site. 28 CS 501 Spring 2005 . Begin planning for your projects and forming project teams.

Sign up to vote on this title
UsefulNot useful