Software Technologies Track Overview

Track

ST: Software Technologies

Coordinators

Patricia McBride, Pere Mato

Description

This track presents modern techniques for software design and modern tools and technologies for understanding and improving existing software. The emphasis will be placed on the large software projects and large executables that are common in HEP. The track will consist of lectures and exercises. The first 3 lectures cover a series of tools and techniques which will be exemplified during the initial series of exercises. These lectures will include topics such software engineering, design, methodology and testing. The second series lectures will address issues when working with large software systems, including testing and methods for analyzing and improving their structure. The final 3 lectures will focus on a number of technologies that are relevant and commonly used for building interactive and distributed applications.

In the exercise sessions, the students will have a chance to use the tools that are described in the lectures. They will work configuration management tools. They will be asked to use the test and debugging tools on some simple examples. By showing how these tools can locate known problems, students will learn how to use them on new problems. Students will then be given a functional program and a brief description of what it does. The goal is to extend the program to handle a larger problem domain. In the final exercise sessions, the students will practice the new technologies introduced with examples. For these exercises the Python language will be used.

 

Lectures

Tools and Techniques Series

B.Jacobsen

2

 

These lectures present tools and techniques that are valuable when developing software for high energy physics.  We discuss how to work more efficiently while still creating a high quality product that your colleagues will be happy with. The exercises provide practice with each of the tools and techniques presented, and culminate in a small project.

 

ST-TT-L_1

Tools

 

ST-TT-L_2

Techniques

Software Evolution and Testing Series

P.Tonella

2

 

The lectures on "Software Evolution and Testing" are focused on the activities that characterize a software system, once it comes to life and its source code is available for analysis and manipulation. The quality requirements on the software can be enforced by continuously improving its internal structure (refactoring) and by exercising it dynamically

 

ST_AS_L_1

Software refactoring:
Refactoring is the process of modifying the code so that the external behavior is not altered, while the internal structure is improved.
In this lecture, some examples of code refactoring will be presented with reference to the Object Oriented programming paradigm. They will be introduced on a small program, used throughout the lecture.

 

ST_AS_L_2

Testing techniques
Testing aims at revealing the presence of defects in a software system. While black-box testing techniques verify the compliance of the software with respect to the specifications (functional testing), white-box techniques are based on the analysis of the internal structure of the software. In this lecture, the main white-box testing techniques (e.g., path testing, data flow testing) will be surveyed. A brief presentation of the ongoing research in automated test case generation concludes the lecture.

Software Engineering Series

B.Jacobsen

2

 

An introduction to the principles of Software Engineering, with emphasis on what we know about building large software systems for high-energy physics.  These lectures cover the principles of software engineering, design, methodology and testing.

 

ST_SE_L_1

Introduction to Software Engineering

 

ST_SE_L_2

Software Design, Long-term Issues of Software Building

Technologies for Interactive & Distributed Computing Series

A. Pfeiffer

3

 

ST_IC_L_1

Python scripting language
In the first session an introduction to Python, an object-oriented interpreted language will be given. After an introduction into the syntax of Python including data types, functions, control structures (like if, for, try) the aspect of loadable modules will be presented. An introduction into basic File I/O and object persistency in Python will be followed by an introduction to classes, inheritance and other object-oriented aspects of Python. The session will finish with an overview of ways to extend Python through extensions written in other languages such as C and C++.

 

ST_IC_L_2

XML and related technologies (XSLT, ...)
The second session will introduce XML, the eXtensible Markup Language, as a standard for document markup. XML defines a generic syntax to mark up data with simple, human readable tags; thus providing a flexible standard format for a variety of application domains. The session will introduce the fundamental entities of XML, ranging from elements and attributes, through namespaces to Document Type Definitions (DTDs) and the definition of a valid XML document. Based on this, the session will then look into the area of styling XML documents using the eXtensible Stylesheet Language (XSL) in it's forms of XSLT and XSL-FO. Extensions to XML like XPath, XLink and XPointer will be discussed in the context of Data-centric Documents. The session will conclude with an overview of the DOM and SAX models of representing the structure of an XML document.

 

ST_IC_L_3

Distributed computing technologies and protocols (SOAP, XMLRPC, Web services, ...)
Web services provide a standard means of communication among different software applications, running on a variety of platforms and/or frameworks. We will cover the definitions of the World Wide Web Consortium (W3C) of Web Services and give an overview of their architecture. We show how XML is used in the context of web services and discuss two major protocols to interchange data between applications/web-services: XML-RPC and SOAP. The various roles which software agents can have in the basic architecture (Service requestor, Service provider and Discovery agency) are discussed as well as model and XML format for describing Web services like the Web Service Description Language (WSDL) and . WSDL enables one to separate the description of the abstract functionality offered by a service from concrete details of a service description such as "how" and "where" of that functionality.

Hours

 

9

Exercises

Tools and Techniques Series

B.Jacobsen

4

 

ST_TT_E_1
ST_TT_E_2
ST_TT_E_3
ST_TT_E_4

Exercises on Tools and Techniques

 

 

Technologies for Interactive & Distributed Computing Series

A. Pfeiffer

3

 

ST_IC_E_1
ST_IC_E_2
ST_IC_E_3

Exercises on Technologies for Interactive & Distributed Computing

 

 

Hours

 

 

 

 

7

Total hours

 

16

Last edited: 31-Aug-04 .
F.Fluckiger