Skip to main content

Adaptive Software

  • Chapter
  • First Online:
  • 1715 Accesses

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   139.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD   109.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. 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

    Google Scholar 

  2. 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

    Google Scholar 

  3. 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

    Google Scholar 

  4. 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

    Article  Google Scholar 

  5. 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

    Google Scholar 

  6. 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

    Google Scholar 

  7. 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

    Google Scholar 

  8. 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

    Article  Google Scholar 

  9. 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

    Google Scholar 

  10. 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

    Google Scholar 

  11. 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)

    Google Scholar 

  12. Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C.: Introduction to Algorithms, 3rd edn. MIT, Boston (2009)

    MATH  Google Scholar 

  13. 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

    Google Scholar 

  14. 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

    Google Scholar 

  15. Craig, I.D.: Object-Oriented Programming Languages: Interpretation, 1st edn. Springer, London/New York (2007)

    MATH  Google Scholar 

  16. Douglass, B.P., Harel, D.: Real-Time UML: Developing Efficient Objects for Embedded Systems, 1st edn. Addison-Wesley, Reading (1997)

    Google Scholar 

  17. 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

    Google Scholar 

  18. 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

    Google Scholar 

  19. 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

    Google Scholar 

  20. 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)

    Google Scholar 

  21. 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

    Google Scholar 

  22. Goloubeva, O., Rebaudengo, M., Reorda, M.S., Violante, M.: Software-Implemented Hardware Fault Tolerance. Springer, New York (2006)

    MATH  Google Scholar 

  23. 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)

    Google Scholar 

  24. Hirschfeld, R., Costanza, P., Nierstrasz, O.: Context-oriented programming. J. Object Technol. 7(3), 125–151 (2008)

    Google Scholar 

  25. 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)

    Google Scholar 

  26. 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

    Article  Google Scholar 

  27. 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

    Article  MATH  Google Scholar 

  28. ITRS: ITRS 2009 Roadmap. Tech. rep., International Technology Roadmap for Semiconductors (2009)

    Google Scholar 

  29. 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)

    Google Scholar 

  30. 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)

    Google Scholar 

  31. 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)

    Chapter  Google Scholar 

  32. Low, J.R.: Automatic data structure selection: an example and overview. Commun. ACM 21, 376–385 (1978). doi:10.1145/359488.359498

    Article  Google Scholar 

  33. 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)

    Chapter  Google Scholar 

  34. 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)

    Google Scholar 

  35. Normand, E.: Single event upset at ground level. IEEE Trans. Nucl. Sci. 43(6), 2742–2750 (1996). doi:10.1109/23.556861

    Article  Google Scholar 

  36. 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

    Article  Google Scholar 

  37. Patterson, D.: The trouble with multicore: chipmakers are busy designing microprocessors that most programmers can’t handle. IEEE Spectrum (2010)

    Google Scholar 

  38. Pierce, B.C.: Types and Programming Languages, 1st edn. MIT, Cambridge (2002)

    Google Scholar 

  39. Pradhan, D.K.: Fault-Tolerant Computer System Design. Prentice Hall, Upper Saddle River (1996)

    Google Scholar 

  40. 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

    Google Scholar 

  41. 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

    Google Scholar 

  42. 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

    Article  Google Scholar 

  43. 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

    Google Scholar 

  44. 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

    Google Scholar 

  45. 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

    Google Scholar 

  46. 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

    Google Scholar 

  47. 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

    Google Scholar 

  48. 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

    Google Scholar 

  49. W3C: Web services description language (WSDL) version 2.0 part 1: Core language. Tech. rep., World Wide Web Consortium (2007)

    Google Scholar 

  50. 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

    Google Scholar 

  51. 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

    Google Scholar 

  52. 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

    Google Scholar 

  53. 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

    Google Scholar 

  54. 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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ronaldo Rodrigues Ferreira .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics