Software Engineering
Structural Engineering Topics
- Soil Mechanics
- Structural Mechanics
- Hydraulics and Hydrology
- Codes and Construction
- Risk management, uncertainty
- Project Planning & Scheduling
- Cost estimating
- Activity identification and sequencing
- NCEES PE Structural Engineer exam
Software Engineering Topics
- Programming Languages
- Data structures, algorithms & complexity
- Operating Systems, Networking, Database, ...
- Object oriented design
- Computer architecture
- ??
-
Procedures, Processes, Methodologies, Practices
Core organizing process
DOD SE Process Model (2008)

DOD Systems Software Development (1988)

Waterfall Model

Core Processes
- Software Requirements (Elicitation, Analysis, Specification, Validation)
- Software Design (including: Architecture, UI)
- Software Construction
- Software Testing
- Software Maintenance
Requirements Analysis
“Software requirements express the needs and constraints placed on a software product that contribute to the solution of some real-world problem. ... It is widely acknowledged amongst researchers and industry practitioners that software projects are critically vulnerable when the requirements- related activities are poorly performed”
Software Design
Both the process of defining the architecture, components, interfaces, etc. and the result of that process. “during software design, software engineers produce various models that form a kind of blueprint of the solution to be implemented. We can analyze and evaluate these models to determine whether or not they will allow us to fullfill the various requirements.”
Software Construction
“the detailed creation of working software through a combination of coding, verification, unit testing, integration testing, and debugging ... much design work is performed during the construction activity.”
Software Testing
“the dynamic verification that a program provides expected behaviors on a finite set of test cases, suitably selected from the usually infinite execution domain. Can also imply static testing.”
Software Maintenance
“all the activities required to provide cost-effective support to (previously delivered) software.”
“software products change or evolve ... once in operation, defects are uncovered, operating environments change and new user requirements surface.” These must be covered by software maintenance.
Related Processes
- Software Configuration Management
- Software Engineering Management
- Software Engineering Process
- Software Engineering Modeling
- Software Quality
- Software Engineering Professional Practice
- Software Engineering Economics
- Computing and Mathematical Foundations
“Waterfall doesn't work for software”


- Unknowns
- Uncertainty
- Risk
- Changes
- Software engineering isn't linear
- Creation of software is often a creative process
- → design space and degrees of freedom are huge
- Waterfall
- Spiral
- Prototyping
- RAD
- DSDM
- Agile
- XP
- Scrum
- RUP
- DAD
- ...
Software Development Life Cycles (SDLC)
Rise of Agile
- Agile Manifesto
- 12 Principles
- Is the Agile Manifesto still a thing?
- State of Agile Report 2021 (they are working on a new report)
Scrum
Lifecycle
Disciplined Agile Delivery Lifecycle

Title Text

Key points (for now)
Sprint based
- Iterative
- Time boxed (~ 2 weeks/sprint)
- “Deliver potentially shippable software at the end of each sprint”
Product Backlog
- Priority ordered
- List of features/requirements to build
- User Story based (requirements ARE user stories+)
- PBI's at the top are “Ready to Go”

Text

LucidChart
Lightweight and minimal
- Not a lot of documentation
- Not a lot of meetings
- No traditional project management (Gantt chart )
Required meetings and activities
- Backlog Refinement and Grooming
- Sprint Planning
- Standups
- Sprint Retrospective
How we “do” requirements matters
Up next ... Requirements
Software Engineering
By drmorgan
Software Engineering
- 4