csc 510-001, (1877)
fall 2024, software engineering
Tim Menzies, timm@ieee.org, com sci, nc state


home :: syllabus :: corpus :: groups :: moodle :: license

Process

People (the most powerful Technology)

People Tools 1: Inspections

People, read stuff.

Different people are told to read for different things - reduces load of each one person - prevents double up

Can be applied to any artifact, any technology - Don’t have to wait for (e.g.) updates to latest version of the parser - Needs no tools, no licenses

You can inspect anything - designs: collect “users stories” then run the stories. - see where the design falls off the edge - tests: manually run some “what-ifs” throogh the code For more, see here.

People Tools 2:: Planning Poker

Ego-less way to do effort estimation

Wikipedia

Process Notes

Let us consider two extremes of software process: waterfall vs scrumm

Both are management tools for controlling software development.

(aside: what is “Agile”)

Waterfall

Large strategic control. Linear order of tasks: - Requirements - Analysis - Design - Code - Test - Deploy

Experience gained from step i+1 only allowed to feed back to step i

Used for:

Less than useful when:

Scrum

Sprints: 1. Review a backlog of “things to do” 2. select the things that deliver the most value at least cost. 3. Sprint to complete those tasks before the next review (next week, next month) 4. Go to step1

Daily meetings: - Daily: run a meeting where everyone is standing up. Ask everyone 3 questions: - What have you accomplished since we last met? - What do you plan to accomplish before the next meeting? - What issues or problems are you currently facing?

Very useful when:

Less than useful when:

Notes from recent meetings with industry

AgileFall: - we say we are agile but , actually, we do waterfall.

From an industry person: “have to get agile out of our copamany” - for hardware / software co-design, h/ware developers need a solid target for their work - e.g. 4-6 month cycle a. Why,What,Who: motivations, users, user stories, high level decisions b. How : lower-level design c. Code : d. Test : including h/ware integration - Note: same people, cloud platform,s happy to see abcd cycles as short as 1 week.

Repo Branching Stragties

Distributed (e.g.GH) versus centrailized (e.g. SVN)

You can squelch this message by running one of the following
commands sometime before your next pull:


  git config pull.rebase false  # merge (the default strategy)
  git config pull.rebase true   # rebase
  git config pull.ff only       # fast-forward only

Branching Strategies

Branching method 1: Don’t do it

How to branch (approach-1: don’t bother, for small projects)

Branching method2: git flow

Each branch is an experiment with a new feature.

Beware gitflow hell

Git flow tips

Branching method3: Trunk-based Development

(used at Google,Facebook, Amazon: https://trunkbaseddevelopment.com)

Developers collaborate on code in a single branch called “trunk” (*), resist any pressure to create other long-lived development branches. Avoids merge hell, do not break the build, and live happily ever after.

(*) master, in Git nomenclature

Very short lived feature branches: one person over a couple of days (max). Much build automation before merging into main

Merge hell or trunk-based? You decide. Compare this to above:

Standard Files

Case Study (Black)

Case Study (Zephyr)

15 real-time operating systems 2018, 2020

Why is the Zephyr operating syste,s succeeding so well? - Perception of open governance (no one owns it) - So you can contribute, without anyone ever locking away your work - AND you can get everyone else’s contributions

Shields.io