SOEN6461 - Software Design Methodologies Software Process and - - PowerPoint PPT Presentation

soen6461 software design methodologies software process
SMART_READER_LITE
LIVE PREVIEW

SOEN6461 - Software Design Methodologies Software Process and - - PowerPoint PPT Presentation

SOEN6461 - Software Design Methodologies Software Process and Agile Modeling Winter 2019 Fabio Petrillo Dpartement d'informatique et mathmatique Invited Lecturer This work is licensed under a Creative Commons Attribution-NonCommercial-


slide-1
SLIDE 1

SOEN6461 - Software Design Methodologies Software Process and Agile Modeling

Winter 2019

Fabio Petrillo Invited Lecturer

This work is licensed under a Creative Commons Attribution-NonCommercial- ShareAlike 3.0 Unported License

Département d'informatique et mathématique

slide-2
SLIDE 2

Software Process

slide-3
SLIDE 3

Why study software process?

“The main reason for using software processes and software process models as part of IT governance is that they can help to increase the predictability of processes and their results, and in particular the transparency of the work done.” [Kneuper, 2018]

slide-4
SLIDE 4
slide-5
SLIDE 5

Therac-25 Accidents

  • Radiation therapy machine
  • Companies

○ Atomic Energy of Canada Limited ○ CGR (France)

  • Failure

○ Beta radiation overdose - 100 times the normal dose ○ 1985 - 1887

  • Impact

○ the death of at least three patients ○ several injuries

slide-6
SLIDE 6

Therac-25 Accidents - Causes

  • Software complex race condition

○ https://devopedia.org/race-condition-software ○ https://stackoverflow.com/questions/34510/what-is-a-race-condition

  • AECL did not have the software code independently reviewed
  • AECL had never tested the combination of software and hardware until it

was assembled at the hospital

  • Developed by a single person using PDP11 assembly
  • Several years of development!
  • Lack of documentation and software test plan
  • The investigators could not reproduce the fault condition!

Leveson, Nancy G.; Turner, Clark S. (July 1993). "An Investigation of the Therac-25 Accidents". IEEE Computer. 26 (7): 18–41.

slide-7
SLIDE 7
slide-8
SLIDE 8
slide-9
SLIDE 9

HealthCare.gov Application Crash (“ObamaCare”)

  • USA Federal Health Insurance
  • Company

○ CGI Group Inc. (Montreal/Canada) ○ CGI was a key contractor

  • Failure

○ problematic launch - application poor performance ○ 2013

  • Impact

○ The program does not achieve its objective of facilitating health insurance services for millions of Americans ○ American election results??? Venkatesh, V., Hoehle, H., Aljafari, R. (2014). "A usability evaluation of the Obamacare website". Government Information Quarterly. Volume 31, Issue 4, 2014, Pages 669-680

slide-10
SLIDE 10

“ObamaCare” Application Crash - Causes

  • integration/infrastructure issues
  • Lots of subcontractors (47!!!)

○ who was ultimately responsible???

  • ~60k user sim -> 250k (naïve)
  • Large requirements
  • “Big Bang” approach
  • Huge pression
  • Lack of integration testing

“We didn’t see full end-to-end testing until a couple of days leading up to the launch”

http://adage.com/article/digitalnext/lessons-user-experience-healthcare-gov/244933 http://www.nytimes.com/2013/10/25/us/politics/bipartisan-dismay-over-health-plan-woes-at-house-hearing.html

slide-11
SLIDE 11

Can we “manufacture” a software?

slide-12
SLIDE 12

Can we “manufacture” a software?

No (not yet)!

Software is developed or engineered, it is not manufactured in the classical sense.

slide-13
SLIDE 13

Is there a “Software Factory”?

slide-14
SLIDE 14

Is there a “Software Factory”?

  • Source code, as high-level languages (as COBOL, C, Rust, or Python), is a

design artefact!

  • The compiler is a true “software factory”!
  • Compiler -> automation
  • When you write code, we are doing a design task.
  • Programming is design, not production.
slide-15
SLIDE 15

What is a Death March project?

slide-16
SLIDE 16
slide-17
SLIDE 17
slide-18
SLIDE 18

Death March Defined

A Death March is a project is destined to fail In most software death march projects, this usually means one or more of the following constraints has been imposed:

  • The schedule has been compressed to less than half the amount of time

