3 Component Discovery, Abstractly
9 September 2024
3.1 What is a Software System, Introduction
- [5-10min] from basics of high school coding to
code, scripts, high school "stuff"
programs: designed, tested, "purposed" (basic internal docs)
application programs: + external documentation (‘man ls‘)
- many interacting components: each component is at least a "program"
possibly static connections (‘require‘)
possibly dynamically loaded (‘dynamic-require‘)
3.2 Running a Software System
- [5-10min] when people run such things, what happens
configure;
start,
steady state,
shut down (gracefully in all cases)
re-configure
- [5-10min] examples:
IDE
web browser
web server
web server-browser system
operating system
3.3 Developing a Complete System
- [30-40min] what we do here, abstractly
spiral analysis of potential system and its context; determine boundary
stimuli & responses; boundary crossings information -> data, data -> information -> knowledge
use cases: trace stimuli to responses; identify sw components
classify components and stimuli-response chains into "aspects"; rank them
create dependency graph for ranked components; identify minimal kernel
make a plan: start with kernel; iteratively refine and expand prototype
Total: [45-70 mins]
3.4 If you’re Ben:
you will have left-over time and you want to illustrate the abstract process:
**BUT** minus the "construction plan" section, which is their homework as of Wednesday morning
I prefer to do this _after_ Tuesday, which is when we release the first milestone and they need to understand "the plan".