TC 2 - SOFTWARE: Theory and Practice - Aims and Scopes

est. 1962, revised 1982, 1990


To obtain a deeper understanding of programming concepts in order to improve the quality of software by studying all aspects of the software development process, both theoretical and practical.  


The scope of the committee encompasses all aspects of the software development process including the specification, design, implementation and validation of software systems. Areas of present activity are:

  • formal models of software concepts
  • programming languages and techniques
  • models for information storage and processing
  • program support environments
  • user interfaces to software systems
  • software quality

WG2.1 - Algorithmic Languages and Calculi
est. 1962, revised 1963, 1990, 1992


To explore and evaluate new ideas in the field of programming, possibly leading to the design of new languages.  


·       the study of calculation of programs from specifications;

·       the design of notations for such calculations;

·       the formulation of algorithm theories, using such notations;

·       the investigation of software support for program derivation;

·       continuing responsibility for ALGOL 60 and ALGOL 68. 

WG2.2 - Formal Description of Programming-Concepts
est. 1965, revised 1991


The aim of the Working Group is to explicate programming concepts through the development, examination and comparison of various formal models of these concepts. 


The Working Group will investigate formalisms and models which represent different approaches to formal specification of programming concepts. The models of concern must, at least in part:

·       apply to the actual computing milieu;

·       have sufficient generality to describe total systems or useful subsystems;

·       treat either:
- problem specification or
- solution specification;

·       provide practical guides towards derivation of:
- capabilities,
- correctness,
- equivalence,
- implementability,
- performance;

·       assist in standards development and specification;

·       have a pedagogical utility.

WG2.3 - Programming Methodology
est. 1969, revised 1991


To increase programmers' ability to compose programs. 


·       identification of sources of difficulties encountered in present day programming;

·       the interdependence between the formulation of problems and the formulation of programs, and the mapping of relations existing in the world of problems into relations among programs and their components;

·       intellectual disciplines and problem-solving techniques which can aid programmers in the composition of programs;

·       the problem of achieving program reliability;

·       the consequences of requirements for program adaptability;

·       the problem of probability of program correctness and its influence on the structure of programs and on the process of their composition;

·       guidelines for partitioning large programming tasks and defining the interfaces between the parts;

·       software for mechanized assistance to program composition. 

WG2.4 - Software Implementation Languages
est. 1973, revised 1991, 1992


To promote the exchange of information between researchers and users of languages for the description of software systems at all stages of development and support. The particular focus of the group is upon the pragmatic engineering aspects of the problem: measurements, evaluation, critical comparisons, and development of economically viable techniques. 


·       experience in the actual use of systems implementation languages;

·       the relation of language design to the problems of system maintenance and enhancement;

·       impacts of programming methodology on system implementation languages;

·       compilation techniques for system implementation languages;

·       software and hardware environments to facilitate the design, construction and maintenance of large software systems;

·       software portability and reusability, and their relationship to machine dependence.

WG2.5 - Numerical Software
est. 1974, revised 1991, 2006


To improve the quality of scientific computation by promoting the development and availability of sound numerical software.  


1.   Environment. The definition from a numerical standpoint of a set of hardware and software features for a computing system.

2.   Tools. The development and improvement of programming languages and other tools for numerical computation.

3.   Algorithms. The establishment of guidelines for the assessment of numerical algorithms and their implementations.

4.   Software. The establishment of guidelines for the preparation, interoperability, verification, validation, documentation, distribution and maintenance of numerical software.

5.   Data. The establishment of guidelines for the validation, documentation, preservation, and distribution of numerical data.

6.   Communication. The exchange of information concerning numerical software and the determination of the needs of computer users.

WG2.6 - Database
est. 1974, revised 1985, 1991, 1997


For the benefit of society, to promote visibility and to increase the impact of research and development in the database area, especially in the fields defined in the scope of the working group.

·       To promote quality and relevance of academic and industrial research and development in the database area.

·       To promote ethical behavior and appropriate recommendations or guidelines for research related activities, e.g. submission and selection of publications, organization of conferences, allocation of grants and awards, and evaluation of professional merits and curricula.

·       To promote cooperation between researchers and with other established bodies and organizations pursuing the above aims.

