Software Architecture Flashcards
What is software architecture?
The design decisions that give shape and structure to our software.
Why is software architecture important?
Reduces the amount of resources required and improves productivity and performance
How is the quality of design measured?
By the amount of effort it takes to meet the clients goal.
The less effort the better the design.
What are the three main programming paradigms
Structural, Object Orientated and Functional
What are the two most important values for stakeholders? and which is more important?
Function and Structure. Structure is more important because even if software functions well, but has poor structure, it will eventually become impossible to update and maintain at which point the software will cease to function.
What is structural programming?
Structural programming is programming that makes extensive use of control structures, such as: sequences, decisions (selectors), iteration and recursion.
It also uses functional decomposition to model real world probelms
Functional decomposition consists out of three parts
- Top down analysis: breaking the overall task into
subtasks - Modular programming: Turning sub-tasks into
independend modules each with its own function - Structured Code: Using controll sturctures to define
the individual function
What is Object Orientated Analysis and Design?
An approach to problem solving that models real world problems by representing them as objects.
what is functional programming?
treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.. unlike OOP that focuses on creating objects, functions focuses on the use of functions especially “pure functions”
What are components?
Components are the units of deployment. They are the smallest entity that can be deployed as part of a system.
Components can be linked together into a single executable. Or they can be aggregated together into a single archive, such as a .war file. Or they can be independently deployed as separate dynamically loaded plugins, such as.jar or .dll or .exe files. Regardless of how they are eventually deployed, well-designed components always retain the ability to be independently deployable and, therefore, independently developable.