System Architecture Design

From EUDP
Revision as of 11:29, 25 September 2012 by Opprud (Talk)

Jump to: navigation, search

What

Documents and figures describing the static layout of the functional blocks, of the system to be.

Block or component diagrams, that shows the functional decomposition into HW and SW blocks respectively

How

General architechture design consists of several steps, that often requires several iterations, untill the optimal architechtre is crafted.

The system architechture and the technical platform, are highly dependant on each other, and again depends on the partition of functionality into HW and SW blocks. Therefore one should expect to iterate between the task in General Architechture design

Ingredients

  • System constraints, see [Design Constraint Analysis]
  • Availible requirements, in particular concerning
    • performance requirements
    • Interface compatability (i.e. must be able to connect on ethernet, communicate on CAN, have and SD card, run Android OS, etc...)
  • Drafts of Blockdiagrams for the system, perhaps split into blockdiagrams for HW and component or UML drafts for SW

Example

An example of System Design Activities, most likely NOT in the same order you may eed them...!'

  • Identify the system constraints
    • Technical constraints are evaluated, e.g.:
      • performance of the given technical platform
      • are there preselected BSP’s / Operating systems
      • Lifetime considerations
      • Target costs
      • compatibility issues (must be same CPU family as usual, same BSP as we use already, must be able to run older applications build for this architechture etc…)
  • Asses the initial blockdiagram and proposed technical solution
    • attempt to map the system-to-be’s functionality onto whatever architechture the technical solution suggests e.g
      • does the required communication protocols match the available HW
      • estimate the system to be’s memory footprint, and evaluate the vailible meory and storage in the suggested technical platform (i.e. filesystems, graphical libraries, large databases, webservers etc often have quite high demands in terms of memory)
      • attempt to predict any bottlenecks, in terms of performance, when running the the system to be on the selected technical platform.
  • Craft a detailed Block or Component [diagram] with:
    • hardware blocks sketched, based on what responsibility and function they are assigned
    • sw blocks based on functionality and responsibility. The 7 layer [OSI model] is good as a template for dividing functionality - link
  • Based on the results above evaluate
    • if a slight [repartitioning] of functionality between HW and SW will improve performance
    • if the available memory is capable of accommodating system-to-be-needs (multiply your memory footprint estimations with 2-3, is a good rule of thumb…)
    • do I have the required HW support and available SW BSP’s, if not consult your system constraints, and evaluate if a better suited technical platform, BSP, development tool is available, and within budget reach.
    • do I have my design slip into enough functional blocks (HW & SW), and are the responsibilities within each block small enough