·       To contribute to assessing the scientific merits and practical relevance of proposed approaches for data and knowledge management.


The notion of database has evolved to include systems that accept, describe, store and enable manipulation and presentation of data, information and knowledge in a wide spectrum of forms, ranging from tuples to rules, text, images, sounds and others, with their corresponding operators, usage and management.

The group's interests cover formalisms, models, architectures, techniques and methodologies for the purpose of designing and realizing such database systems.

These currently include in particular:

·       new models, languages and theories for database design and representation

·       new architectures and techniques, e.g. data warehouses, data mining, multimedia and spatio-temporal databases

·       impact of new communication technologies, such as Internet, broadband networks or wireless communications

·       understanding, reuse and interoperation of existing data stores

·       visual user interfaces and information visualization

·       new methodologies for building database applications

WG2.7 - User Interface Engineering
est. 1975, revised 1987, 1991


To investigate the nature, concepts and construction of user interfaces for software systems. 


·       increase understanding of the development of user interfaces based on knowledge of system and user behaviour.

·       provide a framework for reasoning about interactive systems;

·       provide an engineering model for the development of user interfaces. 

WG2.8 - Functional Programming
est. 1987, revised 1991


To study the design, implementation, and use of functional (applicative) languages. 


·       semantic theories for functional languages;

·       specification and correctness for functional programs;

·       data and demand driven execution models;

·       programming with higher-order functions;

·       functional approaches to input-output and persistent memory;

·       programming systems based on functional languages;

·       novel architectures for functional programming systems;

·       implementation based on combinator graph reduction;

·       multiple processor implementations;

·       programming styles and techniques appropriate for functional languages;

·       applications and experience. 

WG2.9 - Software Requirements Engineering)
est. 1993


The aim of the Working Group is to develop a better understanding of:

·       the elicitation, specification, analysis and management of the requirements for large and complex software intensive systems;

·       the interpretation and documentation of those requirements in such a way as to permit the developer to construct a system which will satisfy them. 


The Scope of the WG includes all aspects of requirements engineering. Some examples of areas of special interest are:

·       formal representation schemes and requirements modelling;

·       descriptions of the requirements engineering process;

·       tools and environments to support requirements engineering;

·       requirements engineering methods;

·       requirements analysis and validation;

·       requirements elicitation, acquisition and formalisation;

·       methods and tools for verification of implementations compliance with requirements;

·       reuse and adaptation of requirements;

·       domain modelling and analysis;

·       requirements engineering for distributed, safety-critical, composite, real-time and embedded systems. 

WG2.10 - Software Architecture
est. 2000


The purpose of WG 2.10 is to further the practice of software architecture by integrating software architecture research and practice.

Software architecture is concerned with

·       the structure and organization by which components and subsystems interact to form systems, and

·       the properties of a system that can best be designed and analyzed at the system level, for example end-to-end performance and system-family compatibility.

Software architecture is important because

·       it captures and preserves designers' intentions about system structure, thereby providing a defense against design decay as a system ages, and

·       it is the key to achieving intellectual control over the enormous complexity of a sophisticated system.

Some of the concerns of a software architect are

·       early analysis of critical whole-system properties and

·       preservation of the integrity of design over time in the face of system modifications and the creation of families of related systems.


The aspects of software architecture within the working group's scope are:

·       identifying common problems encountered by practitioners,

·       investigating notations, languages, techniques, tools, and methodologies for improving the practice of software architecture; current areas for improvement are describing software architectures, supporting reuse at the architectural level, interoperability and integration, evaluating and analyzing software architectures (e.g. for fulfillment of requirements or properties, comparing design alternatives, etc.), supporting the correspondence between the architecture and the implementation, reverse-engineering the architecture of an implemented system,

·       training, education, and certification of software architects.

WG2.11 – Program Generation
est. 2003


Generative approaches have the potential to revolutionize software development as automation and components revolutionized manufacturing.

At the same time, the abundancy of current research in this area indicates that there is a host of technical problems both at the foundational and

engineering levels.  As such, the aim of this Working Group of researchers and practitioners is to promote progress in this area.




