Source - MHRD youtube
Source - Engineering Funda
- top-down: Abstract idea to components
- bottom-up: components to higher level system. Mostly this considered becuase abstract design is not concrete.
- Analyse design at each stage.
- Refine.
- Verify and test.
- Requirements, Abstraction, Problem Statement
- Architecture
- Components
- System integration
- Functional
- Inputs, Outputs
- Functions / Features
- Non-Functional
Goals:
- Cost
- Performance
- Power Consumption
- Size/Weight
Minimal effort, resources, and features based on requirement that solves the requirement.
- Implmentation of the system is the architecture.
- Highlights major parts and flow of features in the system.
- C4 block diagram for example to satisfy all functional requirements.
- Hardware - processor, I/O, memory, sensors etc. (Electrical Schematics going deeper)
- Software - Software flow. Input to Output. Process knowledge.
- check for available designs in the market.
- check UI requirement.
- Depending upon the speed and deadlines, we would need powerful processes and therefore might go for costlier solution.
- If we have a budget constraint and are restricted to procure high performance hardware, software has to be designed to accomodate it.
- Goals (performance, power, cost) govern the hardware/software module selection. So the component selection is interdependent.
- Determine and implement the flow between modules. (Mapping)
- Unit tested hardware and software components by now.
- The software modules should be integrated to see functionality on test bench.
- This is then deployed on hardware with real peripherals and memory constraints.