Software Engineering
Building software in teams from requirements to release: why projects such as HealthCare.gov fail, process models from waterfall and the V-model to Scrum, Kanban and DevOps, requirements with user stories, Given/When/Then criteria, use cases and traceability, accessibility and privacy requirements under the ADA, Section 508 and state privacy laws, estimation with planning poker, Monte Carlo forecasts and COCOMO II, UML modeling, architecture styles and decision records, coupling, cohesion and refactoring, Git branching, review and bisect, unit testing with pytest, integration, property-based and mutation testing, CI/CD, feature flags, SLOs and DORA metrics, and a capstone team project with ethics, US professional licensing, licensing of code and AI assistants.
CMPUT-301 Year 3 3 credits 12 lessons · 6 h 34 min
Offered by HSM University · Computing Science
This is the American version of this course. See the Canadian version.
What you'll learn
- Explain what distinguishes software engineering from programming, analyze the causes of major software failures, and describe the activities of the software life cycle.
- Compare plan-driven, iterative and agile process models, including Scrum, Kanban and DevOps, and choose and tailor a process for a given project.
- Elicit, write and prioritize requirements, including testable non-functional requirements, user stories with Given/When/Then acceptance criteria, use cases and traceability.
- Produce estimates with ranges using decomposition, three-point estimates, planning poker, velocity, Monte Carlo forecasting and COCOMO II, and build release plans that manage risk.
- Model software with UML class, sequence, state machine, activity, use case and component diagrams, and translate models such as state machines into code.
- Select architectural styles to meet quality-attribute scenarios, weigh monoliths against microservices, and document decisions in architecture decision records.
- Assess designs for coupling, cohesion and information hiding, recognize code smells, refactor safely under tests and use linters, formatters, type checkers and complexity metrics.
- Collaborate with Git using branches, merging, rebasing, conflict resolution, pull requests, code review, semantic versioning and git bisect.
- Design unit tests with pytest using equivalence partitioning, boundary value analysis, test doubles and test-driven development.
- Apply integration, system and acceptance testing, and evaluate and strengthen test suites with coverage, property-based testing and mutation testing while preventing flaky tests.
- Build continuous integration and delivery pipelines, choose deployment strategies, use feature flags, SLOs and DORA metrics, and secure the software supply chain.
- Carry a team project from requirements to release while meeting professional obligations: codes of ethics, US professional licensing, code ownership and license compatibility, accessibility and privacy law, and responsible use of AI coding assistants.
Course content
12 lessons · 6 h 34 min total · final exam
- 1 What software engineering is 34 min · quiz
- 2 Software process models 33 min · quiz
- 3 Requirements engineering 35 min · quiz
- 4 Estimation and planning 32 min · quiz
- 5 Modeling with UML 32 min · quiz
- 6 Software architecture 30 min · quiz
- 7 Detailed design and code quality 33 min · quiz
- 8 Version control and collaboration with Git 33 min · quiz
- 9 Testing I: fundamentals and unit testing 30 min · quiz
- 10 Testing II: integration, system and advanced techniques 34 min · quiz
- 11 Continuous integration, delivery and DevOps 33 min · quiz
- 12 Capstone: a team software project from requirements to release 35 min · quiz
- E Final exam 20 questions
Requirements
Recommended background. You can start any course at any time.
Description
Building software in teams from requirements to release: why projects such as HealthCare.gov fail, process models from waterfall and the V-model to Scrum, Kanban and DevOps, requirements with user stories, Given/When/Then criteria, use cases and traceability, accessibility and privacy requirements under the ADA, Section 508 and state privacy laws, estimation with planning poker, Monte Carlo forecasts and COCOMO II, UML modeling, architecture styles and decision records, coupling, cohesion and refactoring, Git branching, review and bisect, unit testing with pytest, integration, property-based and mutation testing, CI/CD, feature flags, SLOs and DORA metrics, and a capstone team project with ethics, US professional licensing, licensing of code and AI assistants.
Part of the Science stream, typically taken in year 3.