PowerPoint

advertisement
CS 501: Software Engineering
Lecture 1
Introduction to Software Engineering
1
CS 501 Spring 2003
About the Course
Web site: www.cs.cornell.edu/Courses/cs501/2003sp/
Email: cs501@cs.cornell.edu
Instructor: William Arms
Teaching assistants: Ken Hopkinson, Natalya Katsnelson
Assistant: Anat Nidar-Levi
Computer lab: Computer Science Undergraduate Lab,
Upson Hall, Room 315/317.
2
CS 501 Spring 2003
Course Administration
Sign up sheets
Please return at end of class
Email
To contact members of the course team, send email to:
cs501@cs.cornell.edu
Do not send email to the instructor or an individual TA,
except for questions to the TA assigned to your project.
3
CS 501 Spring 2003
Academic Integrity
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
attribution.
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 2003
About the Course
Syllabus
For the schedule of lectures, assignments, readings and
quizzes, see the Syllabus file on the course Web site. (Note
that this syllabus will change as the course progresses.)
Quizzes
Five quizzes held during class times. No examinations. (See
Syllabus on the Web site for details.)
Wednesday evening
One or two lectures will be given on Wednesday evenings.
Otherwise this time is available for project meetings.
5
CS 501 Spring 2003
About the Course
Readings:
Required readings. Material that will be tested in the quizzes
Background reading. Recommended material, that will not be
tested explicitly
Textbook
There is no course textbook. In the past the two following
books have been used.
Sommerville, Ian, Software Engineering, Fifth Edition.
Addison-Wesley, 1996.
Pfleeger, Shari Lawrence, Software Engineering Theory and
Practice, second edition. Prentice- Hall 2001.
6
CS 501 Spring 2003
Projects
The Course is Built Around the Projects
7
•
Real project for real client who intends to use the software in
production.
•
Select your own project, any branch of software engineering
•
Project teams, about 5 to 7 people.
•
Feasibility study and plan: due February 15
•
Group presentations and reports:
requirements, design, final
CS 501 Spring 2003
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
•
8
Advertise at the beginning of class
CS 501 Spring 2003
Thoughts about Project Selection
Projects
•
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
presentations
Team
9
•
Teams need many strengths -- organizational, technical,
writing, etc.
•
Consider appointing a leader to coordinate the effort
CS 501 Spring 2003
Grading (Subject to Change)
10
Project (group)
45%
Project (individual)
25%
Quizzes
30%
CS 501 Spring 2003
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
of dollars.
Soon you will be in charge! It may be your money!
We want you to make your mistakes now and learn from
your mistakes.
11
CS 501 Spring 2003
Variety of Software Products
Examples
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 2003
Previous Experience (Yours)
Your background
•
•
•
•
•
•
13
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?
CS 501 Spring 2003
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
14
CS 501 Spring 2003
Observations about Big Projects
15
•
A CS501 project is about 0.3 person/years. A big project is
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.
CS 501 Spring 2003
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.)
16
CS 501 Spring 2003
Future Experience
What will you be doing one year from now?
Ten years from now?
17
CS 501 Spring 2003
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.
Failures of software development projects can
bankrupt companies!
18
CS 501 Spring 2003
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!
19
CS 501 Spring 2003
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, legal, and social factors
Nobody comprehends more than a fraction of the
project!
20
CS 501 Spring 2003
Course Themes: Scale
Techniques for large and very large systems
• Software design
Software architecture
Object-oriented design
• Dependable systems
Reliability
Verification
• Legacy systems
21
CS 501 Spring 2003
Software as a Product
Software is expensive!
The major cost is your salary!
Every software project has a trade-off between:
Functionality
Resources (cost)
Timeliness
Example:
Andrew console monitor
22
CS 501 Spring 2003
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, not the
end itself.
Example: DEC's optical scanner
23
CS 501 Spring 2003
What is Good Software?
Client (a.k.a. Customer)
The client provides resources and expects some
product in return.
Client satisfaction is the primary measurement
of success.
Question: Who is the client for Microsoft Excel?
24
CS 501 Spring 2003
Categories of Product
Categories of client and software product:
• Generic (e.g., Microsoft Excel)
• Bespoke (customized) (e.g., IRS internal system)
Many systems are customized versions of generic
packages (e.g., Cornell's payroll system)
25
CS 501 Spring 2003
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 engineering
is to select appropriate methods for each project and apply them
effectively.
26
CS 501 Spring 2003
Professional Responsibility
Organizations put trust in software developers:
27
•
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).
CS 501 Spring 2003
Next Steps
28
•
Selection of projects -- read the Web site.
•
Form project teams.
CS 501 Spring 2003
Download