Difference between revisions of "System Architecture Design"

From EUDP
Jump to: navigation, search
(How)
Line 20: Line 20:
 
==Example==
 
==Example==
  
''An example of System Design Activities''  
+
''An example of system design activities''  
  
 
*Identify the system constraints
 
*Identify the system constraints
** Technical constraints are evaluated, e.g.:
+
** Technical constraints are evaluated, e.g. in terms of:
*** performance of the given technical platform
+
*** Performance of the given technical platform
*** are there preselected BSP’s / Operating systems
+
*** Preselected BSPs/operating systems
 
*** Lifetime considerations
 
*** Lifetime considerations
 
*** Target costs
 
*** 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.)
+
*** Compatibility issues (must be same CPU family as usual, same BSP as we use already, must be able to run older applications built for this architecture, etc.)
*Asses the initial blockdiagram and proposed technical solution
+
*Assess the initial block diagram and the proposed technical solution
** attempt to map the system-to-be’s functionality onto whatever architechture the technical solution suggests e.g
+
** Attempt to map the system-to-be’s functionality onto whatever architecture is provided by the technical solution, e.g.:
*** does the required communication protocols match the available HW  
+
*** See if 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)
+
*** Estimate the system-to-be’s memory footprint and evaluate the available memory and storage in the suggested technical platform (file systems, 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.
+
*** Predict the bottlenecks, if any, in terms of performance when running the system-to-be on the selected technical platform
*Craft a detailed Block or Component [[Blockdiagram]] with:
+
*Craft a detailed block or component [[Blockdiagram]] with:
** hardware blocks sketched, based on what responsibility and function they are assigned
+
** HW blocks sketched based on responsibility and function
 
** SW blocks based on functionality and responsibility. The 7 layer [[http://en.wikipedia.org/wiki/OSI_model OSI model]] is good as a template for dividing functionality
 
** SW blocks based on functionality and responsibility. The 7 layer [[http://en.wikipedia.org/wiki/OSI_model OSI model]] is good as a template for dividing functionality
  
*Based on the results above evaluate  
+
*Based on the results above, evaluate:
 
** if a slight [[Design Partitioning]] repartitioning of functionality between HW and SW will improve performance  
 
** if a slight [[Design Partitioning]] 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)
+
** if the available memory is capable of accommodating system-to-be needs (multiplying your memory footprint estimations with 2-3 is a good rule of thumb)
** is the required HW support and SW BSP’s available, if not consult the system constraints, and evaluate if a better suited technical platform, BSP, development tool is available, and within budget reach.
+
** if the required HW support and SW BSPs are available. If not, consult the system constraints, and evaluate if a better suited technical platform, BSP, development tool is available and within budget reach.
** is the design divided into enough functional blocks (HW & SW), and are the responsibilities within each block small enough
+
** If the design is divided into enough functional blocks (HW and& SW. Are the responsibilities within each block small enough?

Revision as of 09:59, 22 September 2015

What

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

Block or component diagrams illustrating the functional decomposition into HW and SW blocks respectively.

How

General architecture design consists of several steps which often require several iterations until the optimal architecture has been obtained.

The system architecture and the technical platform highly depend on one another, and also depend on the partition of functionality into HW and SW blocks. Therefore, one should expect to iterate between the tasks in the general architecture design.

Ingredients

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

Example

An example of system design activities

  • Identify the system constraints
    • Technical constraints are evaluated, e.g. in terms of:
      • Performance of the given technical platform
      • Preselected BSPs/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 built for this architecture, etc.)
  • Assess the initial block diagram and the proposed technical solution
    • Attempt to map the system-to-be’s functionality onto whatever architecture is provided by the technical solution, e.g.:
      • See if the required communication protocols match the available HW
      • Estimate the system-to-be’s memory footprint and evaluate the available memory and storage in the suggested technical platform (file systems, graphical libraries, large databases, webservers, etc. often have quite high demands in terms of memory)
      • Predict the bottlenecks, if any, in terms of performance when running the system-to-be on the selected technical platform
  • Craft a detailed block or component Blockdiagram with:
    • HW blocks sketched based on responsibility and function
    • SW blocks based on functionality and responsibility. The 7 layer [OSI model] is good as a template for dividing functionality
  • Based on the results above, evaluate:
    • if a slight Design Partitioning repartitioning of functionality between HW and SW will improve performance
    • if the available memory is capable of accommodating system-to-be needs (multiplying your memory footprint estimations with 2-3 is a good rule of thumb)
    • if the required HW support and SW BSPs are available. If not, consult the system constraints, and evaluate if a better suited technical platform, BSP, development tool is available and within budget reach.
    • If the design is divided into enough functional blocks (HW and& SW. Are the responsibilities within each block small enough?