CS 501: Software Engineering Fall 2000 Lecture 1 Introduction to Software Engineering Course Administration Web site: www.cs.cornell.edu/cs501-fa00 Instructor: William Arms Teaching assistants: Ken Hopkinson, Amy Siu Assistant:

Download Report

Transcript CS 501: Software Engineering Fall 2000 Lecture 1 Introduction to Software Engineering Course Administration Web site: www.cs.cornell.edu/cs501-fa00 Instructor: William Arms Teaching assistants: Ken Hopkinson, Amy Siu Assistant:

CS 501: Software Engineering
Fall 2000
Lecture 1
Introduction to Software Engineering
Course Administration
Web site: www.cs.cornell.edu/cs501-fa00
Instructor: William Arms
Teaching assistants: Ken Hopkinson, Amy Siu
Assistant: Rosemary Adessa
Computer lab: Computer Science Undergraduate Lab,
Upson Hall, Room 315/317.
Code of Conduct
 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.
Projects
 Project teams, about 5 to 7 people.
 Select your own project, any branch of software engineering
 Real project for real client who intends to use the software in
production.
 Feasibility study and plan: September 13
 Presentations:
requirements
design
final
Project Selection
 Some suggested projects on the web site
 Recitation section on Monday to suggest projects
Contact potential clients:
 Gain idea of their expectations
 Estimate scope and complexity of the project
 Discuss business decisions
Assemble project team
 Advertise on the web site
Previous Experience
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?
My background
Future Experience
What will you be doing one year from now?
Ten years from now?
Course Themes
1. Leadership of 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
Course Themes
2. Large and very large systems
 Software design
Software architecture
Object-oriented design
 Dependable systems
Reliability
Verification
 Legacy systems
Characteristics of Software Products
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
Software as a Product
Software is expensive!!
Every software project has a trade-off between:
Functionality
Resources (cost)
Timeliness
Example:
Andrew console monitor
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?
Variety of Software Products
Examples?
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)
Variety of Software Products
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.
Professional Responsibility
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).
Next Steps
 Selection of projects
advertise -- send message to TAs and they will post
on web site
 Recitation section Monday at 7:30