estimated by a rational estimating process

  • The budget and associated resources have been cut in half
  • The staff has been reduced to less than half the number of people that

would normally be assigned to a project of this size and scope

  • The functionality, features, performance requirements, or other technical

aspects of the project are twice what they would be under normal circumstances and/or discussed previously (change of requirements)

slide-19
SLIDE 19

Why it happens?

slide-20
SLIDE 20

Politics, politics, politics.

slide-21
SLIDE 21

Death March - Why it happens (more)? (1997)

  • Naive promises made by marketing, senior executives, naive project

managers, etc.

  • Naive optimism of youth: "We can do it over the weekend!"
  • The "start-up" mentality of fledgling, entrepreneurial companies.
  • The "Marine Corps" mentality: Real programmers don't need sleep
  • Intense competition caused by globalization of markets.
  • Intense competition caused by the appearance of new technologies.
  • Intense pressure caused by unexpected government regulations.
  • Unexpected and/or unplanned crises — e.g., your hardware/software vendor

just went bankrupt, or your three best programmers just died of Bubonic Plague.

slide-22
SLIDE 22

So, how to address that problems? What could we do?

slide-23
SLIDE 23

There is no way to rescue Death March Projects! Quit as quick as possible, if it is possible.

slide-24
SLIDE 24

Software Process

  • A structured set of activities required to develop a software system.
  • A software process model is an abstract representation of a process. It

presents a description of a process from some particular perspective.

  • Process -> we usually talk about the activities or tasks
slide-25
SLIDE 25

Main (traditional) software process activities

  • Software specification, where customers and engineers define the

software that is to be produced and the constraints on its operation.

  • Software development, where the software is designed and

programmed.

  • Software validation, where the software is checked to ensure that it is

what the customer requires.

  • Software evolution, where the software is modified to reflect changing

customer and market requirements.

slide-26
SLIDE 26

Software Process

  • Process descriptions may also include:

○ Products, which are the outcomes of a process activity; ○ Roles, which reflect the responsibilities of the people involved in the process; ○ Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced.

  • Plan-driven or prescriptive process. All of the process activities are

planned in advance and progress is measured against this plan.

  • Agile processes. Planning is incremental and it embrace an evolutive

approach to reflect changing customer requirements.

  • In practice, most practical processes include elements of both plan-driven and

agile approaches.

  • There are no right or wrong software processes.
slide-27
SLIDE 27
slide-28
SLIDE 28

Software process models

  • Waterfall or Sequential model

○ Plan-drive model. Separate and distinct phases of specification, development, testing, validation, delivery.

  • Incremental or Evolutionary model

○ Specification, development and validation are interleaved. May be plan-driven or agile.

  • Integration and configuration model

○ The system is assembled from existing configurable components.

  • In practice, most large systems are developed using a process that

incorporates elements from all of these models.

slide-29
SLIDE 29

The waterfall model

slide-30
SLIDE 30

The waterfall model (stage gates)

http://solovatsoft.com/waterfall-model-software-development.html

slide-31
SLIDE 31

Results from Bianchi at. all (2018) show that the adoption of Stage-Gate principles is negatively associated with speed and cost performance.

Mattia Bianchi, Giacomo Marzi, Massimiliano Guerini, Agile, Stage-Gate and their combination: Exploring how they relate to performance in software development, Journal of Business Research, 2018, http://www.sciencedirect.com/science/article/pii/S0148296318302273

slide-32
SLIDE 32

V Model

https://www.360logica.com/blog/basic-characteristic-of-lifecycle-process-models/

slide-33
SLIDE 33

Advantages in Waterfall Development

Petersen K., Wohlin C., Baca D. (2009) The Waterfall Model in Large-Scale Development. In: Bomarius F., Oivo M., Jaring P., Abrahamsson

  • P. (eds) Product-Focused Software Process Improvement. PROFES 2009. Lecture Notes in Business Information Processing, vol 32. Springer,

Berlin, Heidelberg

  • Easy to understand
  • Predictable
  • Pays attention to planning the architecture and structure of the software system
slide-34
SLIDE 34

Issues in Waterfall Development (State of the Art)

