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

Concurrency

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.


Top Related