The Community for Technology Leaders
RSS Icon
Subscribe
Issue No.01 - January/February (2011 vol.37)
pp: 4-23
Brian Demsky , University of California, Irvine, Irvine
ABSTRACT
We present Bristlecone, a programming language for robust software systems. Bristlecone applications have two components: a high-level organization specification that describes how the application's conceptual operations interact and a low-level operational specification that describes the sequence of instructions that comprise an individual conceptual operation. Bristlecone uses the high-level organization specification to recover the software system from an error to a consistent state and to reason how to safely continue the software system's execution after the error. We have implemented a compiler and runtime for Bristlecone. We have evaluated this implementation on three benchmark applications: a Web crawler, a Web server, and a multiroom chat server. We developed both a Bristlecone version and a Java version of each benchmark application. We used injected failures to evaluate the robustness of each version of the application. We found that the Bristlecone versions of the benchmark applications more successfully survived the injected failures. The Bristlecone compiler contains a static analysis that operates on the organization specification to generate a set of diagrams that graphically present the task interactions in the application. We have used the analysis to help understand the high-level structure of three Bristlecone applications: a game server, a Web server, and a chat server.
INDEX TERMS
Software robustness.
CITATION
Brian Demsky, "Bristlecone: Language Support for Robust Software Applications", IEEE Transactions on Software Engineering, vol.37, no. 1, pp. 4-23, January/February 2011, doi:10.1109/TSE.2010.27
REFERENCES
[1] M. Accetta, R. Baron, W. Bolosky, D. Golub, R. Rashid, A. Tevanian, and M. Young, "Mach: A New Kernel Foundation for UNIX Development," Proc. USENIX Summer Conf., 1986.
[2] G. Agha, I.A. Mason, S.F. Smith, and C.L. Talcott, "A Foundation for Actor Computation," J. Functional Programming, vol. 7, no. 1, pp. 1-72, 1997.
[3] G. Ammons, R. Bodik, and J.R. Larus, "Mining Specifications," Proc. 29th Ann. ACM Symp. Principles of Programming Languages, 2002.
[4] T. Anderson and R. Kerr, "Recovery Blocks in Action: A System Supporting High Reliability," Proc. Second Int'l Conf. Software Eng., pp. 447-457, 1976.
[5] J. Armstrong, "Making Reliable Distributed Systems in the Presence of Software Errors," PhD thesis, Swedish Inst. of Computer Science, Nov. 2003.
[6] A. Avizienis, "The Methodology of n-Version Programming," 1995.
[7] W.O. Baker, I.M. Ross, J.S. Mayo, and D.C. Stanzione, "Bell Labs Innovations in Recent Decades," Bell Labs Technical J., vol. 5, no. 1, pp. 3-16, Jan.-Mar. 2000.
[8] N. Benton, L. Cardelli, and C. Fournet, "Modern Concurrency Abstractions for C#," Proc. 16th European Conf. Object-Oriented Programming, 2002.
[9] C. Boyapati, S. Khurshid, and D. Marinov, "Korat: Automated Testing Based on Java Predicates," 2002.
[10] G. Candea and A. Fox, "Recursive Restartability: Turning the Reboot Sledgehammer into a Scalpel," Proc. Workshop Hot Topics in Operating Systems, pp. 110-115, May 2001.
[11] K.M. Chandy and C. Ramamoorthy, "Rollback and Recovery Strategies," IEEE Trans. Computers, vol. 21, no. 2, pp. 137-146, Feb. 1972.
[12] W.R. Cook, S. Patwardhan, and J. Misra, "Workflow Patterns in Orc," Proc. 2006 Int'l Conf. Coordination Models and Languages, 2006.
[13] J.C. Corbett, M.B. Dwyer, J. Hatcliff, S. Laubach, C.S. Pasareanu, Robby, and H. Zheng, "Bandera: Extracting Finite-State Models from Java Source Code," Proc. 2000 Int'l Conf. Software Eng., 2000.
[14] B. Demsky, C. Cadar, D. Roy, and M.C. Rinard, "Efficient Specification-Assisted Error Localization," Proc. Second Int'l Workshop Dynamic Analysis, 2004.
[15] B. Demsky and A. Dash, "Bristlecone: A Language for Robust Software Systems," Proc. 2008 European Conf. Object-Oriented Programming, 2008.
[16] B. Demsky and M. Rinard, "Data Structure Repair Using Goal-Directed Reasoning," Proc. 2005 Int'l Conf. Software Eng., May 2005.
[17] M.D. Ernst, A. Czeisler, W.G. Griswold, and D. Notkin, "Quickly Detecting Relevant Program Invariants," Proc. 22nd Int'l Conf. Software Eng., June 2000.
[18] D. Garlan and D. Notkin, "Formalizing Design Spaces: Implicit Invocation Mechanisms," Proc. Fourth Int'l Symp. VDM Europe on Formal Software Development—Volume I, pp. 31-44, 1991.
[19] D. Gelernter, "Generative Communication in Linda," ACM Trans. Programming Languages and Systems, vol. 7, no. 1, pp. 80-112, 1985.
[20] R. Ghiya and L.J. Hendren, "Is It a Tree, a Dag, or a Cyclic Graph? A Shape Analysis for Heap-Directed Pointers in C," Proc. 23rd ACM SIGPLAN-SIGACT Symp. Principles of Programming Languages, 1996.
[21] J.B. Goodenough, "Structured Exception Handling," Proc. Second ACM SIGACT-SIGPLAN Symp. Principles of Programming Languages, 1975.
[22] J. Gray and A. Reuter, Transaction Processing: Concepts and Techniques. Morgan Kaufmann, 1993.
[23] T. Harris, "Exceptions and Side-Effects in Atomic Blocks," Science of Computer Programming, vol. 58, no. 3, pp. 325-343, 2005.
[24] G. Haugk, F. Lax, R. Royer, and J. Williams, "The 5ESS(TM) Switching System: Maintenance Capabilities," AT&T Technical J., vol. 64, no. 6, pp. 1385-1416, July/Aug. 1985.
[25] C. Hewitt and H.G. Baker, "Actors and Continuous Functionals," technical report, Massachusetts Inst. of Tech nology, 1978.
[26] K. Huang, J. Wu, and E.B. Fernandez, "A Generalized Forward Recovery Checkpointing Scheme," Proc. 1998 Ann. IEEE Workshop Fault-Tolerant Parallel and Distributed Systems, Apr. 1998.
[27] W.M. Johnston, J.R.P. Hanna, and R.J. Millar, "Advances in Dataflow Programming Languages," ACM Computing Surveys, vol. 36, no. 1, pp. 1-34, 2004.
[28] G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin, "Aspect-Oriented Programming," Proc. 11th European Conf. Object-Oriented Programming, pp. 220-242, 1997.
[29] G.T. Leavens, K.R.M. Leino, E. Poll, C. Ruby, and B. Jacobs, "JML: Notations and Tools Supporting Detailed Design in Java," Proc. Conf. Object Oriented Programming Systems Languages and Applications, pp. 105-106, 2000.
[30] B. Liskov, M. Day, M. Herlihy, P. Johnson, G. Leavens, R. Scheifler, and W. Weihl, "Argus Reference Manual," Technical Report MIT-LCS-TR-400, Massachusetts Inst. of Tech nology, Nov. 1987.
[31] M. Mehl, "The Oz Virtual Machine—Records, Transients, and Deep Guards," PhD thesis, Technische Fakultät der Univ. des Saarlandes, 1999.
[32] B. Meyer, "Design by Contact," Computer, vol. 23, no. 10, pp. 40-51, Oct. 1992.
[33] S. Mourad and D. Andrews, "On the Reliability of the IBM MVS/XA Operating System," IEEE Trans. Software Eng., vol. 13, no. 10, pp. 1135-1139, Oct. 1987.
[34] M.G. Nanda, C. Grothoff, and S. Chandra, "Deriving Object Typestates in the Presence of Inter-Object References," Proc. 20th Ann. ACM SIGPLAN Conf. Object Printed Programming, Systems, Languages, and Applications, 2005.
[35] V.S. Pai, P. Druschel, and W. Zwaenepoel, "Flash: An Efficient and Portable Web Server," Proc. USENIX 1999 Ann. Technical Conf., pp. 199-212, 1999.
[36] D. Patterson, A. Brown, P. Broadwell, G. Candea, M. Chen, J. Cutler, P. Enriquez, A. Fox, E. Kcman, M. Merzbacher, D. Oppenheimer, N. Sastry, W. Tetzlaff, J. Traupman, and N. Treuhaft, "Recovery-Oriented Computing (ROC): Motivation, Definition, Techniques, and Case Studies," Technical Report UCB//CSD-02-1175, Univ. of California, Berkeley, Computer Science, Mar. 2002.
[37] J.S. Plank, M. Beck, G. Kingsley, and K. Li, "Libckpt: Transparent Checkpointing under Unix," Proc. Usenix Winter Technical Conf., pp. 213-223, Jan. 1995.
[38] M. Rinard, "Probabilistic Accuracy Bounds for Fault-Tolerant Computations That Discard Tasks," Proc. 20th ACM Int'l Conf. Supercomputing, 2006.
[39] M. Sagiv, T. Reps, and R. Wilhelm, "Parametric Shape Analysis via 3-Valued Logic," Proc. Symp. Principles of Programming Languages, pp. 105-118, 1999.
[40] E. Shapiro, "The Family of Concurrent Logic Programming Languages," ACM Computing Surveys, vol. 21, no. 3, pp. 413-510, 1989.
[41] P.P. Shirvani, N.R. Saxena, and E.J. McCluskey, "Software-Implemented EDAC Protection against SEUs," IEEE Trans. Reliability, vol. 49, no. 3, pp. 273-284, Sept. 2000.
[42] G. Smolka, "The Oz Programming Model," Proc. European Workshop Logics in Artificial Intelligence, p. 251, 1996.
[43] R.E. Strom and S. Yemini, "Typestate: A Programming Language Concept for Enhancing Software Reliability," IEEE Trans. Software Eng., vol. 12, no. 1, pp. 157-171, Jan. 1986.
[44] A. Wasylkowski, A. Zeller, and C. Lindig, "Detecting Object Usage Anomalies," Proc. Sixth Joint Meeting of the European Software Eng. Conf. and the ACM SIGSOFT Symp. Foundations of Software Eng., pp. 35-44, 2007.
[45] M. Welsh, D.E. Culler, and E.A. Brewer, "SEDA: An Architecture for Well-Conditioned, Scalable Internet Services," Proc. 18th Symp. Operating Systems Principles, Oct. 2001.
[46] J. Whaley, M.C. Martin, and M.S. Lam, "Automatic Extraction of Object-Oriented Component Interfaces," Proc. 2002 ACM SIGSOFT Int'l Symp. Software Testing and Analysis, 2002.
[47] J.W. Young, "A First Order Approximation to the Optimum Checkpoint Interval," Comm. ACM, vol. 17, no. 9, pp. 530-531, 1974.
[48] Y. Zhang, D. Wong, and W. Zheng, "User-Level Checkpoint and Recovery for LAM/MPI," ACM SIGOPS Operating Systems Rev., vol. 39, no. 3, pp. 72-81, 2005.
17 ms
(Ver 2.0)

Marketing Automation Platform Marketing Automation Tool