Gergő Pintér, PhD
gergo.pinter@uni-corvinus.hu
week | date | lecture | practical class |
---|---|---|---|
1 | 2024-09-10 | intro, software architecture, SDLC | |
2 | 2024-09-17 | scrum, kanban | |
3 | 2024-09-24 | requirement analysis, user story mapping | project assignment |
4 | 2024-10-01 | UML, C4 | project workshop |
5 | 2024-10-08 | design patterns | project workshop |
6 | 2024-10-15 | interfaces, implementation planning | project workshop |
7 | 2024-10-22 | wireframing, clean clode | project workshop |
8 | 2024-10-29 | school holiday | |
9 | 2024-11-05 | code quality, code review | project workshop |
10 | 2024-11-12 | testing, legacy code | project workshop |
11 | 2024-11-19 | CI, automatization, devops | project workshop |
12 | 2024-11-26 | summary, course feedback | project workshop |
13 | 2024-12-03 | midterm | project demo |
14 | 2024-12-10 | no planned lecture |
week | date | lecture | practical class |
---|---|---|---|
1 | 2024-09-10 | intro, software architecture, SDLC | |
2 | 2024-09-17 | scrum, kanban | |
3 | 2024-09-24 | requirement analysis, user story mapping | project assignment |
4 | 2024-10-01 | UML, C4 | project workshop |
5 | 2024-10-08 | design patterns | project workshop |
6 | 2024-10-15 | interfaces, implementation planning | project workshop |
7 | 2024-10-22 | wireframing, clean clode | project workshop |
week | date | lecture | practical class |
---|---|---|---|
8 | 2024-10-29 | school holiday | |
9 | 2024-11-05 | code quality, code review | project workshop |
10 | 2024-11-12 | testing, legacy code | project workshop |
11 | 2024-11-19 | CI, automatization, devops | project workshop |
12 | 2024-11-26 | summary, course feedback | project workshop |
13 | 2024-12-03 | midterm | project demo |
14 | 2024-12-10 | no planned lecture |
A computer program is a sequence or set of instructions in a programming language for a computer to execute. It is one component of software, which also includes documentation and other intangible components.
ISO/IEC 2382:2015 via Wikipedia [1]
There is a metaphor saying that a program is like a recipe.
The computer follows the instructions of a program as the cook follows the instruction in a recipe.
Consequently programming is like creating a recipe.
maintenance?
a software does not have to obey the laws of physics
based on Software Architecture Metaphors by Lisa Stähli [2]
Software rot (or software entropy) is the degradation, deterioration, or loss of the use or performance of software over time [3].
dormant rot: the software in question is not changed, but as the environment evolves, it eventually becomes dysfunctional
active rot
based on Software Architecture Metaphors by Lisa Stähli [2]
based on Software Architecture Metaphors by Lisa Stähli [2]
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
© 2009, the undersigned. This statement may be freely copied in any form, but only in its entirety through this notice.
24 million lines of code – operational and support – needed for the F-35 to be fully operational
if we wish to count lines of code, we should not regard them as “lines produced” but as “lines spent”
E. W. Dijkstra EWD 1036
Every line of code written comes at a price: maintenance. To avoid paying for a lot of code, we build reusable software. The problem with code re-use is that it gets in the way of changing your mind later on.
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
Linux Torvalds: despite not really having any single thing that stands out… 5.8 looks to be one of our biggest releases of all time
based on Simon Mutch’s Version Control materials
In practice, everything that has been created manually should be put in version control, including programs, original field observations, and the source files for papers.
– Best Practices for Scientific Computing; Wilson et al. 2012 (arXiv:1210.0530)
this presentation is under version control as well
“Architecture” is a term that lots of people try to define, with little agreement. There are two common elements: One is the highest-level breakdown of a system into its parts; the other, decisions that are hard to change.
– Martin Fowler - Patterns of Enterprise Application Architecture
In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture’. This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers.
Ralph Johnson, XP mailing list
All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.
– Grady Booch