CS 5150 1 CS 5150 Software Engineering Lecture 1 Introduction to Software Engineering.

35
CS 5150 1 CS 5150 Software Engineering Lecture 1 Introduction to Software Engineering
  • date post

    19-Dec-2015
  • Category

    Documents

  • view

    230
  • download

    1

Transcript of CS 5150 1 CS 5150 Software Engineering Lecture 1 Introduction to Software Engineering.

CS 5150 1

CS 5150 Software Engineering

Lecture 1

Introduction to Software Engineering

CS 5150 2

About the Course

Web site: www.cs.cornell.edu/Courses/cs5150/2009sp/

Email: [email protected] (student to course team)

Instructor: William Arms

Teaching assistant: Stephen Purpura

Assistant: Corinne Russell

This course does not use CMS

CS 5150 3

Course Administration

Email

To contact members of the course team, send email to:

[email protected]

The Teaching Assistant does not have office hours, but you can schedule an appointment by email.

CS 5150 4

Academic Integrity & Professional Practice

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.

CS 5150 5

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

CS 5150 6

About the Course

Syllabus

For the schedule of lectures, assignments, and quizzes, see the Syllabus file on the course Web site. (Note that this syllabus will change as the course progresses.)

Quizzes

Four quizzes held during class times. No examinations. Best three quizzes count, but no make-up times. (See Quizzes on the Web site for details.)

Wednesday evening

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.

CS 5150 7

About the Course

Readings:

There is no course textbook. 

See the Books and Readings file on the Web site.

Technical writing:

Engineering undergraduates may be able to use the project for their technical writing requirement. Contact me if you wish to do so.

CS 5150 8

Grading (Subject to Change)

Project (group) 45%

Project (individual) 25%

Quizzes 30%

CS 5150 9

Feedback about the Group Projects

There will be four short surveys, at the time of each assignment.

Comments on the group projects

Your feedback about what is working well on the project and where you see difficulties: to help anticipate problems early.

Feedback about the contribution of team members

Your feedback about how each member of your team contributed to the work of the group: to identify those individuals who make extra effort or do not contribute fully.

CS 5150 10

Projects

The course is built around the projects

• Real projects for real clients who intend to use the software in production.

• Select your own project, any branch of software development.

• Project teams, 5 to 7 people.

• Feasibility study and plan, due February 13

• Milestones: three group presentations and reports:

either: 1st iteration, 2nd iteration, final

or: requirements, design, final

CS 5150 11

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 teams

• Make announcements at the beginning of class

CS 5150 12

Thoughts about Project Selection

Projects

• Target must be a production system (not research)

• Client should be one or two named 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, or a separate leader for each of the four assignments.

CS 5150 13

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 may cost 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.

CS 5150 14

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?

CS 5150 15

Previous Experience (Mine)

Projects where I was in charge

• Operating system, compilers, etc.

• Campus networks, routers, protocols, etc.

• Distributed computing environment, file systems, etc.

• Administrative data processing, general ledger, etc.

• Digital libraries (including current project to build Cornell Web Lab)

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 universities such as Dartmouth and Carnegie Mellon, with some time in industry.

CS 5150 16

Previous Experience (Stephen)

CS 5150 17

Future Experience

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

CS 5150 18

Viewpoints of Software Development

To be good at software development you need to understand software development from many viewpoints:

• Client and the client's organization

• Technical management

• Development team

• Users of the software

CS 5150 19

Variety of Software Products

ExamplesData processing: telephone billing, pensionsReal time: air traffic control Embedded systems: digital camera, GPS, iPodInformation systems: web sites, digital librariesSensors: weather dataSystem software: operating systems, compilersCommunications: routers, telephone switchesOffices: word processing, video

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

CS 5150 20

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

CS 5150 21

Software is Expensive

Software is expensive.

The major costs are:

• salaries (your salaries)

• organizational change

CS 5150 22

Software is Expensive

Who is paying the money?

What does that person or organization want?

• What is success?

• What is failure?

Technical people may have very different criteria of success from the people in charge of the organization.

Examples:

• Early Unix workstations, Sun and IBM

• Ship date for Dartmouth financial system

CS 5150 23

The Three-way Trade-off

Competing goals

Every software project has a trade-off between:

Functionality Resources (cost) Timeliness

What is important to the person who is paying?

Example: Console monitor

CS 5150 24

Client

Client (a.k.a. Customer)

The client provides resources and expects some product in return.

The client is often a member of the organization that is providing the money. The client's job success may depend on the success of the software project.

Client satisfaction is a primary measurement of success in a software project.

CS 5150 25

Who is the Client?

Categories of client and software product:

• Bespoke (customized) (e.g., IRS internal system)

• Customized versions of generic packages (e.g., Cornell's payroll system)

• General purpose package (e.g., Microsoft Excel, Mathematica)

• Embedded (e.g., Nokia cell phone)

• Research (e.g., Web Lab)

For each category of product:Who is the client? Who is providing the money?What does the client want?

CS 5150 26

Software is Risky

How can you manage risks?

• Much of software is never used (perhaps 50%)

• Most software development projects have major problems

CS 5150 27

Software is Risky

Risk (as seen by a Client's organization)

• Problems

Over budget Late delivery

Does not work as expected

• Never used

Does the wrong thing Needs change

Users dislike to use itetc.

CS 5150 28

Software is Risky

What is the penalty if software is:

late?over budget?does not work or full of bugs?

Examples of risk:

car anti-lock brakes (no bugs allowed)web browser in cell phone (no delays in release allowed)

Failures of software development projects can bankrupt companies

CS 5150 29

Software is Risky

Most software projects fail because the software developers build the wrong software!

• Understand what the client expects of the software

• Understand what the client's organization expects of the client

• As a developer, add technical insights and suggestions, but remember:

Client satisfaction is the primary measurement of success in a software project.

CS 5150 30

Minimizing Risk: Visibility

The people who take the responsibility must know what is happening

• Problem (as seen by a Manager)

Must rely on others for reports of progress or difficulties

• Software Developers

Have difficulty evaluating progress Optimistic

Consider reporting a waste timeetc.

You will make weekly progress reports on your projects

CS 5150 31

Minimizing Risk: Relationship with the Client

• Feasibility studies (how to decide whether to begin a project)

• Separation of requirements (what the client wants) and design (how the developers meet the requirements)

• Milestones (how the developers report progress to the clients)

• Acceptance (how the client tests that the software meets the requirements)

• Handover (ensuring that the client receives a package that can be operated and maintained over a long time period)

CS 5150 32

Teams

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

CS 5150 33

Observations about Big Projects

• A CS 5150 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.

CS 5150 34

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.

CS 5150 35

Next Steps

• Read the Web site.

• Begin planning for your projects and forming project teams.