Petersen K., Wohlin C., Baca D. (2009) The Waterfall Model in Large-Scale Development. In: Bomarius F., Oivo M., Jaring P., Abrahamsson

  • P. (eds) Product-Focused Software Process Improvement. PROFES 2009. Lecture Notes in Business Information Processing, vol 32. Springer,

Berlin, Heidelberg

  • High effort and costs for writing and approving documents for each development phase.
  • Extremely hard to respond to changes.
  • When iterating a phase the iteration takes considerable effort for rework.
  • When the system is put to use the customer discovers problems of early phases very late and

system does not reflect current requirements.

  • Problems of finished phases are left for later phases to solve.
  • Management of a large scope of requirements that have to be baselined to continue with

development.

  • Big-bang integration and test of the whole system in the end of the project can lead to unexpected

quality problems, high costs, and schedule overrun.

  • Lack of opportunity for customer to provide feedback on the system.
  • The waterfall model increases lead-time due to that large chunks of software artifacts have to be

approved at each gate.

slide-35
SLIDE 35

What is the main drawback

  • n the Waterfall model?
slide-36
SLIDE 36

What is the main drawback

  • n the Waterfall model?

The main drawback of the waterfall model is the

difficulty of accommodating changes after the

process is underway. In principle, a phase has to be complete before moving onto the next phase.

slide-37
SLIDE 37

Incremental development

slide-38
SLIDE 38

Incremental development

slide-39
SLIDE 39

Spiral Model

slide-40
SLIDE 40

Advantages of Incremental development

  • The cost of accommodating changing customer requirements is reduced.

○ The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.

  • It is easier to get customer feedback on the development work that has been done.

○ Customers can comment on demonstrations of the software and see how much has been implemented.

  • More rapid delivery and deployment of useful software to the customer is possible.

○ Customers are able to use and gain value from the software earlier than is possible with a waterfall process.

slide-41
SLIDE 41

Incremental development problems (classical vision)

  • The process is not visible.
  • System structure tends to degrade as new increments are added.

○ Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure. Incorporating further software changes becomes increasingly difficult and costly.

  • It is a classical vision -> answer: agile process!
slide-42
SLIDE 42

Rational Unified Process (RUP)

  • Rational Software Corporation
  • Rational Objectory Process (ROP) in 1996
  • Use-case driven, architecture-centric, roles, tasks
  • Iterative and incremental
  • Unified Modeling Language (UML)
  • Six “engineering disciplines”

Business modelling

Requirements

Analysis and design

Implementation

Test

Deployment

slide-43
SLIDE 43

What is the main issue on plan-based models?

slide-44
SLIDE 44

To use the same approach for any kind of software project!!!

What is the main issue on plan-based models?

slide-45
SLIDE 45

No Silver Bullet!

(Brooks, 1975)

slide-46
SLIDE 46

Software is a wicked problem

“A wicked problem is a problem that is difficult or impossible to solve because of incomplete, contradictory, and changing requirements that are often difficult to recognize. ...not all hard-to-solve problems are wicked, only those with an indeterminate scope and scale. ”

Complex interdependencies!

https://www.wickedproblems.com/1_wicked_problems.php

slide-47
SLIDE 47

Agile Process

slide-48
SLIDE 48
slide-49
SLIDE 49
slide-50
SLIDE 50

Agile Process

  • The aim of agile methods is to reduce overheads in the software process

and to be able to respond quickly to changing requirements without excessive rework.

  • Deliver value to customers/users frequently

○ Satisfy the customer through early and continuous delivery of valuable software ○ Working software is the primary measure of progress

  • Continuously sustainable pace
  • Constant feedback
  • Welcoming changes

○ Uncertain world ○ Liquid modernity - Zygmunt Bauman ○ The End of Certainty - Ilya Prigogine

Agile (or Agility) is an evolutionary approach!

slide-51
SLIDE 51

Agile Process

  • Is driven by customer descriptions of what is

required (scenarios or user stories)

  • Recognizes that plans are short-lived
  • Develops software iteratively with a heavy

emphasis on construction activities

  • Delivers multiple ‘software increments’
  • Adapts as changes occur
slide-52
SLIDE 52

Agile Process

  • the process molds to the needs of the people

and team, not the other way around

  • people on an agile team must be

○ Competence ○ Common focus and collaboration ○ Decision-making ability ○ Fuzzy problem-solving ability ○ Mutual trust and respect ○ Self-organization

