Hi,
I've been asked often what my relationship as an "enterprise software" guy with embedded software is. In the enterprise world you don't have those stringent resource constraints,
operational quality requirements, and hardware dependencies as in embedded software. Conversely, a lot of technologies and practices of enterprise software development do not transfer to emmbedded software development, such as agile processes, and component and communication middleware.
Well, the truth is, that this is actually not true. In fact, both domains share a lot of properties, only at an other end of the same scale. For instance, even in the largest enterprise-level systems, such as online book stores and search engines, you can't throw arbitrary many hardware against the software. In those types of systems, memory, disc-space, CPU time, etc. are quite limited resources! Otherwise their total cost of ownership quickly become unaffordable. On the other hand, you as a user of such systems expect an appropriate quality of service, regardless how many other people are using the systems at the same time. As a consequence, a lot of techniques from the embedded domain, such as memory budgets, time-triggered computation, etc., also apply in the enterprise world.
Likewise, even the smallest embedded software system can benefit from technologies that are typically applied at the enterprise level. On Tuesday, January 23rd, 14:00 - 14:45, we have a talk at OOP on exactly this subject (in German):
Einsatz moderner Software-Entwicklungsmethoden bei Embedded Systemen am Beispiel eines Frameworks für verteilte „Mikro”-Anwendungen from Josef Brandstetter.
In this talk Josef demonstrates how agile software development, test-driven development, model-driven development, patterns, frameworks, and standard software platforms, helped building a flexible, yet real-time capable communication middleware for small embedded devices.
This is why I am interested in embedded software -- because I, as an enterprise guy, can learn from the embedded domain, and vice versa, I think, developers of embedded software can learn much from enterprise people. This vision, actually, shaped the design of the embedded software track at OOP: showing that both worlds, enterprise and embedded, are less different than they might appear at a first glance.
Thanks.
Frank
Dienstag, 5. Dezember 2006
Abonnieren
Kommentare zum Post (Atom)
1 Kommentar:
The question from my viewpoint is: what are the differences between those types of systems? Embedded systems typically are event-driven, but so are many enterprise apps. Embedded sytems have really stringent resource requirements (operational qualities) as you pointed out. On the other side, even small devices offer impressing features today. Nonetheless, resource management might be more challenging. For the same reason, embedded developers might be a little bit more conservative on the technologies being used - it makes no sense to use EJB for most embedded environments.
A really hard task is to implement developmental qualities in those embedded systems as their effect on operational qualities might be non-deterministic or difficult to evaluate. In many embedded systems, system architecture aspects are important as these systems typically are software-intensive but it is not trivial or even impossible to partition the system into hardware and software. Moreover, many embedded systems are implemented in the context of product lines.
All of these factors and more must be addressed in a software development project for embedded systems. From my experience, this requires a software development (and architecture design) process with less dehrees of freedom than in a "normal" enterprise development. Taking these differences into account, embedded and enterprise architects can share many practices.
Kommentar veröffentlichen