1 / 32

CS 501: Software Engineering

CS 501: Software Engineering. Lecture 1 Introduction to Software Engineering. About the Course. Web site: www.cs.cornell.edu/Courses/cs501/2007sp/ Email: cs501-l@lists.cs.cornell.edu (student to course team) Newsgroup: cornell.class.cs501 (student to student) Instructor: William Arms

Download Presentation

CS 501: Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 501: Software Engineering Lecture 1 Introduction to Software Engineering

  2. About the Course Web site:www.cs.cornell.edu/Courses/cs501/2007sp/ Email: cs501-l@lists.cs.cornell.edu (student to course team) Newsgroup: cornell.class.cs501 (student to student) Instructor: William Arms Teaching assistants: Blazej Kot, Kenny Tsung Assistant: Sarah Birns

  3. Course Administration Email To contact members of the course team, send email to: cs501-l@lists.cs.cornell.edu 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.

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

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

  7. Grading (Subject to Change) Project (group) 45% Project (individual) 25% Quizzes 30%

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

  9. 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, final or: 1st iteration, 2nd iteration, final The class on Thursday will discuss the projects.

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

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

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

  13. Variety of Software Products Examples Real time: air traffic control Embedded systems: digital camera, GPS, iPod Data processing: telephone billing, pensions Information systems: web sites, digital libraries Sensors: weather data System software: operating systems, compilers Communications: routers, telephone switches Offices: word processing, video conferences Scientific: simulations, weather forecasting Graphical: film making, design etc., etc., etc., ....

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

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

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

  17. 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?

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

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

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

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

  22. 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?

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

  24. Previous Experience (Mine) Much of my career, I was in charge of computing at Dartmouth and Carnegie Mellon, with some time in industry. 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.)

  25. 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 it etc. Failures of software development projects can bankrupt companies

  26. 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 time etc. The people who take the responsibility must know what is happening You will make weekly progress reports on your projects

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

  28. Course Themes: Scale Large and very large systems • Software design Software architecture Object-oriented design • Dependable systems Reliability Verification • Legacy systems

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

  30. 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 craftof software development is to select appropriate methods for each project and apply them effectively.

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

  32. Next Steps • Read the Web site. • Begin planning for your projects and forming project teams.

More Related