Architecture and design
Design
plan/solution to how to satisfy requirements
Leverl of design
high level design(aka architectural design): main system components and their connections
detailed design - details such as algorithm selection , detail API design ……(allow to write code)
subject of design
software design - architecture + detailed design as it relates to code
end - user interface design - usability + esthetics
Architecture:
components + connections: Join happens, think about how components communicate with each other.
often represented using nultiple views: It's good that different people work on different specifications
how responsibilities assigned to developers
Design process
Design criterion: function requirements and quality requirements.
Design loop: generalize ideas, analysize design criterion, make decision, optimization.
Avarage exercise
store running sum of numbsets+count, return total divided by count
Take average of pairs of numbers then recursively averages of result pairs
Divide each number by the count and add
split into subsets, solve subproblems , aggregate
store entire input then caculate on demand
Design loop
system analysis (generate ideas), brain stroming, iterative reaserch, experience
conceptualize design ideas,descrption, prototype, simulation
analyze, evaluate what requirements and design criteria
decision making, trade off resolved.
Design contain:
Fitness for purpose: functionality, runime perfermance, reliability, security, ……
fitness for future: Modifiability, extensibility, maintainability,……
Maintenance:
repairs -> removing reported faults (corrective maintenance) + discovery and removal of dormant fualts(preventative maintenance)
modifications -> new features(extension) + adjusted to environment changes(adaptive maintenance)
Modifiability:
functional modify quality
module is a unit of system decomposition with how well define purpose and interface. module has relationship with environment(other modules and other system you need to talk to, context)+ provide interface(functions provided to the environment) + guarantee properties(call the function, the module works properly) + required interface(module required from environment) + environment guarantees(precondition you need to be set up) + environment properties.
interface is a contract between the module and the environment. contract means two way-promise, do the job for someone and someone pay you. We hope interface is successful and also good perfermance.
syntactical aspect interface is about How to call it. Be detail: function service signatures(function names, number of types or parameters), also protocols(data formating, ordering of calls)
semantical aspect interface is about what it does. effects of calling a function( how to modify , per/pos-condition, random performance aspects, reliability)
Example of function name:
File Handle open(string name): This is function signature and also minly syntactic(except for the evocative names). Semantics: Add a desciption of what it does would give the semantics. error codes(understand what condition). response time. protocol: fixed sturcture of function such as English grammar (this is also syntactic part).
Module implementation(secrets):
what are good secrets(hide latency, cache data), representation of data, properties of devices(hardware, mechanism the support policies(hide how you done), implementation of world model data(how to organize on georaphical map)
uses of modelization:
help with system comprehension(understand interface of module to know big picture)
parallel develops(various teams allow you to organize the work)
support evaluation(limits ripple effects)
reuse of modules
tesing(write test to each unit and easy anlyze the error)
Last updated
Was this helpful?