need a suggestion for software component design

Hi everyone,

I hope that I posted at the right box

I've started writting my master's thesis at a company. It's about "desinging software component for embedded systems"

Now I'm describing the content of the thesis:

My company is a subcontractor which supplies software components ordered by some other companies. My company built their own based component in Visual C++ language. The problem is that each company has different requirements and sometimes different platforms when they order the component from my company. Therefore, we have to start building the ordered components mostly from scratch (re-analysis, re-design, re-implement, and re-test) because some new requirements don't match with the existing one. We can't reuse our component that we built before. My thesis is to either design a component or find a solution so that the component could be suitable for requirement changes and at the same time suitable for platform changes.

I was thinking about using the wrappers. The component can put into the wrappers. However, this could require a lot of coding efforts.

I hope you understand what I have written. Forgive me if I made any English mistake

I really need your own ideas about this problem.

Thank you very much!

[1425 byte] By [Tommy.Le] at [2008-1-5]
# 1

Here's the problem...embedded systems usually work with limited resources and sometimes cannot afford to be generic. Basically, the reason the company redesigns the component for each customer is because they have to in order to keep as small a footprint as possible.

ivolved_Mike_Brown at 2007-10-3 > top of Msdn Tech,Architecture,Architecture General...
# 2

Hi Tommy,

there's a list of things I suggest you to try:

  • Take a look at the MSDN Windows Embedded Developer Center in order to gather some info there (it's more specific than the general info you can get at the Architecture forum)
  • Reopen the thread at some of the Smart Device Development forums
  • Take a look at this two development platforms: .NET Compact Framework (.NET CF) and Java Mobile Edition (Java ME). Compared with C++, what's good in managed environment like .NET or Java is the fact that everything you do targets a virtual machine, not a concrete one. That way both platforms have implementations of each VM for a large set of embedded systems. My personal experience showed me that while it's not that true that you create a component for any of those VMs and will run without any tune up on every other implementation of the same VM, you just need to fix some incompatibilities but never drop the component and start from scratch
  • There's a last but not least chance you may explore (actually I personally don't buy it, but you take a look and extract your own conclusion: Model-Driven Architecture (MDA). With such style or architecture creation you design components without thinking on implementation at all (just basic UML charts). That way you'll get a first, platform-independent model of your components (the PIM). Later there are some products which take your PIM to produce platform-specific models (PSM). Supposedly, that way you only change your PIM and all the targeted platform will be affected by the change once you transform your PIM into the proper PSMs. Admittedly looks nice
DiegoDagum at 2007-10-3 > top of Msdn Tech,Architecture,Architecture General...