slide-53
SLIDE 53

Agile is evolving what fits together

slide-54
SLIDE 54
slide-55
SLIDE 55
slide-56
SLIDE 56
slide-57
SLIDE 57
slide-58
SLIDE 58

Lean software development

  • 1. Eliminate waste
  • 2. Amplify learning
  • 3. Decide as late as possible
  • 4. Deliver as fast as possible
  • 5. Empower the team
  • 6. Build integrity in
  • 7. See the whole
slide-59
SLIDE 59

Lean Kanban and Work-In-Progress

slide-60
SLIDE 60

Is Quality a variable in Agile context?

slide-61
SLIDE 61
slide-62
SLIDE 62

Is Quality a variable? Quality is not a variable in Agile context! Scope, Time and Resources are variables.

slide-63
SLIDE 63
slide-64
SLIDE 64

Problems with agile methods

  • It can be difficult to keep the interest of customers who

are involved in the process.

  • Team members may be unsuited to the intense

involvement that characterises agile methods.

  • Prioritising changes can be difficult where there are

multiple stakeholders (politics!!!).

  • Maintaining simplicity requires extra work.
  • Contracts may be a problem as with other approaches to

iterative development.

slide-65
SLIDE 65

Is Agile better than Incremental Process?

  • Following results from Tarhan and Yilmaz [2014]
  • Comparison demonstrated that the Agile Process had performed better than

the Incremental Process in terms of

○ productivity (79%) ○ defect density (57%) ○ defect resolution effort ratio (26%) ○ test Execution V&V effectiveness (21%), and ○ effort prediction capability (4%).

  • These results indicated that development performance and product quality

achieved by following the Agile Process was superior to those achieved by following the Incremental Process (to short term projects [research scope])

Ayca, Seda Gunes Yilmaz, Systematic analyses and comparison of development performance and product quality

  • f Incremental Process and Agile Process, Information and Software Technology, Volume 56, Issue 5, 2014,

Pages 477-494, http://www.sciencedirect.com/science/article/pii/S0950584913002310

slide-66
SLIDE 66

Large-Scale Agile Development

  • Agile methods were originally developed for small
  • rganizations
  • Current agile approaches do not provide good blueprints

for what a scaled agile organization

  • Results show that the most significant reasons for

bottlenecks are related to requirements engineering. (Our next course…)

Maria Paasivaara, Benjamin Behm, Casper Lassenius,Minna Hallikainen, Large-scale agile transformation at Ericsson: a case study, Empir Software Eng (2018) https://doi.org/10.1007/s10664-017-9555-8 Kai Petersen, Mahvish Khurum, Lefteris Angelis, Reasons for bottlenecks in very large-scale system of systems development, Information and Software Technology,Volume 56, Issue 10, 2014, Pages 1403-1420, http://www.sciencedirect.com/science/article/pii/S0950584914001074

slide-67
SLIDE 67

Trends -> DevOps

67 https://www.enterpriseirregulars.com/116202/race-pipeline-atlassian-aint-playin-introducing-devops-marketplace/

slide-68
SLIDE 68

Trends -> Scaling Agile the Spotify

https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/ https://blog.crisp.se/wp-content/uploads/2012/11/SpotifyScaling.pdf http://usir.salford.ac.uk/48199/1/camera%20ready%20submitted.pdf

slide-69
SLIDE 69

The software development methodologies used

Survey results indicate that although agile methodologies are more prevalent than 10 years ago, traditional methodologies are still popular.

  • L. R. Vijayasarathy and C. W. Butler, "Choice of Software Development Methodologies: Do Organizational, Project, and Team

Characteristics Matter?," in IEEE Software, vol. 33, no. 5, pp. 86-94, Sept.-Oct. 2016. http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7006383&isnumber=7548893

slide-70
SLIDE 70

So, what process should I use?

Collaboration

Strictly plan-driven Agile/open source Low High

slide-71
SLIDE 71

The software development process in reality

slide-72
SLIDE 72

72

http://agilemodeling.com/

slide-73
SLIDE 73

Agile Modeling

  • Agile principles and practices applying for modeling
  • Following Ambler (2002):

○ Agile Modeling (AM) is a chaordic, practice-based methodology for effective modeling and documentation of software-based systems.

slide-74
SLIDE 74

