CMPT276-cmpt276软件工程代写
时间:2023-11-04
Dr. Saba Alimadadi
CMPT 276: Intro to
Software Engineering
Lecture 1: Introduction
Thanks go to Dr. Frank Tip for allowing the use of his materials.
1
CMPT 276: Introduction to Software Engineering
❖ This is Section D100 (instructor: Dr. Saba Alimadadi)
❖ Tue. 1:30-2:20 PM, Thu. 12:30-2:20 PM
❖ Office hours: TBA
❖ Include “CMPT276” in the subject of your emails
❖ TAs: Nima Modares Gorji (nima_modares_gorji@sfu.ca), Hossein
Soltanloo (hossein_soltanloo@sfu.ca). Office hours: TBA
❖ Other sections taught by Dr. Pearce and P. Rajabi
❖ The sections are not synchronized
2
Famous Software Disasters
❖ NASA Mars Climate Orbiter (1999)
❖ “For nine months, the Mars Climate Orbiter was speeding through space and speaking to
NASA in metric. But the engineers on the ground were replying in non-metric English. It
was a mathematical mismatch that was not caught until after the $125-million spacecraft, a
key part of NASA’s Mars exploration program, was sent crashing too low and too fast into
the Martian atmosphere. The craft has not been heard from since.”
❖ https://mars.jpl.nasa.gov/msp98/news/mco991110.html
❖ Medical Machine Kills (1985)
❖ Canada’s Therac-25 radiation therapy machine malfunctioned and delivered lethal radiation
doses to patients. Because of a subtle bug called a race condition, a technician could
accidentally configure Therac-25 so the electron beam would fire in high-power mode
without the proper patient shielding. Three people died, three people were critically injured.
3
4Dr. Kevin Ryan
We should teach the students:
professional ethics, whistle-blowing, career management, and personal growth and values.
Glass’s Law
prime source of project failures.
5
Glass’s Law
prime source of project failures.
6
Requirement deficiencies are the
Chaos Report
Source: https://www.standishgroup.com/sample_research_files/CHAOSReport2015-Final.pdf
7
Questions
❖ Why does it take so long to get software finished?
8
Questions
❖ Why does it take so long to get software finished?
❖ Why are the development costs so high?
9
Questions
❖ Why does it take so long to get software finished?
❖ Why are the development costs so high?
❖ Why can’t we find all errors?
10
Questions
❖ Why does it take so long to get software finished?
❖ Why are the development costs so high?
❖ Why can’t we find all errors?
❖ Why do we spend so much time and effort maintaining
existing programs?
11
Questions
❖ Why does it take so long to get software finished?
❖ Why are the development costs so high?
❖ Why can’t we find all errors?
❖ Why do we spend so much time and effort maintaining
existing programs?
❖ Why is it difficult to measure progress?
12
How hard can it be?
13
What’s the lifetime of your work?
❖ Look at engineering and the lifetime of many objects
❖ How many bridges, roads, and buildings are 10’s, 100’s or
possibly 1000 years old?
❖ Can they be renovated, updated, or changed?
❖ Think about software.
❖ How much software lasts more than five years? 10 years? 20?
❖ What is the common opinion of these systems?
❖ Are these systems usually easily extended, updated, or renovated
– directly and predictably?
14
What is success?
15
What is success?
❖ Functionality
❖ The system has to do what it needs to do.
❖ Usability
❖ The users of the system need to be able to use it effectively and efficiently.
❖ Maintainability
❖ Changes or repairs must be able to be made directly and implemented without untoward
impacts
❖ Efficiency
❖ The system should make effective use of resources
❖ Dependability/Reliability/Resiliency
❖ The system should be available and remain working for a given period of time. When
faced with failures or bad data, performance should not be impacted, or at least degrade
gracefully.
16
CMPT 276: Course Objectives
❖ Developing skills that are necessary for successful
software development
❖ writing good code is a necessary condition
❖ but it’s not enough to guarantee success
17
Course Logistics
❖ topics
❖ project
❖ assignments
❖ 2 midterms + pop-up quizzes
❖ reading assignments
❖ grading
❖ other logistics
18
Topics
❖ Version Control using git
❖ Software Engineering Life Cycle
❖ Requirements
❖ Software Design using the Unified Modeling Language (UML)
❖ Design Principles
❖ Design Patterns
❖ User Interface Design
❖ Testing (Functional, Structural, Strategies)
❖ Debugging
❖ Refactoring, Code Review
❖ Advanced Topics and Guest Lectures
19
Approach
❖ first half of the course: emphasis on skills development
❖ refreshing/remediating familiarity with Java
❖ building up skills needed for the project
❖ homeworks focused on skills development
❖ second half of the course: emphasis on the team project
❖ lectures focused on refactoring/debugging/testing
❖ progress milestones/presentations
❖ code reviews
❖ final presentations
20
21
Course Project
❖ SW Engineering is best learned by doing
❖ Therefore, we’ll do a large project that is designed to provide experience
with many aspects of software development:
❖ Requirements Gathering & Use Cases
❖ OO Design using UML
❖ Implementation
❖ Testing
❖ Code review and Refactoring
22
❖ The course project will be done in teams of 4 people
❖ Reflects realistic development practice:
❖ requirements intentionally somewhat vague
❖ you don’t get to pick your team-mates
❖ you don’t get to pick your implementation language — it will be Java
❖ must use prescribed tools for version control, issue tracking, …
❖ Final presentations
❖ Confidential peer evaluation by teammates, which affect your
individual marks (along with git contributions).
Course Project
23
Textbook and Reading Materials
❖ Textbook: “Software Engineering: A Practicioner’s
Approach” by Pressman and Maxim
❖ also available as e-book
❖ also some reading from other sources:
❖ additional resources on various topics, provided by the instructor
24