CS 501: Software Engineering
Introduction to Software Engineering
1 CS 501 Spring 2005
About the Course
Web site: www.cs.cornell.edu/Courses/cs501/2005sp/
Email: email@example.com (student to course
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
To contact members of the course team, send email to:
Do not send email to the instructor or an individual
teaching assistant, except for questions to the teaching
assistant assigned to your project.
Teaching Assistants do not have office hours, but you can
schedule an appointment by email.
3 CS 501 Spring 2005
Software Engineering is a collaborative activity. You are
encouraged to work together, but ...
• Some tasks may require individual work.
• Always give credit to your sources and collaborators.
Good professional practice: To make use of the expertise of
others and to build on previous work, with proper
Unethical and academic plagiarism: To use the efforts of
others without attribution.
See: Code of Academic Integrity on the course Web site,
which points to the Cornell code.
4 CS 501 Spring 2005
About the Course
For the schedule of lectures, assignments, readings and
quizzes, see the Syllabus file on the course Web site. (Note
that this syllabus may change as the course progresses.)
Four quizzes held during class times. No examinations.
(See Quizzes on the Web site for details.)
This time is for project team meetings. You may choose to
meet at other times, but each project should have at least one
regular weekly meeting.
5 CS 501 Spring 2005
About the Course
Required readings. Material that will be tested in the quizzes
will be identified during classes.
Background reading. Recommended material, that will not be
There is no course textbook. See the Web site for general
books on Software Engineering.
See the Books and Readings file on the Web site.
6 CS 501 Spring 2005
Grading (Subject to Change)
Project (group) 45%
Project (individual) 25%
7 CS 501 Spring 2005
Overall Aim of the Course
We assume that you are technically proficient. You know
a good deal about computing, can program reasonably,
can learn more on the job.
When you leave Cornell, you are going to work on
production projects where success or failure costs millions
Soon you will be in charge! It may be your money!
We want you to make your mistakes now and learn from
8 CS 501 Spring 2005
The Course is Built around the Projects
• Real project for real client who intends to use the software in
• Select your own project, any branch of software development
• Project teams, 5 to 7 people.
• Feasibility study and plan: due February 18
• Group presentations and reports:
requirements, design, final
The class on Thursday will discuss the projects.
9 CS 501 Spring 2005
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
Thoughts about Project Selection
• Target must be a production system (not research)
• Client should be one or two designated people -- client
should be prepared to meet with you regularly and attend the
• Teams need many strengths -- organizational, technical,
• Consider appointing a leader to coordinate the effort
11 CS 501 Spring 2005
Variety of Software Products
Real time: air traffic control
Embedded systems: digital camera, GPS
Data processing: telephone billing, pensions
Information systems: web sites, digital libraries
Sensors: weather data
System software: operating systems, compilers
Communications: routers, mobile telephones
Offices: word processing, video conferences
Scientific: simulations, weather forecasting
Graphical: film making, design
etc., etc., etc., ....
12 CS 501 Spring 2005
Client (a.k.a. Customer)
The client provides resources and expects some
product in return.
Client satisfaction is the primary measurement
of success in a software project.
Question: Who is the client for Microsoft Excel?
13 CS 501 Spring 2005
Categories of Software Product
Categories of client and software product:
• Generic (e.g., Microsoft Excel)
• Packages (e.g., Mathematica)
• Customized versions of generic packages (e.g.,
Cornell's payroll system)
• Bespoke (customized) (e.g., IRS internal system)
• Demonstration, prototype, research, ...
Who is the client for each category of product?
14 CS 501 Spring 2005
Previous Experience (Yours)
• 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
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
• Building on the work of others is a fundamental
skill of software development
16 CS 501 Spring 2005
Observations about Big Projects
• A CS 501 project is about 0.3 person/years. A big project
may be 100 to 1,000+ person years.
• Every important program is written by many people, who
are constantly changing.
• Before a big project is completed the requirements have
changed many times.
• No large system is ever complete.
17 CS 501 Spring 2005
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, marketing,
18 CS 501 Spring 2005
Previous Experience (Mine)
Much of my career, I was in charge of computing at
Dartmouth and Carnegie Mellon, with some time in industry.
Projects where I was in charge
• Operating system, compilers, etc.
• Two campus networks, routers, SNMP, etc.
• Distributed computing environment, file systems, etc.
• Administrative data processing, general ledger, etc.
• 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.)
19 CS 501 Spring 2005
Software is Expensive
Software is expensive!
The major costs are salaries (your salaries)!
Every software project has a trade-off between:
20 CS 501 Spring 2005
Course Themes: Risk
Risk (as Seen by a Manager)
Does not work as expected
• Never used
Does the wrong thing
Users dislike to use it
Failures of software development projects can
21 CS 501 Spring 2005
Course Themes: Visibility
Visibility (as Seen by a Manager)
Must rely on others for reports of
progress or difficulties
• Software Developers
Have difficulty evaluating progress
Consider reporting a waste time
The people who take the responsibility must know
what is happening!
22 CS 501 Spring 2005
Course Themes: Process
Process in Large Software Projects
• Software as a product
Clients and their needs
• Requirements and specification
• Project management
Economic, legal, and social factors
Nobody comprehends more than a fraction of the
23 CS 501 Spring 2005
Course Themes: Scale
Techniques for large and very large systems
• Software design
• Dependable systems
• Legacy systems
24 CS 501 Spring 2005
What is Good Software?
Good software products require good programming,
Programming quality is the means to the end, not the
Example: Optical scanner
25 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, operating system, platform,
database system, development environment, etc.
A skilled software developer knows about a wide variety of
approaches, methods, tools. The craft of software development
is to select appropriate methods for each project and apply them
26 CS 501 Spring 2005
Organizations put trust in software developers:
• Competence: Software that does not work effectively can
destroy an organization.
• Confidentiality: Software developers and systems
administrators may have access to highly confidential
information (e.g., trade secrets, personal data).
• Legal environment: Software exists in a complex legal
environment (e.g., intellectual property, obscenity).
• Acceptable use and misuse: Computer abuse can paralyze an
organization (e.g., the Internet worm).
27 CS 501 Spring 2005
• Read the Web site.
• Begin planning for your projects and
forming project teams.
28 CS 501 Spring 2005