Agile Modeling Values and Principles

  • Communication
  • Simplicity (Keep it simple)

○ Don’t “What if” Yourself to Death ○ Avoid applying complex patterns too soon ○ Avoid over-architecting your system to support potential future requirements ○ Avoid to develop a complex infrastructure ○ To develop a complex infrastructure

  • Feedback

○ Develop the model as a team ○ Review the model with your target audience ○ Implement the model

slide-75
SLIDE 75

Agile Modeling Values and Principles

  • Software Is Your Primary Goal: we’re not documentation developers, or

even model developers; we’re software developers.

  • Travel Light: create just enough models and documentation to get by.
  • Model with a Purpose
  • Maximize Stakeholder Investment: System Documentation is a Business

Decision, Not a Technical One

  • Content is more important than representation

○ You don’t need to jump into using a complicated CASE tool right away

slide-76
SLIDE 76

Agile Modeling Values and Principles

  • Multiple Models
  • Each artifact has an objective/semantic/strengths/weaknesses

○ Use the right tool for the job ○ No single model is sufficient for your modeling needs. ○ Start by learning a subset of artifacts ○ The UML is not complete ○ Understandability Is More Important than Following Standards

  • Create Several Models in Parallel
  • Iterate to Another Artifact
  • Use the simplest tools
  • Model with Others

○ Active Stakeholder Participation during modeling sessions ○ Display Models Publicly

  • Collective Ownership -> Display Models Publicly
slide-77
SLIDE 77
  • Modeling or documenting?

Agile modeling

77

slide-78
SLIDE 78

Agile modeling - modeling

  • Modeling or documenting?
  • Modeling = to make models to understand a problem
  • Comprehension
  • Several levels of abstraction
  • Sketch
  • “Perishable”
  • Take a picture and throw in the trash

78

slide-79
SLIDE 79
  • Modeling or documenting?
  • Documenting = to make artefacts for communication
  • Describe and store/registry decisions
  • For “perinity” or “posterity”
  • More details
  • More structured documents (templates)
  • “Formal” modeling notation -> UML, SysML, Archimate, …
  • Documents aren’t always models

○ Ex.: User manual is not a model.

  • Maximize stakeholder investment
  • Travel light!

Agile modeling - documenting

79

slide-80
SLIDE 80

Agile modeling session

80

slide-81
SLIDE 81

Agile Modeling Session

81

slide-82
SLIDE 82

Agile Modeling

82

  • Make essential modeling
  • Whiteboard
  • Process -> Requirements -> Architecture
  • UML notation as reference -> simple diagrams
  • Make several models simultaneously
  • Diagrams work together (views)
  • Decide -> modeling or documenting?
slide-83
SLIDE 83

Agility beyond the hype Experiences and lessons learned from the trenches

slide-84
SLIDE 84

Agile is not new...

slide-85
SLIDE 85

~ 20 years!

slide-86
SLIDE 86

Agile is trending...

slide-87
SLIDE 87
slide-88
SLIDE 88

Agile is buzzword...

slide-89
SLIDE 89
slide-90
SLIDE 90

Agile is a business...

slide-91
SLIDE 91
slide-92
SLIDE 92

But finally, what is agility in in practice?

slide-93
SLIDE 93
slide-94
SLIDE 94

I started working at very young age ...

slide-95
SLIDE 95

Software Architect Developer System Administrator Agile Coach Manager Agile team leader DevOps Engineers Data Scientist Researcher Professor Software Engineer R&D Engineers

slide-96
SLIDE 96
slide-97
SLIDE 97

So, I’m here for sharing

some stories and ...

slide-98
SLIDE 98
slide-99
SLIDE 99

Lesson #1 Is impossible possible?

slide-100
SLIDE 100

When is impossible possible?

slide-101
SLIDE 101
  • Integrated Project Systems
  • Team experience: 2 years to do one system.
  • Goal 5 months to do 3 more!
  • Deadline Jan 2th, 2002.
  • Thousands of specifications (use cases was

not introduced yet…)

  • I was a newbie (fresh meat in the company)
slide-102
SLIDE 102
slide-103
SLIDE 103

Yes, it is impossible, but on what paradigm???

slide-104
SLIDE 104

We changed the paradigm!

slide-105
SLIDE 105

Delphi OO Visual Form Inheritance!

