SWDev Track Summary

stories, bites, and code projects

"There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies."
- C. A. R. Hoare

Figure 1. Rust Project Physical Structure

1. What is SWDev?

The Software Development (SWDev) track is concerned with the processes, tools, and artifacts involved in taking a software idea from concept to deployed product. It is intentionally practical - focused on things that matter in professional work. Three defining activities: The track uses a concrete example project - TextFinder - throughout its pages to keep discussion grounded. TextFinder finds regex matches in a directory tree and is implemented in Rust, C++, C#, and Python, making it a good vehicle for comparing design and implementation strategies across languages.

2. Track Contents

The SWDev track offers focused reference material on design, deployment, and tooling, plus example projects, code repositories, a glossary, and external references.
Section Description Entry Point
SWDev Story A narrative walkthrough of software development from first principles. Chapters cover software design, package structure, structural patterns (monolithic, data flow, factored, type erasure, plugin), development process models, configuration management with git, scripting automation, and deployment with containers and CI/CD. Prologue
SW Design Bites Short, focused pages covering the core activities of software design: concept development, architecture, specification, and a set of structural design patterns - basic, data flow, factored, type erasure, and plugin. Each page is self-contained and also part of an ordered sequence. Introduction
SW Deploy Bites Short pages covering the deployment side of development: common development processes (waterfall, iterative, agile, scrum), configuration management with git, automation with Bash and PowerShell, containerization with Docker, and remote platforms such as GitHub. Introduction
Projects Descriptions of example projects used throughout the track - TextFinder and CodeAnalyzer - including their specifications, designs, and links to implementations in multiple languages. Projects
Repositories Index of SWDev code repositories on GitHub, organized by project and language. Repositories
Glossary Definitions for software development terms used across the track. Glossary
References Curated external links - process guides, design resources, tooling documentation, and deployment references. Organized into design and deployment sections. Section 5

3. Key Concepts

The track covers the areas below, roughly in the order they arise during development.

Software Design

Good design starts with understanding what the software must do, who will use it, and what constraints (performance, cost, schedule) apply. Pages: Design Bites Introduction, Design Overview.

Structural Design Patterns

Structure Bites explore five ways to organize a software system, using TextFinder as a running example to make the tradeoffs concrete. Pages: Basic, Data Flow, Factored, Type Erasure, Plugin.

Development Process and Deployment

Deploy Bites cover the practical tools and workflows used to build, manage, and ship software in a professional setting. Pages: Process, Git.

Example Projects

Concrete projects anchor the abstract concepts throughout the track. Pages: SWDev Projects, SWDev Repositories.

4. Getting Started

Recommended first steps for someone new to the SWDev track:
  1. Read the Design Bites Introduction. It lays out the full scope of the design track and introduces the TextFinder project that ties the pages together.
  2. Work through the Structure Bites in order - starting with Basic Structure and progressing to Data Flow, Factored, Type Erasure, and Plugin. Each builds on the previous and uses the same example project.
  3. Read the Deploy Bites Introduction for an overview of deployment tools and processes. Then read Process and Git as the most immediately practical pages.
  4. Browse the Projects page to see full project specifications and links to implementations in multiple languages. Comparing the same design across Rust, C++, C#, and Python builds intuition about language-level tradeoffs.
  5. Use the Glossary and References as reference material throughout.

5. References

Resource Description
Refactoring Guru Clear explanations and diagrams of classic design patterns - creational, structural, and behavioral - with examples in multiple languages.
Martin Fowler - Patterns Articles and catalog entries on enterprise application architecture patterns - a key reference for larger system design.
Pro Git (free online) The definitive reference for git - covers branching, merging, rebasing, remotes, and workflows from beginner to advanced.
GitHub Docs Official documentation for GitHub - repositories, pull requests, Actions CI/CD pipelines, and GitHub API.
Docker Get Started Docker's official tutorial - covers images, containers, Dockerfiles, and Compose from first principles.
PowerShell Docs Microsoft's official PowerShell reference - language syntax, cmdlets, scripting patterns, and cross-platform usage.
GNU Bash Manual Complete reference for Bash scripting - variables, conditionals, loops, functions, and process control.
Agile Manifesto The original four values and twelve principles of agile software development.
Scrum Guide The official Scrum Guide - roles, events, artifacts, and rules for the Scrum process framework.
Track Glossary Definitions for software development terms used across this track.
Track References Additional curated links organized by topic within the SWDev track.