1 CS 501 Spring 2008 CS 501: Software Engineering Lecture 4 Project Management.
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.
-
date post
21-Dec-2015 -
Category
Documents
-
view
214 -
download
0
Transcript of 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.
![Page 1: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/1.jpg)
1 CS 501 Spring 2007
CS 501: Software Engineering
Lecture 1
Introduction to Software Engineering
![Page 2: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/2.jpg)
2 CS 501 Spring 2007
About the Course
Web site: www.cs.cornell.edu/Courses/cs501/2007sp/
Email: [email protected] (student to course team)
Newsgroup: cornell.class.cs501 (student to student)
Instructor: William Arms
Teaching assistants: Blazej Kot, Kenny Tsung
Assistant: Sarah Birns
![Page 3: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/3.jpg)
3 CS 501 Spring 2007
Course Administration
To contact members of the course team, send email to:
Do not send email to the instructor or an individual teaching assistant, except for questions to the teaching assistant assigned to your project.
Teaching Assistants do not have office hours, but you can schedule an appointment by email.
![Page 4: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/4.jpg)
4 CS 501 Spring 2007
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 5: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/5.jpg)
5 CS 501 Spring 2007
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 may change as the course progresses.)
Quizzes
Four quizzes held during class times. No examinations. (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.
![Page 6: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/6.jpg)
6 CS 501 Spring 2007
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.
![Page 7: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/7.jpg)
7 CS 501 Spring 2007
Grading (Subject to Change)
Project (group) 45%
Project (individual) 25%
Quizzes 30%
![Page 8: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/8.jpg)
8 CS 501 Spring 2007
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.
![Page 9: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/9.jpg)
9 CS 501 Spring 2007
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 development
• Project teams, 5 to 7 people.
• Feasibility study and plan: due February 16
• Three group presentations and reports:
either: requirements, design, finalor: 1st iteration, 2nd iteration, final
The class on Thursday will discuss the projects.
![Page 10: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/10.jpg)
10 CS 501 Spring 2007
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
• Post message on newsgroup cornell.class.cs501
• Advertise at the beginning of class
![Page 11: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/11.jpg)
11 CS 501 Spring 2007
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 12: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/12.jpg)
12 CS 501 Spring 2007
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.
![Page 13: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/13.jpg)
13 CS 501 Spring 2007
Variety of Software Products
Examples
Real time: air traffic control Embedded systems: digital camera, GPS, iPodData processing: telephone billing, pensionsInformation 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., ....
![Page 14: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/14.jpg)
14 CS 501 Spring 2007
Software is Expensive
Software is expensive.
The major costs are salaries (your salaries)!
Every software project has a trade-off between:
Functionality Resources (cost) Timeliness
Example: Console monitor
![Page 15: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/15.jpg)
15 CS 501 Spring 2007
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 Windows 95 and Vista
![Page 16: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/16.jpg)
16 CS 501 Spring 2007
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 depends on the success of the software project.
Client satisfaction is a primary measurement of success in a software project.
![Page 17: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/17.jpg)
17 CS 501 Spring 2007
Clients: Categories of Software Product
Categories of client and software product:
• Embedded (e.g., Motorola cell phone)
• Generic (e.g., Microsoft Excel)
• Packages (e.g., Mathematica)
• Customized versions of generic packages (e.g., Cornell's payroll system)
• Bespoke (customized) (e.g., IRS internal system)
• Demonstration, prototype, research, ...
For each category of product:Who is the client? Who is providing the money?What do they want?
![Page 18: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/18.jpg)
18 CS 501 Spring 2007
Software is Risky
How can you manage risks?
• Much of software is never used (perhaps 50%)
• Most software development projects have major problems
What is the penalty if software is:
late?over budget?does not work or full of bugs?
Examples:
car anti-lock brakes (no bugs allowed)web browser in cell phone (no delays in release allowed)
![Page 19: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/19.jpg)
19 CS 501 Spring 2007
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
• Add technical insights and suggestions, but remember:
Client satisfaction is the primary measurement of success in a software project.
![Page 20: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/20.jpg)
20 CS 501 Spring 2007
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
![Page 21: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/21.jpg)
21 CS 501 Spring 2007
Observations about Big Projects
• A CS 501 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.
![Page 22: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/22.jpg)
22 CS 501 Spring 2007
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 23: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/23.jpg)
23 CS 501 Spring 2007
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.
![Page 24: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/24.jpg)
24 CS 501 Spring 2007
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 large 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 Dartmouth and Carnegie Mellon, with some time in industry.
![Page 25: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/25.jpg)
25 CS 501 Spring 2007
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
![Page 26: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/26.jpg)
26 CS 501 Spring 2007
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
You will make weekly progress reports on your projects
![Page 27: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/27.jpg)
27 CS 501 Spring 2007
Course Themes: Process
Process in Large Software Projects
• Software as a product Quality, performance, usability
Maintenance, evolution
• Separation of requirements and design
• Project management
Personnel management Economic, legal, and social factors• Development processes
Sequential (modified waterfall)Iterative refinement
Nobody comprehends more than a fraction of the project
![Page 28: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/28.jpg)
28 CS 501 Spring 2007
Course Themes: Scale
Large and very large systems
• Software design
Software architecture Object-oriented design
• Dependable systems
Reliability Verification
• Legacy systems
![Page 29: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/29.jpg)
29 CS 501 Spring 2007
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.
![Page 30: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/30.jpg)
30 CS 501 Spring 2007
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.
![Page 31: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/31.jpg)
31 CS 501 Spring 2007
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 32: 1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 1 Introduction to Software Engineering.](https://reader035.fdocuments.us/reader035/viewer/2022062516/56649d575503460f94a35d95/html5/thumbnails/32.jpg)
32 CS 501 Spring 2007
Next Steps
• Read the Web site.
• Begin planning for your projects and forming project teams.