28
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

Embed Size (px)

Citation preview

1 CS 501 Spring 2003

CS 501: Software Engineering

Lecture 1

Introduction to Software Engineering

2 CS 501 Spring 2003

About the Course

Web site: www.cs.cornell.edu/Courses/cs501/2003sp/

Email: [email protected]

Instructor: William Arms

Teaching assistants: Ken Hopkinson, Natalya Katsnelson

Assistant: Anat Nidar-Levi

Computer lab: Computer Science Undergraduate Lab, Upson Hall, Room 315/317.

3 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:

[email protected]

Do not send email to the instructor or an individual TA, except for questions to the TA assigned to your project.

4 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.

5 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.

6 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. 

7 CS 501 Spring 2003

Projects

The Course is Built Around the Projects

• 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

8 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

• Advertise at the beginning of class

9 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

• Teams need many strengths -- organizational, technical, writing, etc.

• Consider appointing a leader to coordinate the effort

10 CS 501 Spring 2003

Grading (Subject to Change)

Project (group) 45%

Project (individual) 25%

Quizzes 30%

11 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.

12 CS 501 Spring 2003

Variety of Software Products

Examples

Real time: air traffic control Embedded systems: digital camera, GPSData processing: telephone billing, pensionsInformation systems: web sites, digital librariesSensors: weather dataSystem software: operating systems, compilersCommunications: routers, mobile telephonesOffices: word processing, video

conferencesScientific: simulations, weather forecastingGraphical: film making, design etc., etc., etc., ....

13 CS 501 Spring 2003

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?

14 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

15 CS 501 Spring 2003

Observations about Big Projects

• 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.

16 CS 501 Spring 2003

Previous Experience (Mine)

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.)

Much of my career, I was in charge of computing at Dartmouth and Carnegie Mellon, with some time in industry.

17 CS 501 Spring 2003

Future Experience

What will you be doing one year from now?

Ten years from now?

18 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 itetc.

Failures of software development projects can bankrupt companies!

19 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 timeetc.

The people who take the responsibility must know what is happening!

20 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!

21 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

22 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

23 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

24 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?

25 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)

26 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.

27 CS 501 Spring 2003

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).

28 CS 501 Spring 2003

Next Steps

• Selection of projects -- read the Web site.

• Form project teams.