Collaboration underlies Embedded Systems-and that is mainly what distinguishes it from performance based learning programs. It is impossible to capture, store, and catalog the vast repository of "institutional knowledge" existing in the minds of employees. While early knowledge management efforts focused on formalizing that knowledge, there aren't many recorded success stories. The knowledge is too vast and dynamic to formalize it.
Instead, Embedded Systems learning provides the individual with access to this knowledge as opposed to embarking on an up-front capturing of what exists in the minds of dozens, and even thousands, of experts. The ability to capture and store the exchange, de facto, formalizes this knowledge.
The third characteristic of Embedded Systems is one that unnerves some learning technology vendors. Many of the technologies supporting embedded learning are already ubiquitous in offices today-email, instant messaging, search engines, online people directories, and portals. These technologies, and others, can often easily and cost-effectively be deployed in support of embedded learning. However, Embedded Systems requires tight integration into workplace tools and portals, so care should be taken not to declare it as a simple drop-in solution.
In standard Atomic Object fashion, we took our experience as a dare to accomplish the seemingly impossible. We went on to apply to embed software what we knew from experience to be very effective and complementary techniques – in particular Test-Driven Development (TDD) and Continuous Integration (CI). Inspired by an existing design pattern, we discovered and refined an approach to enable automated system tests, integration tests, and unit tests in embedded software and created a small C-based test framework [2]. As we tackled additional Embedded Systems projects, we further refined these methods, created a scriptable hardware-based system test fixture, developed the means to auto-generate mock functions for our integration tests, wrote scripts to generate code skeletons for our production code, and tied it all together with an automated build system.
Test-Driven Development and Continuous Integration are complementary practices. Code produced Embedded Systems test-first tends to be well designed and relatively easy to integrate with other code. Incrementally adding small pieces of a system to a central source code control system ensures the whole system compiles without extensive integration work.
Running tests allows developers to find integration problems early as new code is added to the system. An automated build system complemented by regression test suites ensures a system grows Embedded Systems responsibly in features and size and exists in a near ready-to-release fashion at all times.
No comments:
Post a Comment