TDDD05 Component-Based Software
Course bookComponent Software, Beyond Object-Oriented Programming, second edition, by Clemens Szyperski. Addison-Wesley, 2002. ISBN 0-201-74572-0. Not mandatory reading in 2015.
Most chapters of the Szyperski book will be covered by online lectures, at least at some degree. It also serves as background reading, providing more details on some of the topics that can not be treated exhaustively in the lectures. References to the corresponding chapters will be given on the slides as appropriate. Chapters 2, 3, 18, 19, 26, 27, 28 are not included in the course. Moreover, there are some lectures that are not covered by the book.
ReferencesPlease note that scientific papers from ACM, Springer or IEEE are available for download only if accessed through an Internet connection originating from within LiU or if you log in through your student account at
login.e.bibl.liu.se/login(see the links below).
On general issues and foundations:
- Software Quality, definitions and metrics
- Harpal Dhama, Quantitative models of cohesion and coupling in software, Journal of Systems and Software, Volume 29, Issue 1, April 1995, Pages 65-74.
- J. Maras, L. Lednicki, and I. Crnkovic: 15 years of CBSE symposium: impact on the research community. In Proceedings of the 15th ACM SIGSOFT symposium on Component Based Software Engineering (CBSE '12) pp. 61-70, 2004
- Parastoo Mohagheghi, Reidar Conradi, Ole M. Killi, Henrik Schwarz, An Empirical Study of Software Reuse vs. Defect-Density and Stability, ICSE, pp.282-292, 26th International Conference on Software Engineering (ICSE'04), 2004
J. Bishop, N. Horspool: Cross-Platform Development: Software that Lasts. IEEE Computer 39(10): 26-35, Oct. 2006.
- B. Meyer: Applying "Design by Contract". IEEE Computer 25(10): 40-51, Oct. 1992.
- Examples of Design By Contract support in programming languages
- Implementation of design-by-contract through the Java Modeling Language
L. Baresi, E. Di Nitto, C. Ghezzi: Toward Open-World Software: Issue and Challenges. IEEE Computer 39(10): 36-43, Oct. 2006.
OMG homepage. Material on CORBA, UML, MDA.
On Object-oriented software as composable software
- J. Bosch et al: Object-Oriented Frameworks - Problems & Experiences. Tech. report, Dept of CS and BA, University College of Karlskrona/Ronneby 1997.
- L. Mikhajlov, E. Sekerinski: A Study of The Fragile Base Class Problem. ECOOP 98, Springer LNCS 1445: 355-382, 1998.
- W. Harrison, H. Ossher: Subject-Oriented Programming (A Critique of Pure Objects). ACM OOPSLA 93 pp. 411-428.
- Reenskaug, Trygve, Per Wold, and Odd Arild Lehne. Working with objects: the OOram software engineering method. Greenwich: Manning, 1996.
- Reenskaug, Trygve, and Coplien, James. The DCI Architecture: A New Vision of Object-Oriented Programming. Artima Developer (2009).
- Qi4J. Advertised as "framework for domain centric application development, including evolved concepts from Aspect Oriented Programming, Dependency Injection and Domain Driven Design".
- Akka. Described like this "Using the Actor Model we raise the abstraction level and provide a better platform to build scalable, resilient and responsive applications".
On Component Models
K. Lau, Z. Wang: Software Component Models.
IEEE Trans. Softw. Eng. 33(10), Oct. 2007.
- I. Crnkovic, S. Sentilles, A. Vulgarakis, and M. Chaudron. A classification framework for software component models. Software Engineering, IEEE Transactions on, 37(5):593â€“615, Sept 2011.
- OSGi as a specification of component models in Java, which is implemented by several vendors such as the Eclipse foundation through Equinox.
- Equinox as a component model implementing OSGi. Used in the Eclipse IDE.
- OSGi? No Thanks by Ross Mason @ MuleSoft.
- Bonobo, the component model used in the desktop environment Gnome.
- KParts, the component model used in the desktop environment KDE.
- D-Bus, a messaging system used by Gnome and KDE to facilitate interprocess communication and component lifecycle management.
- The Fractal component model
- E. Bruneton, T. Coupaye, M. Leclercq, V. Quéma, and J.-B. Stefani. The FRACTAL component model and its support in Java. Software: Practice and Experience, 36(11-12):1257-1284, 2006.
- G. Hohpe, B. Woolf: Enterprise Integration Patterns. Addison Wesley 2004.
- Martin Fowler on integration techniques such as Remote Method Invocation and Messaging.
- ActiveMQ, a messaging system middleware that implements ideas from Enterprise Integration Patterns.
- M.-T. Schmidt, B. Hutchison, P. Lambros, and R. Phippen. The enterprise service bus: Making service-oriented architecture real. IBM Systems Journal, 44(4):781-797, 2005. (PDF)
On Java Reflection:
SUN Microsystems Inc.: Java Reflection Tutorial, 2014.
- CORBA vs ICE, a modern computation distribution platform similar to CORBA.
- M. Henning. A new approach to object-oriented middleware. IEEE Internet Computing, pages 66-75, January-February 2004.
- C. Munoz and J. Zalewski: Archictecture and Performance of Java-Based Distributed Object Models: CORBA vs RMI in Real-Time Systems, July 2001, Volume 21, Issue 1-2, pp 43-75.
- J. Siegel: Omg overview: CORBA and the OMA in enterprise computing. Communications of the ACM 41(10), Oct. 1998.
- Getting Started Using RMI-IIOP: Example Using POA-based server-side model in Java by Oracle.
M. Henning: The Rise and Fall of CORBA. (Viewpoint article). ACM Queue 4(5), 2006.
On EJB and Spring:
- JBoss, Open source EJB Container
- EJB tutorial focused on JBoss
- The Spring application framework, a competitor to EJB
On SOA / Web services:
- J. Bih: Service oriented architecture (SOA) a new paradigm to implement dynamic e-business solutions. ACM Ubiquity, Aug. 2006.
- G. Hohpe: SOA Patterns - New Insights or Recycled Knowledge? (White Paper on SOA Patterns, 2007).
- Wikipedia: BPEL for modelling Web Services
- W. M. P. van der Aalst: Don't go with the flow: Web services composition standards exposed. IEEE Intelligent Systems, Jan/Feb 2003.
On Software Architecture:
- P. Kruchten, H. Obbink and J. Stafford:The Past, Present, and Future for Software Architecture in IEEE Software, 23(2): 22-30, March-April 2006.
- N. Medvidovic. Moving architectural description from under the technology lamppost. In 32nd EUROMICRO Conference on Software Engineering and Advanced Applications, 2006.
- H. P. Breivold, I. Crnkovic, and M. Larsson. A systematic review of software architecture evolution research. Information and Software Technology, 54(1):16-40, January 2012.
- A. Tang, M. A. Babar, I. Gorton, and J. Han: A survey of architecture design rationale. In The Journal of Systems and Software, 79:1792-1804, 2006.
- R. K. Pandey: Architectural description languages (ADLs) vs UML: a review. ACM SIGSOFT Software Engineering Notes, 35(3): 1-5, May 2010.
- P. Feiler, B. A. Lewis, and S. Vestal. The SAE Architecture Analysis & Design Language (AADL) a standard for engineering performance critical systems. In Computer Aided Control System Design, 2006 IEEE International Conference on Control Applications, 2006 IEEE International Symposium on Intelligent Control, 2006 IEEE, pages 1206-1211, Oct 2006.
- D. Perry and A. Wolf: Foundations for the study of software architecture. ACM SIGSOFT Software Engineering Notes, 17(4):40-52, October 1992.
- Architecture Description Languages today
- AADL Wiki and main project page
On Aspect-Oriented Programming:
Aspect-oriented programming: Introduction. Special Issue, Communications of the ACM 44(10), October 2001.
G. Kiczales et al: Aspect Oriented Programming. in Proc. ECOOP'97, Springer LNCS, June 1997.
- P. Tarr, H. Ossher, W. Harrison, and S. M. Sutton, Jr. N degrees of separation: Multi-dimensional separation of concerns. In Proceedings of the 21st International Conference on Software Engineering, ICSE '99, pages 107-119, New York, NY, USA, 1999. ACM.
A. Rashid et al.: Aspect-Oriented Software Development in Practice: Tales from AOSD-Europe. IEEE Computer 43(2), Feb. 2010, pp. 19-26.
- In C#: Metaprogramming in C# 4.0 by Anders Hejlsberg (technical, requires C# knowledge)
- In C#: Creating dynamic objects @ MSDN
- In C#: Creating a domain-specific language in C# by using dynamic objects
- In Ruby: A short online tutorial on open classes
- In Ruby: A
short online tutorial on
define_methodand related concepts
- In Lisp: A Design-by-contract implementation in Lisp using the Meta-Object Protocol.
- In Java: An introduction to the CGLib bytecode manipulation library.
- Miao, Weiyu, and Jeremy Siek. "Compile-time reflection and metaprogramming for Java." Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation. ACM, 2014.
- Reppy, John, and Aaron Turon. "Metaprogramming with traits." ECOOP 2007-Object-Oriented Programming. Springer Berlin Heidelberg, 2007. 373-398.
- Plosch, Reinhold. "Design by Contract in Python" Software Engineering Conference, 1997. Asia Pacific and International Computer Science Conference 1997.
On dependency management systems
- Wikipedia entry on software package management
- The Rubygems software package format for Ruby
- The Debian package management system
- M. Melguidoum and F. Dagnat: Dependency Management in Software Component Deployment. Electronic Notes in Theoretical Computer Science 182 (2007) 17-32
On Model-Driven Engineering:
- Douglas C. Schmidt, Guest Editor's Introduction: Model-Driven Engineering, IEEE Computer, 39(2):25-31, Feb. 2006
- B. Selic. The pragmatics of model-driven development. IEEE Software, 20(5):19-25, September 2003.
- J. Hutchinson et al: Model-driven engineering practices in industry. In 2011 33rd International Conference on Software Engineering (ICSE).
- P. Mohagheghi et al: An empirical study of the state of the practice and acceptance of model-driven engineering in four industrial cases. In Empirical Software Engineering 18(1) 2013. Pages 89-116.
- Elmqvist, Hilding, and Sven Erik Mattsson. "An introduction to the physical modeling language Modelica." European Simulation Symposium. 1997.
- Fritzson, Peter, et al. "OpenModelica-A free open-source environment for system modeling, simulation, and teaching." IEEE International Conference on Control Applications, IEEE International Symposium on Computer-Aided, Control Systems Design, IEEE International Symposium on Intelligent Control, October 4-6, 2006, Munich, Germany. IEEE, 2006.
- OpenModelica project page
- P. Fritzon and V. Engelson. Modelica - a unified object-oriented language for system modeling and simulation. In ECOOP'98 - Object-Oriented Programming, pages 67-90, 1998.
Page responsible: Ola Leifler
Last updated: 2015-03-24