27
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

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

Embed Size (px)

Citation preview

Page 1: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

1 CS 501 Spring 2002

CS 501: Software Engineering

Lecture 1

Introduction to Software Engineering

Page 2: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

2 CS 501 Spring 2002

About the Course

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

Email: [email protected]

Instructor: William Arms

Teaching assistants: Matthew Harris, Megha Batra, Gilbert Rivera

Assistant: Rosemary Adessa

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

Page 3: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

3 CS 501 Spring 2002

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.

Page 4: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

4 CS 501 Spring 2002

About the Course

Course text:

Pfleeger, Shari Lawrence, Software Engineering Theory and Practice, second edition.  Prentice- Hall 2001

Each week, read one or more chapters. Discussions will be held in classes on Tuesdays.

Quizzes

Four quizzes held in class on Tuesdays. No examinations.

(See syllabus on the web site for details.)

Page 5: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

5 CS 501 Spring 2002

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

Page 6: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

6 CS 501 Spring 2002

Project Selection

Read the web site

Some projects on the web site

Some projects on the web site

Suggest projects will be discussed in class on Thursday

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

Page 7: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

7 CS 501 Spring 2002

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

Page 8: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

8 CS 501 Spring 2002

Grading (Subject to Change)

Project (group) 40%

Project (individual) 20%

Discussion classes 20%

Quizzes 20%

Page 9: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

9 CS 501 Spring 2002

COM S 730  -  Seminar on Scholarly Information Architecture

This seminar course will examine on-line information systems designed for scholarly usage, covering ongoing trends and highlighting current problems and new research directions. Topics will include techniques for rendering, indexing, and linking scholarly information, and also formats and protocols for querying, accessing, mining, and transmitting the information. Examples include automated classification systems, real-time closeness measures, authoring tools, and next-generation document formats to facilitate efficient datamining and long-term archival stability. Some of the non-technical obstacles to realization of ideal systems -- sociological, legal, financial, and political -- will also be examined.

Prof. Paul Ginsparg, Physics and Computer Science

Page 10: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

10 CS 501 Spring 2002

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 your mistakes.

Page 11: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

11 CS 501 Spring 2002

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?

Page 12: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

12 CS 501 Spring 2002

Observations about Big Projects

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

Nobody comprehends more than a fraction of the project.

Page 13: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

13 CS 501 Spring 2002

Future Experience

What will you be doing one year from now?

Ten years from now?

Page 14: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

14 CS 501 Spring 2002

Previous Experience (Mine)

Programs where I wrote most of the code

Financial system (convertible bonds with sinking funds)

Linear and integer programming package

Graphical language extension

little recent programming experience

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

Page 15: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

15 CS 501 Spring 2002

Previous Experience (Mine)

Projects where I was in charge

Operating system rewrite, 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.

Page 16: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

16 CS 501 Spring 2002

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

Page 17: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

17 CS 501 Spring 2002

Course Themes

2. Large and very large systems

Software design

Software architecture Object-oriented design

Dependable systems

Reliability Verification

Legacy systems

Page 18: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

18 CS 501 Spring 2002

Course Themes

3. Risk

Problems

Over budget Late

Does not work

Never used

Does the wrong thing Needs change

Users dislike to use itetc.

Page 19: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

19 CS 501 Spring 2002

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

Page 20: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

20 CS 501 Spring 2002

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?

Page 21: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

21 CS 501 Spring 2002

Variety of Software Products

Examples?

Page 22: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

22 CS 501 Spring 2002

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

Page 23: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

23 CS 501 Spring 2002

Characteristics of All 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

Page 24: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

24 CS 501 Spring 2002

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)

Page 25: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

25 CS 501 Spring 2002

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.

Page 26: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

26 CS 501 Spring 2002

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

Page 27: 1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

27 CS 501 Spring 2002

Next Steps

• Selection of projects -- read the web site.

• Form project teams.

• Read the first Chapter of Pfleeger.