Reaves.dev

v0.1.0

built using

Phoenix v1.7.12

Intro To Software Development Process

Stephen M. Reaves

::

2023-08-26

Notes about Lesson 1 of CS-6300

Summary

Software Crisis

Came about in the 60’s when people realized they couldn’t write the software they wanted.

There were multiple causes for this

Rising Demand for Software

Before the 60’s, hardware components dominated, and software requirements were low. This began to change as companies incorporated more software.

Development Effort

Software complexity does not scale linearly

For example:

SizeExample
102 10^2 LOCClass exercise
103 10^3 LOCSmall project
104 10^4 LOCTerm project
105 10^5 LOCWord processor
106 10^6 LOCOperating System
107 10^7 LOCDistributed System

Programming effort can get you through Class exercise - Term project. Anything bigger needs Software Engineering effort.

Developer’s Productivity Growth

Dev productivity had been growing linearly

Evidence of Software Crisis

In a study by Davis in 1990, $5 million out of $7 million spent on software resulted in software that was delivered but not successfully used, or just never delivered.

NATO Software Engineering Conference in 1969 was the birth of Software Engineering

Software Development

Software Development := The process for going from an abstract idea in someone’s head to a concrete system that actually implements that idea.

Software Process := The way we break down Software Development into smaller steps.

Software processes are systematic and formal

Software Processes

  1. Waterfall
  2. Evolutionary Prototyping
  3. Rational Unified Process/Unified Software Process
  4. Agile

Software Phases

  1. Requirements Gathering
  2. Design
  3. Implementation
  4. Verification/Validation
  5. Maintenance

Tools of the Trade

Tools and automation are fundamental for Software Engineering

Punch-cards -> IDEs

Machine code -> High-level languages

Print lines -> Symbolic debuggers