slide-106
SLIDE 106

Lesson #1 - change the paradigm to do “impossible” things!

slide-107
SLIDE 107

sds

Lesson #2 Do a job well, ever!

slide-108
SLIDE 108
slide-109
SLIDE 109

Lesson #2 - if you do something wrong, but it “works”, it will stay forever!

Do a job well, ever!

slide-110
SLIDE 110

Lesson #3 Detached from your babies!

slide-111
SLIDE 111
slide-112
SLIDE 112
  • Integrated Project Systems
  • Deadline Jan 2th, 2002.
  • Thousands of specifications (use cases was

not introduced yet…)

  • Thousands of validated screen

prototypes!

slide-113
SLIDE 113

Delphi OO Visual Form Inheritance!

slide-114
SLIDE 114

How the analysts saw my proposal?

slide-115
SLIDE 115

We applied the change and..

slide-116
SLIDE 116

… what the clients said about the new screens?

slide-117
SLIDE 117

NOTHING!!!

They forgot the prototype! But why?

slide-118
SLIDE 118

Because the new screen are more consistent and easy to use!!!

slide-119
SLIDE 119

Lesson #3 - be personally attached from a system or practice is a challenge for improvements!

The system is not your baby!

slide-120
SLIDE 120

Lesson #4 Good results is not equal to success!

slide-121
SLIDE 121

VS

slide-122
SLIDE 122

VS

slide-123
SLIDE 123

Despite all, we did a better system system than Globo with maybe 100x less resources!!! So, great success? Not exactly...

slide-124
SLIDE 124

Lesson #04 - Sometimes great

results are a fail… Do your best, but understand that decisions are political driven!

Politics is the most important problem in SE!

slide-125
SLIDE 125

Lesson #5 Do stuff simple; push fast...

slide-126
SLIDE 126
slide-127
SLIDE 127

Complex systems need complex architectures?

slide-128
SLIDE 128

In general, yes, but why not simplify it?

slide-129
SLIDE 129

I did and It worked!

slide-130
SLIDE 130

Lesson #05 - do something simple and useful as soon as possible, and push to production! If the project is important new resources will be allocate on!

slide-131
SLIDE 131

Lesson #6 Decide your team by technology or your technology by the team...

slide-132
SLIDE 132
slide-133
SLIDE 133

Lesson #7 Eliminate the blockers

  • r…
slide-134
SLIDE 134
slide-135
SLIDE 135

Lesson #8 Time to stop changing...

slide-136
SLIDE 136
slide-137
SLIDE 137

Launching monday. We closed a version

  • Friday. Do we have to

improve the software?

slide-138
SLIDE 138

The team decide work on during the weekend… What happened?

slide-139
SLIDE 139

Lesson #9 You will not stay the forever...

slide-140
SLIDE 140
  • https://youtu.be/T2Ny45d0cPo
  • http://www.procergs.rs.gov.br/1-modulo-do-sgo-e-entregue-atraves-de-metodos-ageis
  • http://www.procergs.rs.gov.br/procergs-recebe-visita-do-tribunal-de-justica

Coach a team for continuing your missions… Create a perennity environment for improvements….

slide-141
SLIDE 141

Main lessons

Perseverance:

The time is the master

  • f truth…
slide-142
SLIDE 142

Main lessons Agility works because it is evolutionary … Keep trying!

slide-143
SLIDE 143

Main lessons

It is not your fault:

Politics is a driver of decisions...

slide-144
SLIDE 144

References

  • Software Engineering: A Practitioner’s Approach​, R. Pressman, B. Maxim,

McGraw-Hill, 8th Edition, 2015.

  • Software Processes and Life Cycle Models, Kneuper, 2018

○ https://link.springer.com/book/10.1007%2F978-3-319-98845-0

  • Software Engineering 10th Edition, Ian Sommerville

○ https://iansommerville.com/software-engineering-book/

  • Foundations of Software Engineering

○ http://www.cs.cmu.edu/~ckaestne/15313/2018/index.html

  • Nathan Marz -- The Epistemology of Software Engineering

○ https://www.youtube.com/watch?v=_7Lp66By6-o

  • An Investigation of the Therac-25 Accidents

○ https://web.stanford.edu/class/cs240/old/sp2014/readings/therac-25.pdf