the impact of software engineering research on modern programming languages
TRANSCRIPT
The Impact of Software Engineering Research on
Modern Programming Languages
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
BARBARA G. RYDER Rutgers UniversityMARY LOU SOFFA University of Virginia
MARGARET BURNETT Oregon State University
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Introduction● Software engineering research and programming languages design
have enjoyed a symbiotic relationship, with traceable impacts since the 1970s.
● Focus on the major features of current programming languages:● data and procedural abstraction;● types;● concurrency;● exceptions;● visual programming mechanism.
● We focus on the impact of software engineering research on the design of programming languages from a historical perspective.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Introduction● Initially, there was no distinction between the software engineering
and programming languages research communities.
● In the middle of the 1970s, this community, began to split into the fields of software engineering and programming languages.
● ACM SIGAGT/SIGPLAN Symposia on Principles of Programming Languages (POPL) was held in 1973 ;
● IEEE/TCSE ACM/SIGSOFT International Conference on Software Engineering (ICSE) was held in 1975.
● We focused on the general purpose languages:● Java;● C++;● Ada;● Visual Basic.
++
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Software Maturation Models● In 1985, Redwine and Riddle presented a maturation model of
software technology, which discusses the steps for transition from a research concept to practice.
● 6 steps:● Basic research;● Concept formulation;● Development and extension;● Internal enhancement and
exploration;● External enhancement and
exploration;● Popularization.
● 5 steps:● Basic research;● Concept formulation;● Introduce into a
programming language;● Refinement;● Extend the programming
language or develop a new one.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Language Features● With the development of increasingly more complex applications,
abstraction has become a critical mechanism to control complexity in software.
Abstraction
Control Data
Procedural
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Abstraction● Control Abstraction
● Describes a well defined operation that expresses the execution sequence of statementsin a program and includes intraprocedural control structures such as is if-then-else, while, switch statements.
● In the 60s/70s:● stepwise refinement or top-down design.
● Procedural Abstraction ● In 1971, Parnas introduced the importance of modularity.
● decomposition;● information hiding.
● In 1984, Horowitz and Munson:● code reuse;● design reuse.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Abstraction● Data Abstraction
● The major thrust of programming languages and software engineering research activity in the 1970s was to explore issues related to data abstraction and visibility control.
● Abstraction data types give programmers the capability of safely defining their own types.
● Encapsulating or enclosing data and the related operations;
● Naming the data type;● Placing restrictions on the use of the operators;● Having rules that specify the visibility of the data;● Separating the specification from the
implementation.
● Introduced in the Simula 87.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Time line for data abstraction
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Types, Polymorphism, and Generics● Strong typing
● Is a fundamental feature of modern programming languages.● “All expressions are guaranteed to be type consistent although
the type itself may be statically unknown.” Cardelli, Wegner (1985).● Type safe.
● In the late 1980s, reuse research focused on libraries, reusable components and reusable support environments.
Reusead hoc
compositional
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Time line for Types and Exceptions
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Exceptions● Exceptions are features that were added to programming languages
to provide the programmer the capability to specify what should happen when unusual execution condition occur, although infrequently.
● Stroustrup introduced a model of Exception as Object, for C++.
● More recently, aspect-oriented programming describes how crosscutting concerns in an object-oriented progam can be addressed by new compositional mechanism in addition to inheritance.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Visual Programming● Visual programming refers to any system that allows a program to be
specified using two-(or more) dimensional expressions:● diagrams,● icons,● color coding,● multidimensional annotation.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Summary● Programming language features present evidence of the strong ties
between software engineering and programming language research.
● It is perhaps unsurprising that this symbiosis exist between programming languages and software engineering, with regard to software reliability research and exceptions, whose purpose is to provide programmer direction for unusual circumstances.
● Software engineering research on visual programming influenced modern end-user programming languages, which use visual expressions to allow nonexperts to create programs in specific domain.
Federico Govoni - Ingegneria del Software - CdL Informatica - Università di Bologna
Bibliography● Ryder, Barbara G., Mary Lou Soffa, and Margaret Burnett. "The impact
of software engineering research on modern progamming languages." ACM Transactions on Software Engineering and Methodology (TOSEM) 14.4 (2005): 431-477.