Prof. Jeff Kramer
Email: <j.kramer AT SPAMFREE imperial DOT ac DOT uk>
Distributed Software Engineering Section
Distributed computing: architecture description languages and support environments; distributed algorithms; dynamic configuration and self-organising systems.
Software architectures: Architectural Description Languages (ADL): structural concepts; underlying theory; application to the specification, analysis and construction of concurrent and distributed software systems.
Behaviour analysis: compositional techniques for modelling and analysis of concurrent and distributed systems: Labelled Transition Systems (LTS) and Compositional Reachability Analysis (CRA); probabilistic models.
Software evolution and change: Change as fundamental in architecture definition: rigorous techniques for unplanned change, decentralised development and conflict detection using ADLs.
- Evolve is a flexible and lightweight software tool for software component reuse and evolution, providing a more principled way to construct and maintain software systems than approaches such as dependency injection
Adaptive software systems: rigorous architectural approaches to self-organised adaptive software, including dynamic planning, component assembly and execution.
Requirements analysis: multiple perspectives (ViewPoints): inconsistency; requirements evolution, synthesis of behaviour models from scenarios and goals; experimental plugin version of LTSA; requirements elaboration combining model checking and machine learning.
Book and Course Material
Concurrency: State Models and Java Programs BOOK ( Wiley 2006, 2nd Edition)
- Concurrency Course: A twenty lecture course based on the book.
- The material includes slides, Java applets and the LTSA analysis tool.
Japanese version of the slides - courtesy of Prof Tetsuo Tamai. (Slides)
Distributed Algorithms Course
Fellow of The Royal Academy of Engineering (FREng) in 2008.
Fellow of The City and Guilds of London Institute (FCGI) in 2007.
Fellow of the ACM, (FACM) 2001 Association for Computing Machinery, New York.
Fellow of The Institution of Engineering and Technology, (FIET) in 1992.
Chartered Fellow of The British Computer Society, (FBCS) in 2005.
ACM SIGSOFT Outstanding Research Award (award) in 2005 for significant and lasting research contributions to software engineering (joint with Jeff Magee).
ACM SIGSOFT Distinguished Service Award (award) in 2011 in recognition of his significant and extensive service to the Software Engineering community.
Most Influential Paper Award (award) at International Conference on Software Engineering (ICSE 2003) for the paper from the ICSE meeting of 10 years previously judged to have had the most influence on the theory or practice of software engineering during the 10 years since its original publication. The award-winning paper is entitled "Expressing the Relationships Between Multiple Views in Requirements Specifications", and was co-authored by B. Nuseibeh and A. Finkelstein and published in the IEEE Proceedings of ICSE-93 held in Baltimore, USA, in May 1993.
ACM SIGSOFT retrospective Impact Paper Award (award) in 2012 for a highly influential paper presented at a SIGSOFT conference at least 10 years prior. The award-winning is the 1996 paper entitled “Dynamic Structure in Software Architectures”, Proc. of the 4th ACM SIGSOFT Symposium on Foundations of Software Engineering (FSE), in San Francisco in 1996, co-authored with J. Magee.
Best Paper awards:
Kramer, J., and Cunningham, R.J., "Towards a Notation for the Functional Design of Distributed Processing Systems", (IEEE Int. Conf. on Parallel Processing, 1978), 69-76. Award for the Most Original Paper.
Russo, A. Miller, R., Nuseibeh, B. and Kramer, J., “An abductive approach for analysing event-based requirements specifications”, (International Conference on Logic Programming Copenhagen, Denmark, July 29th - August 1st, 2002). Best Applications Paper Award.
Conference Involvement (2008 ...)
Workshop Co-Chair for ICSE 2008 Workshop on The Role of Abstraction in Software Engineering (ROA '08), Leipzig, May 2008.
RE Member of the Program Board of the 16th IEEE International Requirements Engineering Conference (RE'08), Barcelona, September 2008.
MODELS Invited Keynote at ACM/IEEE 11th International Conference on Model Driven Engineering Languages and Systems (MODELS 2008), Toulouse, October 2008.
ICSE Member of the Program Committee of 31st ACM/IEEE International Conference on Software Engineering (ICSE 2009), Vancouver, May 2009.
ICSE General Co-Chair for ACM/IEEE International Conference on Software Engineering (ICSE-2010), Cape Town, May, 2010.
Programme Co-Chair for IEEE Israeli Software Engineering Conference (SwSTE'10), Herzlia, June 2010.
ICSE Invited Keynote at 34th ACM/IEEE International Conference on Software Engineering (ICSE 2012), Zurich, June 2012.
APSEC Invited Keynote at 19th ACM/IEEE Asia-Pacific Conference on Software Engineering (APSEC 2012), Hong Kong, December 2012.
**** Keynote slides (Download: 12.4Mb)
Impact Project: ACM SIGSOFT study of the impact of software engineering research on software engineering practice.
Editor in Chief of Transactions on Software Engineering (IEEE TSE) (2006 - 2009 )
Associate Editor of ACM Transactions on Software Engineering and Methodology (TOSEM) (1995-2001)
Inaugural Lecture as Professor of Distributed Computing
One of the ways in which traditional engineers cope with the design of large and complex systems is to build models, simplified representations of aspects of the real world. These models are used to check particular properties of the system and its environment. Software engineers have also adopted this approach, but tend to disagree about the role of modelling, the form of the models, and the means of relating different models to the software system. For many distributed systems, software architecture can provide a unifying framework for these concerns.
Software architecture is the overall structure of a system in terms of its constituent components and their interconnections. It can be used to provide the "skeleton" upon which to flesh out the particular details of concern. For analysis, we can associate behavioural descriptions with the components and reason about the behaviour of systems composed from these components according to the architecture. For system construction, we can associate implementations with the components of the architecture. Systems developed in this way have an explicit structural skeleton which, being shared, helps to maintain consistency between the system and the various elaborated models.
16th December 1997, Department of Computing, Imperial College.
Vote of Thanks: Prof. Carlo Ghezzi, Dipartimento di Elettronica e Informazione, Politecnico di Milano.
DSE Section (with thanks to Keng Ng).