Design introduction¶
Learning outcomes
Learners ...
- have an overview of how the course teaches the 'Design' phase
For teachers
Prior:
- What is a software development lifecycle?
- Which type of software development lifecycle do we use?
- What are the software development lifecycle phases used in this course?
- Where are we in the software development lifecycle?
- With the planning done, what would be a good next step?
- From a design perspective, what does a package consist of?
What have we done so far?¶
In the software development lifecycle we have now rounded of the planning phase:
- We have created the design documents for the project
- We have learned how to work with an online repository
What is next?¶
In the software development lifecycle we will now enter the 'Design' phase:
- We have conceptualized our project
- We have planned our project
After this, we move to the 'Develop' phase.
First, we will work at designing functions, then modules and (if we are fast enough) objects.
Levels of design¶
Here are the levels of design:
graph TB
subgraph package
subgraph modules
subgraph classes
end
subgraph functions
end
end
end
What the literature states¶
- Design and write error-safe code
[Sutter and Alexandrescu, 2004] - Good Design Is Easier to Change Than Bad Design
[Thomas and Hunt, 2019] - Design with Contracts
[Thomas and Hunt, 2019] - Design to Test
[Thomas and Hunt, 2019] - Code Is Design
[Henney, 2010] - Make Quality a Requirements Issue
[Thomas and Hunt, 2019] - Requirements Are Learned in a Feedback Loop
[Thomas and Hunt, 2019]
Exercises¶
Exercise 1: levels of design¶
The Levels of design sessions shows four levels of design and how they relate.
Do you agree with this diagram? If not, where do you disagree?
Exercise 2: our first setup¶
Here is a first setup for the design of our research:
graph TB
subgraph package["weather"]
do_experiment
end
Light grey boxes indicate packages, where blue boxes indicate functions
It put all our code in one package, with one function doing everything.
Sure, there will be more functions later, but, as a start, could you agree with this setup?
What would be the best next step according to you?
Exercise 3: a glimpse into the future¶
The schematic below may be how the design ends up:
graph TB
subgraph package[the 'weather' package]
subgraph main_module[the 'analysis' module]
read_data
do_experiment
create_figure
create_statistics_output
end
subgraph anna_module[the 'anna' module]
anna_read_data[read_data]
end
subgraph sven_module[the 'sven' module]
sven_create_figure[create_figure]
sven_create_statistics_output[create_statistics_output]
end
end
read_data --> anna_read_data
create_figure --> sven_create_figure
create_statistics_output --> sven_create_statistics_output
do_experiment --> read_data
do_experiment --> create_figure
do_experiment --> create_statistics_output
How would you interpret this figure? What has happened? Is the team done?