Abstract
Adaptability requires the software to change based on the several states that the adaptive hardware can assume, and, hence, current main stream programming languages, compilers, and runtime systems will not be enough to support software development for adaptive systems. We discuss techniques that could be used to support a changing environment, requirements and hardware resources in order to make the adaptive hardware platform a programmable device. The objective of this chapter is to discuss and present the challenges that a changing hardware platform imposes to software design, and to point a research agenda for adaptive software. Furthermore, this chapter presents a novel hardware/software framework that could foster new ideas and future research on adaptive systems.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Ansel, J., Chan, C., Wong, Y.L., Olszewski, M., Zhao, Q., Edelman, A., Amarasinghe, S.: Petabricks: a language and compiler for algorithmic choice. In: PLDI ’09: Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 38–49. ACM, New York (2009). doi:10.1145/1542476. 1542481
Arnold, M., Fink, S., Grove, D., Hind, M., Sweeney, P.F.: Adaptive optimization in the jalapeño jvm. In: OOPSLA ’00: Proceedings of the 15th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 47–65. ACM, New York, NY, USA (2000). doi:10.1145/353171.353175
Axelsen, E.W., Krogdahl, S.: Groovy package templates: supporting reuse and runtime adaption of class hierarchies. In: DLS ’09: Proceedings of the 5th Symposium on Dynamic Languages, pp. 15–26. ACM, New York (2009). doi:10.1145/1640134.1640139
Baldauf, M., Dustdar, S., Rosenberg, F.: A survey on context-aware systems. Int. J. Ad Hoc Ubiquitous Comput. 2, 263–277 (2007). doi:10.1504/IJAHUC.2007.014070
Bergel, A., Ducasse, S., Nierstrasz, O.: Classbox/j: controlling the scope of change in java. In: OOPSLA ’05: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 177–189. ACM, New York (2005). doi:10.1145/1094811.1094826
Boehm, B.: A view of 20th and 21st century software engineering. In: ICSE ’06: Proceedings of the 28th International Conference on Software Engineering, pp. 12–29. ACM, New York (2006). doi:10.1145/1134285.1134288
Borkar, S.: Microarchitecture and design challenges for gigascale integration. In: MICRO 37: Proceedings of the 37th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 3–3. IEEE Computer Society, Washington, DC (2004). doi:10.1109/MICRO.2004.24
Borkar, S.: Designing reliable systems from unreliable components: the challenges of transistor variability and degradation. IEEE Micro. 25, 10–16 (2005). doi:10.1109/ MM.2005.110
Chen, G., Kandemir, M.: Improving java virtual machine reliability for memory-constrained embedded systems. In: DAC ’05: Proceedings of the 42nd Annual Design Automation Conference, pp. 690–695. ACM, New York (2005). doi:10.1145/ 1065579.1065761
Childers, B., Davidson, J.W., Soffa, M.L.: Continuous compilation: a new approach to aggressive and adaptive code transformation. In: IPDPS ’03: Proceedings of the 17th International Symposium on Parallel and Distributed Processing. IEEE Computer Society, Washington, DC (2003). doi:10.1109/IPDPS.2003.1213375
Colyer, A., Clement, A., Harley, G., Webster, M.: Eclipse AspectJ: aspect-Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools, 1st edn. Addison-Wesley, Upper Saddle River (2004)
Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, 3rd edn. MIT, Boston (2009)
Costanza, P., Hirschfeld, R.: Reflective layer activation in contextl. In: SAC ’07: Proceedings of the 2007 ACM Symposium on Applied Computing, pp. 1280–1285. ACM, New York (2007). doi:10.1145/1244002.1244279
Cousot, P., Cousot, R.: Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL ’77: Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 238–252. ACM, New York (1977). doi:10.1145/512950. 512973
Craig, I.D.: Object-Oriented Programming Languages: Interpretation, 1st edn. Springer, London/New York (2007)
Douglass, B.P., Harel, D.: Real-Time UML: Developing Efficient Objects for Embedded Systems, 1st edn. Addison-Wesley, Reading (1997)
Driesen, K., Hölzle, U.: Minimizing row displacement dispatch tables. In: OOPSLA ’95: Proceedings of the Tenth Annual Conference on Object-oriented Programming Systems, Languages, and Applications, pp. 41–155. ACM, New York (1995). doi:10. 1145/217838.217851
Ferreira, R.R.: Automatic code generation and solution estimate for object-oriented embedded software. In: OOPSLA Companion ’08: Companion to the 23rd ACM SIGPLAN Conference on Object-oriented Programming Systems Languages and Applications, pp. 909–910. ACM, New York (2008). doi:10.1145/1449814.1449903
Florio, V.D., Blondia, C.: A survey of linguistic structures for application-level fault tolerance. ACM Comput. Surv. 40, 6:1–6:37 (2008). doi:10.1145/1348246.1348249
Freitas, E.P., Wehrmeister, M.A., Pereira, C.E., Wagner, F.R., Silva, E.T. Jr, Carvalho, F.C.: Using aspect-oriented concepts in the requirements analysis of distributed real-time embedded systems. In: IESS ’07: Proceedings of the IFIP International Embedded Systems Symposium, pp. 221–230. Springer US, New York (2007)
Fujii, K., Suda, T.: Semantics-based context-aware dynamic service composition. ACM Trans. Auton. Adapt. Syst. 4, 12:1–12:31 (2009). doi:10.1145/1516533.1516536
Goloubeva, O., Rebaudengo, M., Reorda, M.S., Violante, M.: Software-Implemented Hardware Fault Tolerance. Springer, New York (2006)
Green, T.R.G.: Cognitive dimensions of notations. In: Proceedings of the Fifth Conference of the British Computer Society, Human-Computer Interaction Specialist Group on People and Computers V, pp. 443–460. Cambridge University Press, New York (1989)
Hirschfeld, R., Costanza, P., Nierstrasz, O.: Context-oriented programming. J. Object Technol. 7(3), 125–151 (2008)
Hölzle, U., Ungar, D.: Do object-oriented languages need special hardware support? In: ECOOP ’95: Proceedings of the 9th European Conference on Object-Oriented Programming, pp. 283–302. Springer, London (1995)
Hölzle, U., Ungar, D.: Reconciling responsiveness with performance in pure object-oriented languages. ACM Trans. Program. Lang. Syst. 18, 355–400 (1996). doi:10.1145/233561.233562
Huang, K., Abraham, J.A.: Algorithm-based fault tolerance for matrix operations. IEEE Trans. Comput. 33(6), 518–528 (1984). doi:10.1109/TC.1984.1676475
ITRS: ITRS 2009 Roadmap. Tech. rep., International Technology Roadmap for Semiconductors (2009)
Kanawati, G.A., Nair, V.S.S., Krishnamurthy, N., Abraham, J.A.: Evaluation of integrated system-level checks for on-line error detection. In: IPDS ’96: Proceedings of the 2nd International Computer Performance and Dependability Symposium, pp. 292–301. IEEE Computer Society, Washington, DC (1996)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C.V., Loingtier, J.M., Irwin, J.: Aspect-oriented programming. In: ECOOP ’97: Proceedings of the European Conference on Object-Oriented Programming, pp. 220–242. Springer, London (1997)
Lafond, S., Lilius, J.: An energy consumption model for an embedded java virtual machine. In: Grass, W., Sick, B., Waldschmidt K. (eds.) ARCS ’06: Architecture of Computing Systems. Lecture Notes in Computer Science, vol. 3894, pp. 311–325. Springer, Berlin/Heidelberg (2006)
Low, J.R.: Automatic data structure selection: an example and overview. Commun. ACM 21, 376–385 (1978). doi:10.1145/359488.359498
Moreira, T., Wehrmeister, M., Pereira, C., Petin, J., Levrat, E.: Generating vhdl source code from uml models of embedded systems. In: Hinchey, M., Kleinjohann, B., Kleinjohann, L., Lindsay, P., Rammig, F., Timmis, J., Wolf M. (eds.) Distributed, Parallel and Biologically Inspired Systems. IFIP Advances in Information and Communication Technology, vol. 329, pp. 125–136. Springer, Boston (2010)
Mukherjee, S.S., Kontz, M., Reinhardt, S.K.: Detailed design and evaluation of redundant multithreading alternatives. In: ISCA ’02: Proceedings of the 29th Annual International Symposium on Computer Architecture, pp. 99–110. IEEE Computer Society, Washington, DC (2002)
Normand, E.: Single event upset at ground level. IEEE Trans. Nucl. Sci. 43(6), 2742–2750 (1996). doi:10.1109/23.556861
Oh, N., Shirvani, P.P., McCluskey, E.: Control-flow checking by software signatures. IEEE Trans. Reliab. 51(1), 111–122 (2002). doi:10.1109/24.994926
Patterson, D.: The trouble with multicore: chipmakers are busy designing microprocessors that most programmers can’t handle. IEEE Spectrum (2010)
Pierce, B.C.: Types and Programming Languages, 1st edn. MIT, Cambridge (2002)
Pradhan, D.K.: Fault-Tolerant Computer System Design. Prentice Hall, Upper Saddle River (1996)
Sahoo, S.K., Li, M., Ramachandran, P., Adve, S.V., Adve, V.S., Zhou, Y.: Using likely program invariants to detect hardware errors. In: DSN ’08: Proceedings of the IEEE International Conference on Dependable Systems and Networks, pp. 70–79. IEEE Computer Society, Los Alamitos (2008). doi:10.1109/DSN.2008.4630072
Sampson, A., Dietl, W., Fortuna, E., Gnanapragasam, D., Ceze, L., Grossman, D.: Enerj: approximate data types for safe and general low-power computation. In: PLDI ’11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 164–174. ACM, New York (2011). doi:10. 1145/1993498.1993518
Saxena, N.R., McCluskey, W.K.: Control-flow checking using watchdog assists and extended- precision checksums. IEEE Trans. Comput. 39, 554–559 (1990). doi:10.1109/ 12.54849
Shacham, O., Vechev, M., Yahav, E.: Chameleon: adaptive selection of collections. In: PLDI ’09: Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 408–418. ACM, New York (2009). doi:10. 1145/1542476.1542522
Ungar, D., Smith, R.B.: Self: the power of simplicity. In: OOPSLA ’87: Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications, pp. 227–242. ACM, New York (1987). doi:10.1145/38765.38828
Vemu, R., Gurumurthy, S., Abraham, J.: ACCE: Automatic correction of control-flow errors. In: ITC ’07: IEEE International Test Conference, pp. 1–10. IEEE Computer Society, Washington, DC (2007). doi:10.1109/TEST.2007.4437639
Vera, X., Abella, J., Carretero, J., González, A.: Selective replication: a lightweight technique for soft errors. ACM Trans. Comput. Syst. 27, 8:1–8:30 (2010). doi:10.1145/ 1658357.1658359
Vijaykrishnan, N.: Soft errors: is the concern for soft-errors overblown? In: ICT ’05: Proceedings of the IEEE International Test Conference, pp. 2–1271. IEEE Computer Society, Los Alamitos (2005). doi:10.1109/TEST.2005.1584102
Voss, M.J., Eigemann, R.: High-level adaptive program optimization with ADAPT. In: PPoPP ’01: Proceedings of the Eighth ACM SIGPLAN Symposium on Principles and Practices of Parallel Programming, pp. 93–102. ACM, New York (2001). doi:10. 1145/379539.379583
W3C: Web services description language (WSDL) version 2.0 part 1: Core language. Tech. rep., World Wide Web Consortium (2007)
Warth, A., Stanojević, M., Millstein, T.: Statically scoped object adaptation with expanders. In: OOPSLA ’06: Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 37–56. ACM, New York (2006). doi:10.1145/1167473.1167477
Wehrmeister, M.A., Freitas, E.P., Pereira, C.E., Rammig, F.: Genertica: a tool for code generation and aspects weaving. In: ISORC ’08: Proceedings of the 2008 11th IEEE Symposium on Object Oriented Real-Time Distributed Computing, pp. 234–238. IEEE Computer Society, Washington, DC (2008). doi:10.1109/ISORC.2008.67
Wehrmeister, M.A., Freitas, E.P., Pereira, C.E., Wagner, F.R.: An aspect-oriented approach for dealing with non-functional requirements in a model-driven development of distributed embedded real-time systems. In: ISORC ’07: Proceedings of the 10th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing, pp. 428–432. IEEE Computer Society, Washington, DC (2007). doi:10.1109/ISORC.2007.17
Whitehouse, K., Sharp, C., Brewer, E., Culler, D.: Hood: a neighborhood abstraction for sensor networks. In: MobiSys ’04: Proceedings of the 2nd International Conference on Mobile Systems, Applications, and Services, pp. 99–110. ACM, New York (2004). doi:10.1145/990064.990079
Zhao, M., Childers, B., Soffa, M.L.: Predicting the impact of optimizations for embedded systems. In: LCTES ’03: Proceedings of the 2003 ACM SIGPLAN Conference on Language, Compiler, and Tool for Embedded Systems, pp. 1–11. ACM, New York (2003). doi:10.1145/780732.780734
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer Science+Business Media New York
About this chapter
Cite this chapter
Ferreira, R.R., Carro, L. (2013). Adaptive Software. In: Beck, A., Lang Lisbôa, C., Carro, L. (eds) Adaptable Embedded Systems. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-1746-0_9
Download citation
DOI: https://doi.org/10.1007/978-1-4614-1746-0_9
Published:
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4614-1745-3
Online ISBN: 978-1-4614-1746-0
eBook Packages: EngineeringEngineering (R0)