eecs 481: software engineering
TRANSCRIPT
![Page 1: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/1.jpg)
EECS 481: Software Engineering
Dr. Kevin LeachSenior Research Fellowkjleach at umich.edu
ft. content from Westley Weimer
![Page 2: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/2.jpg)
Course Information
• Instructor: Kevin Leach (kjleach)
• Instructional Assistants: • Maria Marginean (mmargin) Meera Shivakumar (mshivaku)
• Course meetings: MTWR 1:30 – 3:00pm Eastern Time• Yes, four days a week! #SpringTerm• No physical meeting location!
• Discussion: MW and TR 3:00 – 4:00pm Eastern Time• Meera will host both discussion sections!
If you need to email us, please put EECS 481 in the subject line
![Page 3: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/3.jpg)
Course Information
• Instructor: Kevin Leach (kjleach)
• Instructional Assistants: • Maria Marginean (mmargin) Meera Shivakumar (mshivaku)
• Course meetings: MTWR 1:30 – 3:00pm Eastern Time• Yes, four days a week! #SpringTerm• No physical meeting location!
• Discussion: MW and TR 3:00 – 4:00pm Eastern Time• Meera will host both discussion sections!
If you need to email us, please put EECS 481 in the subject line
![Page 4: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/4.jpg)
Administrative Information
• Course website: https://dijkstra.eecs.umich.edu/kleach/eecs481
• Piazza: https://piazza.com/class/k9imx0vqlq6197
• Slack: https://eecs481sp2020.slack.com• Invite link: https://join.slack.com/t/eecs481sp2020/shared_invite/zt-e0unv2ro-
lY52ChfKtFyeDOsr_nyMFg
• Gradescope: https://www.gradescope.com/courses/124820
• Autograder.io: https://autograder.io/web/course/68
![Page 5: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/5.jpg)
Welcome to BlueJeansUniversity• Let me know if there are
audiovisual or networking issues
• You are muted on entry• You can use the chat feature to get my
attention• Use “???” or just call out• (you can also unmute yourself)
• Hmu on Slack (many of you have already joined) if I seem unaware of issues
![Page 6: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/6.jpg)
List of public corporations by market cap
(as of Sep 30,2019)
![Page 7: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/7.jpg)
Find The “Mitten” of Michigan
![Page 8: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/8.jpg)
Software is Critical: Power
![Page 9: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/9.jpg)
Software is Critical: Defense
● Quoting an Air Force lieutenant general, “The only thing you can do with an F- 22 that does not require software is take a picture of it.”
[ Crouching Dragon, Hidden Software: Software in DOD Weapon Systems (Ferguson, IEEE Software, 2001) ]
![Page 10: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/10.jpg)
Software is Critical: Driving
![Page 11: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/11.jpg)
Software is Critical: Privacy
Equifax security breach impacts 145.5 millionName, SSN, DOB, Address. Also DL# and CC#
“I didn't have to do anything fancy,” the researcher told Motherboard, explaining that the site was vulnerable to a basic “forced browsing” bug. The researcher requested anonymity out of professional concerns. “All you had to do was put in a search term and get millions of results, just instantly—in cleartext, through a web app,” they said. In total, the researcher downloaded the data of hundreds of thousands of Americans in order to show Equifax the vulnerabilities within its systems. They said they could have downloaded the data of all of Equifax's customers in 10 minutes: “I've seen a lot of bad things, but not this bad.”
![Page 12: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/12.jpg)
Software is Critical: Space
● The European Space Agency's Ariane 5 Flight 501 was destroyed40 seconds after takeoff (June 4, 1996). The US$1 billion prototype rocket self-destructed due to a bug in the on-board guidance software.
● (The bug? Bad conversion of double to short, leading to an overflow.)
![Page 13: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/13.jpg)
Software is Critical: Healthcare
![Page 14: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/14.jpg)
Software is Critical: Healthcare (!)
● Therac-25 radiation therapy machine● At least six accidents in which patients were given massive overdoses
of radiation● Because of concurrent programming errors, it sometimes gave its
patients radiation doses that were hundreds of times greater than normal, resulting in death or serious injury
![Page 15: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/15.jpg)
Software is Critical: Coronavirus
![Page 16: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/16.jpg)
What Is Software Engineering?
16
![Page 17: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/17.jpg)
What Is Software Engineering?
● The majority of industrial software engineering is not writing code.
● The dominant activities in software engineering are comprehension and maintenance.
17
![Page 18: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/18.jpg)
18[Peter Hallam. What Do Programmers Really Do Anyway? Microsoft.]
![Page 19: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/19.jpg)
19
● Hour logging of new devs (1-7 months) at Microsoft: programming is 10-20% of the time.
[Begel and Simon. Novice Software Developers, All Over Again. Computing Education Research, September 2008.
(triage)
![Page 20: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/20.jpg)
20
[Pigoski. Practical Software Maintenance: Best Practices for Managing Your SoftwareInvestment. Seacord, Plakosh, and Lewis. Modernizing Legacy Systems: Software Technologies.]
![Page 21: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/21.jpg)
21[Fry. Leveraging Light-Weight Analyses to Aid Software Maintenance. 2014 ]
![Page 22: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/22.jpg)
A Key Issue
“Half of software engineering is crap.”– Prof. Weimer
(Kevin thinks it’s more like two-thirds crap)
22
![Page 23: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/23.jpg)
Revolutionary Solution
23
![Page 24: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/24.jpg)
Class Philosophy
“Anyway, here's the 'good parts' version. S. Morgenstern wrote it. And my father read it to me. And now I give it to you. What you do with it will be of more than passing interest to us all.”– William Goldman, The Princess Bride
24
![Page 25: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/25.jpg)
This Course
• https://dijkstra.eecs.umich.edu/kleach/eecs481
• Administrivia• Assignments and Grading• Outline of Topics
25
![Page 26: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/26.jpg)
How will this help me graduate?
• Upper-Level CS/CE Technical Elective• ENGR and LSA
26
• Major Design Experience• Capstone
![Page 27: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/27.jpg)
How Hard Is This Course?
• Workload Survey is misleading!• Easier than 281 (Data Structures) or 482 (OS)• Harder than 493 (UI)
• More “time consuming” than “difficult”• See webpage quotes from former students
27
![Page 28: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/28.jpg)
Blah blah attendance(ur old, etc…)
28
![Page 29: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/29.jpg)
Attendance
• I would prefer you attend the lectures live as they are delivered
• Pay more attention synchronously• Opportunity to ask questions before
you forget
• Lecture and Discussion recordings available
• However, we will have random quizzes on some lectures• (you’ll have 24 hours to turn these in
remotely)Crede et al. “Class Attendance in College: A Meta-Analytic Review of the Relationship of Class Attendance With Grades and Student Characteristics.” Review of Educational Research, 2010. Vol. 80. DOI: 10.3102/0034654310362998
![Page 30: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/30.jpg)
Communication Resources
• Coronavirus is difficult• Use Piazza for course questions,
• also feel free to be informal or blow off steam
• Use Slack for group management and informal communication
• Study groups?• One-on-one help?• Remote game night?
![Page 31: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/31.jpg)
Assignments and Grading
• Assigned reading due before each lecture• Normal due dates even if you add late!• Attend lecture, take notes, visit forum
• Six homework assignments (~75%)• Comprehension quizzes (~10%)• Two examinations (~20%)• Extra credit?• See webpage for regrade and makeup policy
31
![Page 32: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/32.jpg)
Readings
• No expensive, outdated textbook• Assigned reading to be done before lectures
• High-level summaries (e.g., Wikipedia)• Industrial tech reports and academic research• Homework assignment instructions• Optional readings for further exploration
• Higher standard than the EECS usual
32
![Page 33: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/33.jpg)
Assignments
• Six Assignments• Test Coverage, Test Automation, Mutation Testing, Defect Detection, Debugging
Automation, Open Source GitHub Contribution
• Coding: autograder.io (as in 280 and 490)• Multiple object languages (C, Java, Python, etc.)
• Writing: gradescope
• Due dates posted in advance (now!)• Materials available in advance (now!)
33
![Page 34: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/34.jpg)
Optional Teams
• Modern industrial software engineering is almost exclusively team-based
• But this is an ULCS, not a Capstone/MDE• You will be exposed to building a large project in a team elsewhere in the
curriculum
• For most of the assignments, you may work alone or in pairs of your own choosing
• We are not responsible if your partner disappears• Use the Slack to find partners, etc.
34
![Page 35: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/35.jpg)
Discussion Sections
• Homework help (!), exam preparation, explain difficult material, answer questions
• Discussion 1 — M/W 3:00-4:00pm• Discussion 2 — T/R 3:00-4:00pm
• Attend whichever you like (or both!)• BlueJeans link on course website
35
![Page 36: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/36.jpg)
Software Engineering You Can Believe In
• Citations for strong claims (or ask on forum)• Guest Lectures
• Large companies, startups, researchers, etc.
• Readings from Industry• Material from
• Prem Devanbu• Christian Kästner• Marouane Kessentini• Claire Le Goues
36
![Page 37: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/37.jpg)
Changeups and Trivia
● “[Professors who] deliberately and consistently interspersed their lectures with … some other form of deliberate break … usually commanded a better attention span from the class, and these deliberate variations had the effect of postponing or even eliminating the occurrence of an attention break”
[ Johnstone and Percival. Attention breaks in lectures. Education in Chemistry, 13. 49-50, 1976. ]
[ Middendorf and Kalish. The “Change–up” in Lectures. TRC Newsletter, 8:1 (Fall 1996). ]
37
![Page 38: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/38.jpg)
Computer Science
● This English mathematician and writer published the first algorithm (~1842) to be carried out by a general-purpose computer and is often called the first computer programmer.
38
![Page 39: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/39.jpg)
Computer Science
● What did that first program do?
39
![Page 40: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/40.jpg)
Who Cared? What was one “killer app”?• [ Michael S. Reidy. Tides of History: Ocean Science and Her Majesty's Navy. From Chapter 1, “Tidal Prediction
After Newton and Halley”]
40
![Page 41: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/41.jpg)
“Amazon Prime” circa 1842
41
![Page 42: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/42.jpg)
Psychology:The Fundamental Attribution Error• The fundamental attribution error is that people emphasize internal characteristics when
explaining the behavior of others but external factors when explaining their own behavior.• Example: cutting someone off in traffic.
• In an experiment, subjects read essays for and against Fidel Castro and were asked to rate the pro-Castro attributes of the writers. Conditions:
• When subjects believed the writers choose freely:• Expect “pro-Castro” → positive attitude
• When subjects believed the positions were determined by a coin toss:• Expect neutral attitude on average
42
![Page 43: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/43.jpg)
Psychology:The Fundamental Attribution Error• Experimental findings:
• Even when they knew the position came from a coin toss, subjects rated pro-Castro essay writers as having a positive Castro attitude.
• “The subjects were unable to properly see the influence of the situational constraints placed upon the writers; they could not refrain from attributing sincere belief to the writers.”
• [ Jones, E. E.; Harris, V. A. (1967). "The attribution of attitudes". Journal of Experimental Social Psychology. 3 (1): 1–24. ]
• SE Implication: Teamwork. Be careful when you see defects (mine just mean I made a typo, others mean they are stupid).
43
![Page 44: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/44.jpg)
Core Course Topics
• Measurement and Risk• Process, scheduling, and information
• Quality Assurance• Code review, testing, and analysis
• Software Defects• Reporting and localizing
• Software Design• Requirements, patterns, and maintainability
• Productivity at Scale• People, teams, interviews, and brains
44
![Page 45: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/45.jpg)
Course Themes
• Software engineering is a human process
• Software engineering deals with large scales
• Software engineering requires strategic thinking
• Software engineering is constrained by reality
45
![Page 46: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/46.jpg)
Analogy: Engineering Envy
• Producing a car• Estimate costs, risks• Expected results• High quality
• Separate plan and production• Simulate before constructing• Quality assurance through measurement• Potential for automation
46
![Page 47: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/47.jpg)
Dangerous Analogy
• Producing a car• Estimate costs, risks• Expected results• High quality
• Separate plan and production• Simulate before constructing• Quality assurance through measurement• Potential for automation
47
• Software = Design = Plan• Programming is design, not
production• Production
(copying/loading a program) is automated
• Simulation is not necessary
• Quality measurement?
![Page 48: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/48.jpg)
Software Engineering
• “My favorite operational definition of engineering is 'design under constraint.' Engineering is creating, designing what can be, but it is constrained by nature, by cost, by concerns of safety, reliability, environmental impact, manufacturability, maintainability, and many other such 'ilities.'”
[Bill Wulf, NAE President, The Urgency of Engineering Education Reform, 2008]
• “[Software Engineering is] The Establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.”
[Bauer 1975, S. 524]
48
![Page 49: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/49.jpg)
Measurement Teaser
49
● What is Amdahl's Law?
● Suppose you want a program to run faster
● Suppose you want software to be created-and-sold faster
![Page 50: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/50.jpg)
Quality Assurance Teaser
• To assess quality, we can look at the source code or run the program• Testing is the dominant approach here• But not all test suites are created equal!• Statement coverage, branch coverage
• Mutation testing• Automated test generation
50
![Page 51: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/51.jpg)
Defect Teaser
• Just put in print statements• Find the line with the bug• Flail around, resubmit until it passes
• Automatic fault localization• Debugging as Hypothesis Testing
51
![Page 52: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/52.jpg)
Design Teaser
• Requirements and Specifications• How can we elicit what people actually want?
• Validation and Risk• Design for Maintainability
52
![Page 53: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/53.jpg)
Productivity Teaser
• The ratio of programming time and program performance between novices and experts has been published at up to 28:1
• Why?
• Pair Programming, Agile, etc.• How do experts and novices think?• Medical Imaging Studies
53
![Page 54: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/54.jpg)
Questions?
● You are responsible for all assignments at their listed times even if you add the course late.
● Ask an IA to add you to the Autograder and Gradescope if you aren’t in yet
● Real discussion sections start tomorrow, May 6
54
![Page 55: EECS 481: Software Engineering](https://reader034.vdocuments.net/reader034/viewer/2022042702/62655c38543585414e53eff5/html5/thumbnails/55.jpg)