Click here to Skip to main content
15,904,828 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
AnswerRe: Why MVC Pin
Richard MacCutchan16-Jun-13 23:21
mveRichard MacCutchan16-Jun-13 23:21 
AnswerRe: Why MVC Pin
Keith Barrow17-Jun-13 0:04
professionalKeith Barrow17-Jun-13 0:04 
GeneralRe: Why MVC Pin
KK Kod17-Jun-13 0:54
KK Kod17-Jun-13 0:54 
GeneralRe: Why MVC Pin
Keith Barrow17-Jun-13 1:27
professionalKeith Barrow17-Jun-13 1:27 
QuestionI seek help defining a SCRUM structure for an application I am working on. Pin
Brady Kelly16-Jun-13 21:41
Brady Kelly16-Jun-13 21:41 
AnswerRe: I seek help defining a SCRUM structure for an application I am working on. Pin
Jonathan Davies17-Jun-13 23:09
Jonathan Davies17-Jun-13 23:09 
AnswerRe: I seek help defining a SCRUM structure for an application I am working on. Pin
Keld Ølykke27-Jun-13 5:48
Keld Ølykke27-Jun-13 5:48 
QuestionMVVM architecture for a Hardware based application Pin
Praveen Raghuvanshi13-Jun-13 4:47
professionalPraveen Raghuvanshi13-Jun-13 4:47 
Hi,

I need to architecture a WPF application that will interact with Hardware device(s).
I am planning to use MVVM architectural pattern and DI in order to provide modularity.

Here are the components of it.

Suppose we have a Hardware called as 'Car'.
There can be different type(s) of Car such as Ford, GM, Skoda etc.
The Cars will have features. Some of them are common to all the cars and some are specific to the Make and model.
Common features can be - 4 wheels, engine, steering etc.
Different features:
Ford - Music system, Auto lock etc.
GM - Automatic transmission, Power steering etc.
Skoda - Airbags, Antilock breaking system(ABS) etc.

Application should load screen according to the car.
The hardware will interact through a set of commands.
Each type of hardware will have their set of commands.
For E.g: Suppose total we have 50 commands for the all the types.
Supported commands by each type:
Ford - 30 out of 50
GM - 40 out of 50
Skoda - 20 out of 50.

I am planning to architect as shown below.

- An abstract class for the Car to interact with the hardware which will be a Model.
- Each type of Hardware/car will be another Model.
- There will be View-Model for each type of Car(Ford, GM and Skoda). We can have VM for different make of cars, if required.
- Similar to View-Model, we'll have Views(Screns).

I need to architect the Hardware Abstraction Layer(HAL).
By HAL, i mean to say a layer which will interact with the Hardware and should be extensible. So, in future if a new type of car comes, interaction with View-Models and Views should not change.
The HAL will be responsible of sending/receiving the commands.

A small representation of the MVVM architecutre will be as follows.

-----------------
| Car View |
-----------------
|
|---------------|-------------|
---------------- ----------- ------------
| Ford View | | GM View | | Skoda View |
---------------- ----------- ------------

-----------------
| Car ViewModel |
-----------------
|
|-----------------------|-------------|
----------------- -------------- -----------------
| Ford ViewModel | | GM ViewModel | | Skoda ViewModel |
----------------- -------------- -----------------


------------
| Car Model |
------------
|
|-----------|------------------|
-------------- ---------- --------------
| Ford Model | | GM Model | | Skoda Model |
-------------- ---------- --------------
|
-----------------------------------------------
| |
---------------------------------------- ---------------------------------------
| | | | | Hardware Abstraction Layer(HAL) | | Database Access Layer(DAL) |
| Send/Receive commands | | | | | | |
---------------------------------------- ---------------------------------------
|
|-----------------------|------------------------|
----------------- ----------------- ----------------------
| Actual Ford car | | Actual GM Model | | Actual Skoda Model |
---------------- ----------------- ----------------------

There will be DAL also, in order to work in offline mode.

I am thinking of having each type of car as a Module and there will be main part in the application wherein each of the modules will be loaded.
So, Ford Module will be have FordView, FordViewModel, FordModel.

Questions:
1- What could be the best way to architect such an application?
2- How can we bring modularity?
3- How can we bring extensiblity?
4- How does the interaction between different objects take place in a loosely coupled manner?
5- I'll be using Microsft Ribbon. How can we have interaction between different buttons in the Ribbon and modules or screens?
6- Any nice article/case study/link to understand the architecure.

Please let me know if any other information is required.

Appreciate the response and time.
AnswerRe: MVVM architecture for a Hardware based application Pin
jschell13-Jun-13 8:53
jschell13-Jun-13 8:53 
AnswerRe: MVVM architecture for a Hardware based application Pin
dusty_dex13-Jun-13 8:55
dusty_dex13-Jun-13 8:55 
AnswerRe: MVVM architecture for a Hardware based application Pin
Jonathan Davies14-Jun-13 3:00
Jonathan Davies14-Jun-13 3:00 
GeneralRe: MVVM architecture for a Hardware based application Pin
Praveen Raghuvanshi17-Jun-13 1:28
professionalPraveen Raghuvanshi17-Jun-13 1:28 
QuestionSoftware Design Books Pin
msr_codeproject13-Jun-13 2:43
msr_codeproject13-Jun-13 2:43 
AnswerRe: Software Design Books Pin
Amarnath S13-Jun-13 17:38
professionalAmarnath S13-Jun-13 17:38 
GeneralRe: Software Design Books Pin
msr_codeproject13-Jun-13 23:47
msr_codeproject13-Jun-13 23:47 
QuestionQUERY FOR ALL vs QUERY FOR EACH Pin
Paulo S X Soares5-Jun-13 4:13
Paulo S X Soares5-Jun-13 4:13 
AnswerRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Bernhard Hiller5-Jun-13 21:16
Bernhard Hiller5-Jun-13 21:16 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Paulo S X Soares6-Jun-13 2:50
Paulo S X Soares6-Jun-13 2:50 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Eddy Vluggen6-Jun-13 2:54
professionalEddy Vluggen6-Jun-13 2:54 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Paulo S X Soares6-Jun-13 3:06
Paulo S X Soares6-Jun-13 3:06 
AnswerRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Abhinav S5-Jun-13 22:17
Abhinav S5-Jun-13 22:17 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Paulo S X Soares6-Jun-13 2:58
Paulo S X Soares6-Jun-13 2:58 
AnswerRe: QUERY FOR ALL vs QUERY FOR EACH Pin
jschell6-Jun-13 10:15
jschell6-Jun-13 10:15 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
Paulo S X Soares7-Jun-13 5:22
Paulo S X Soares7-Jun-13 5:22 
GeneralRe: QUERY FOR ALL vs QUERY FOR EACH Pin
jschell10-Jun-13 9:02
jschell10-Jun-13 9:02 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.