According to Barbosa, Sene, Carvalho, da Rocha, Nascimento, and Camapum (2006), two important concepts related to programmability in BSNs are: (i) deployment-time programmability, and (ii) run-time set-up. The deployment-time programmability refers to the definition of software artifacts and algorithms that are embedded in the sensor node. In BSNs, the inclusion of this functionality requires a programming interface that is suitable for healthcare personnel, as well as intelligent compilers. Intelligent compilers should be capable of handling implicit functional and nonfunctional requisites of a program. As an example, the inclusion of mechanisms and policies for energy saving could be treated by these structures. The run-time set-up refers to the capability for adjustments in run-time. The BSN should provide interactivity between the healthcare professional (the BSN manager) and the system. As a requisite, sensor nodes need mechanisms that allow a better control of the tasks that are being run. A possible solution is the use of data structures that allow preemptive multitasking. The goal of this article is to present the current state of the art, regarding programmability in BSNs. Moreover, we want to present potential benefits of a paradigm shift in which healthcare professionals become the actual programmers and maintainers of the BSNs. With that in mind, we briefly present a software architecture that has been developed with the goal of allowing programmability at network and sensor node levels.
Key Terms in this Chapter
Ontology: A data model that represents the entities that are defined and evaluated by its own attributes, and organized according to a hierarchy and a semantic. Ontologies are used for representing knowledge on the whole of a specific domain or on of it. In WSNs, ontologies are included in software architectures as a way of facilitating the search for relevant information. For example, in a BSN an ontology could be used for sensing a specific context (context awareess).
Preemptive Multitasking: An approach of multiprogramming. The operating system can interrupt the execution of a task and initiate the execution of another, in order to satisfy the restrictions that are defined by the policy that is being used for the scheduling of tasks. It also allows the execution of a task to be suspended or interrupted by a command received from the application.
Context Awareness: The capability of computational systems of determining circumstances and scenarios in which its users may be inserted, or simply determining information that is of interest to the system. To do so, the system uses rules (intelligent algorithms) and data that can be supplied by the user itself, or obtained by sensors. These data can also lead to probabilistic information. In this case, the context awareness is not exact, but instead, a hypothesis with an associated probability value.
Reflection: A concept related to software: programming languages, operating systems, middleware, and Graphical User Interface (GUI). A reflexive system offers mechanisms that allow its data structures to be inspected and/or modified during execution (at run-time). For this, the system must keep its selfrepresentation that is commonly organized as metadata. In nonreflexive systems, the metadata usually are lost or discarded during compilation, typically when the low-level codes (assembly language) are generated.
Multiprogramming: The approach that allows several processes to run simultaneously in a system. In a multiprogrammed sensor node, several programs are simultaneously maintained and managed in the memory by resident software. These programs are organized as tasks. The execution of these tasks follows a policy that is defined during the design of the system, and it is coordinated by a mechanism called task scheduler. In WSNs, there are two kinds of multiprogramming: (i) event-driven run-to-completion single thread approach, and (ii) preemptively time-sliced multithreading model.
Pervasive Monitoring: The capability of a system to keep itself operating under any condition. These conditions can be related not only to the location (space), but also to the time. They can also be related to technical conditions, such as connectivity, safety, and the amount of energy stored in the batteries.
Application-Oriented Operating System: An operating system that is designed or customized for fulfilling the interests of an application or of a set of similar applications that share a significant part of the requirements. This kind of system must include specific mechanisms and policies, in order to effectively serve the interest of the applications.
Quality of Service (QoS): The capability of the system of adjusting itself or of offering mechanisms that allow its adjustment in order to fulfill the requisites that are defined for each application. In WSNs the parameters that are commonly related to the quality of the service that is offered by this kind of system are application lifetime (which is related to energy consumption), connectivity, confidentiality, reliability, bandwidth, and transmission power.
Web Services: Modular, independent, selfdescriptive programs that are designed to guarantee interoperability among systems that are developed with different technologies and that interact in a computer network. Typically, Web services are described by using the WSDL (Web Services Description Language), and they use SOAP (Simple Object Access Protocol) for message exchange.
Automata or State Machines: A mathematical model that can be used for representing the behavior of a computational system. A state diagram is used for its graphical representation. Basically, an automatum is composed of states that can be graphically represented by circles and edges, which indicate the actions that are responsible by changes of state. In WSNs, usually the states are associated with the tasks, and the edges are directly related to the events that are responsible by the changes in states.