Abstract
We previously developed a component-oriented model that combines ideas from self-organizing architectures and from design by contract to address the complexity of design in multi-threaded systems. Components in our model are cohesive collections of objects that publish contracts declaring the conditions under which they access other components. These contracts localize a component’s contextual synchronization dependencies in its interface. Moreover, the resulting systems permit strong guarantees of safety.
This paper reports a case study to validate the efficacy of our model on a realistic design problem: the component-based design of a multi-threaded web server. We first developed a bare-bones web server based on the Apache architecture and then subjected this design to three extension tasks. The study corroborates that our model enables a fine-grain component-based design of multi-threaded applications of realistic complexity, while guaranteeing freedom from certain synchronization errors.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Szyperski, C.: Component software: Beyond object-oriented programming. Addison-Wesley, Reading (2002)
Magee, J., Kramer, J.: Dynamic structure in software architectures. In: Proc. of the 4th ACM SIGSOFT Symposium on the Foundations of Software Engineering (1996)
Meyer, B.: Object-Oriented Software Construction. Prentice-Hall, Englewood Cliffs (1997)
Behrends, R., Stirewalt, R.E.K.: The universe model: An approach for improving the modularity and reliability of concurrent programs. In: Proc. of ACM SIGSOFT Symp. on the Foundations of Software Engineering (FSE 2000), pp. 20–29 (2000)
Behrends, R.: Designing and Implementing a Model of Synchronization Contracts in Object-Oriented Languages. PhD thesis, Michigan State University (2003)
Behrends, R., Stirewalt, R.E.K., Dillon, L.K.: Avoiding serialization vulnerabilities through the use of synchronization contracts. In: Proc. of the Workshop on Specification and Automated Processing of Security Requirements (2004), Held in conjunction with the IEEE Intl. Conf. on Automated Software Engineering
Lerdorf, R.: PHP and Apache2 (2004), http://news.php.net/php.internals/10491
The Apache Software Foundation: Apache 2.0 thread safety issues (2005), http://httpd.apache.org/docs-2.0/developer/thread_safety.html
Common Vulnerabilities and Exposures (CVE) Editorial Board : Candidate number 2003- 0189 (2003), http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0189
Common Vulnerabilities and Exposures (CVE) Editorial Board : Candidate number 2003- 0789 (2003), http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2003-0789
Ricca, F., Tonella, P.: Analysis and testing of web applications. In: Proceedings of the 23rd International Conference on Software Engineering, IEEE, Los Alamitos (2001)
Sabbah, D.: Software engineering and the internet. In: Proceedings of the 23rd International Conference on Software Engineering, IEEE Computer Society Press, Los Alamitos (2001), Keynote speech
Meyer, B.: Eiffel: the Language. Prentice-Hall, Englewood Cliffs (1992)
Abi-Antoun, M., Medvidovic, N.: Enabling the refinement of a software architecture into a design. In: France, R.B., Rumpe, B. (eds.) UML 1999. LNCS, vol. 1723, pp. 17–31. Springer, Heidelberg (1999)
Kaveh, N., Emmerich, W.: Deadlock detection in distributed object systems. In: Proc. of ESEC/FSE 2001 (2001)
Egyed, A., Medvidovic, N.: Consistent architectural refinement and evolution using the unified modeling language. In: Proc. of the 1st Workshop on Describing Software Architecture with UML (2001)
Grand, M.: Patterns in Java. A Catalog of Reusable Design Patterns Illustrated with UML, vol. 1. John Wiley and Sons, Chichester (1998)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
Netzer, R.H.B., Miller, B.P.: What are race conditions?: Some issues and formalizations. ACM Letters on Programming Languages and Systems 1, 74–88 (1992)
Eswaran, K.P., Gray, J.N., Lorie, R.A., Traiger, I.L.: The notions of consistency and predicate locks in a database system. Communications of the ACM 19, 624–633 (1976)
Ierusalimschy, R.: Programming in Lua. Lua.org (2004)
Schmidt, D.C., Stal, M., Rohnert, H., Buschmann, F.: Pattern-Oriented Software Architecture Volume 2 – Networked and Concurrent Objects. John Wiley and Sons, Chichester (2000)
Bloom, T.: Evaluating synchronisation mechanisms. In: Seventh International Symposium on Operating System Principles, pp. 24–32 (1979)
Holmes, D.: Synchronisation Rings - Composable Synchronisation for Object-Oriented Systems. PhD thesis, Macquarie University, Sydney (1999)
Hoare, C.A.R.: Communicating Sequential Processes. Prentice/Hall International, Englewood Cliffs (1985)
Hansen, P.B.: Java’s insecure parallelism. ACM SIGPLAN Notices 34 (1999)
Object Management Group: Corba component model, v3.0 (2002), http://www.omg.org/technology/documents/formal/components.htm
DeMichiel, L., Yalcinalp, L.U., Krishnan, S.: The Enterprise JavaBeans 2.0 specification (2001), http://java.sun.com/products/ejb/docs.html
Ranganath, V.P., et al.: Cadena: enabling CCM-based application development in Eclipse. In: OOPSLA Workshop on Eclipse Technology eXchange, pp. 20–24 (2003)
Cecchet, E., Marguerite, J., Zwaenepoel, W.: Performance and scalability of EJB applications. In: Proc. of ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 246–261 (2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Behrends, R., Stirewalt, R.E.K., Dillon, L.K. (2005). A Component-Oriented Model for the Design of Safe Multi-threaded Applications. In: Heineman, G.T., Crnkovic, I., Schmidt, H.W., Stafford, J.A., Szyperski, C., Wallnau, K. (eds) Component-Based Software Engineering. CBSE 2005. Lecture Notes in Computer Science, vol 3489. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11424529_17
Download citation
DOI: https://doi.org/10.1007/11424529_17
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-25877-3
Online ISBN: 978-3-540-32049-4
eBook Packages: Computer ScienceComputer Science (R0)