The scope of this WG includes the design, analysis, generation, and quality control of generative programs and the programs that they generate.

Specific research themes include (but are not limited to the following areas):


  • Foundations: language design, semantics, type systems, formal methods, multi-stage and multi-level languages, validation and verification.


  • Design: models of generative programming, domain engineering, domain analysis and design, system family and product line engineering,
  • model-driven development, separation of concerns, aspect-oriented modeling, feature-oriented modeling.


  • Engineering: practices in the context of program generation, such as requirements elicitation and management, software process engineering
  • and management, software maintenance, software estimation and measurement


  • Techniques: meta-programming, staging, templates, in-lining, macro expansion, reflection, partial evaluation, intentional programming,
  • staged configuration, stepwise refinement, software reuse, adaptive compilation, runtime code generation, compilation, integration of
  • domain specific languages, testing.


  • Tools: open compilers, extensible programming environments, active libraries, frame processors, program transformation systems,
  • program specializers, aspect weavers, and tools for domain modeling.


  • Application: IT infrastructure, finance, telecom, automotive, aerospace, space applications, scientific computing, health, life sciences, manufacturing, government, systems software and middle-ware, embedded and real-time systems, generation of non-code artifacts.


WG2.12/12.4 - Web Semantics
est. 2004, revised 2005, dissolved 2018

WG2.13 – Open Source Software
est. 2006


To enable a diverse community of researchers and practitioners to rigorously investigate the technology,  work practices, development processes, community dynamics within free, libre and open source software (OSS) systems, complementing appropriately other IFIP Working Groups where OSS is increasingly relevant.



Software engineering perspective

  • OSS architecture, configuration and release management, environments
  • Testing and assuring OSS quality and security
  • Mining and analyzing OSS project repositories
  • Lessons from OSS for conventional development
  • OSS and standards

Studies of OSS deployment

  • Case studies of OSS deployment, migration models, success and failure
  • Role of OSS in the public sector (government, education, health etc) and ‘secondary’ (automotive, telco, medical  devices etc) software sector
  • OSS-compatible IT governance architectures
  • Open sourcing – offshore sourcing of development
  • OSS applications catalog (functionality, platforms, support providers, training needs)

Social science perspective

  • Diversity and international participation in OSS projects
  • Learning, knowledge sharing, collaboration, control or conflict in OSS projects
  • Dynamics of OSS project communities – building and sustaining

External perspectives & influences

  • Diffusion and adoption of OSS innovations
  • Economic analysis of OSS – business and migration models
  • OSS and alternative intellectual property regimes
  • Stimulation of OSS development in vertical domains


WG2.14/6.12/8.10 – Service-Oriented Systems
est. 2011, revised 2012


The new working group is proposed as a TC2, TC6, and TC8 initiative. Its goal is to organize and promote the exchange of information on fundamental as well as practical aspects of service-oriented systems. In doing so, the working group will consider service-oriented systems from a technological perspective, but it will also address their business aspects and economic impact. The aim also is to structure a research community that comprises both academia and industry (maybe through living labs) and become an active, permanent, and international forum on services-oriented systems. Besides the technological underpinnings, the working group will address the different facets of the discipline. It will also try to organize current initiatives and research, and propose suitable and sustainable future research directions.

WG2.15 – Verified Software
est. 2011

WG2.16 – Programming Language Design
est. 2012


To explore and evaluate new ideas in programming language design. Our stance is that programming languages are foremost a medium for expressing the structure and intention of software, and communicating these to other programmers. As such human factors must weigh heavily in language design decisions, requiring a well-judged balance between conflicting goals that are qualitative in nature.



  • exploring programming paradigms and major language features, both established and novel;
  • co-designing programming environments with such language features;
  • articulating more clearly the problems of programming that language features are designed to address;
  • identifying key design decisions that balance conflicting goals such as usability, expressivity, and the ability to provide tool support
  • combining experiences and perspectives from the full spectrum of language paradigms and communities;
  • conversing at a conceptual level that practicing language designers find useful, not restricted to mathematical formalisms or empirical hypotheses;
  • meta-discussion of techniques for evaluating language design decisions;
  • promulgating the appreciation of design considerations among researchers, practitioners, students, and teachers.