How To Develop Software



Similar documents
Software Testing in Science

Part I Courses Syllabus

HPC Wales Skills Academy Course Catalogue 2015

Chapter 13: Program Development and Programming Languages

TESTING FRAMEWORKS. Gayatri Ghanakota

Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff

Basic Testing Concepts and Terminology

Introduction to Automated Testing

Visualizing Data: Scalable Interactivity

Software Configuration Management

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

Basic Unix/Linux 1. Software Testing Interview Prep

Software Engineering Principles The TriBITS Lifecycle Model. Mike Heroux Ross Bartlett (ORNL) Jim Willenbring (SNL)

Instructional Design Framework CSE: Unit 1 Lesson 1

Pattern Insight Clone Detection

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University

Introducing Formal Methods. Software Engineering and Formal Methods

Lesson 1 Introduction to Rapid Application Development using Visual Basic

White Paper: 5GL RAD Development

Software Configuration Management. Addendum zu Kapitel 13

Chapter 13 Configuration Management

Surveying and evaluating tools for managing processes for software intensive systems

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Testing Introduction. IEEE Definitions

Documentation and Project Organization

Agile SPL-SCM: Agile Software Product Line Configuration and Release Management

Chapter 13: Program Development and Programming Languages

Chapter 13 Configuration Management

Continuous integration End of the big bang integration era

Automation and Virtualization, the pillars of Continuous Testing

Software infrastructure for Java development projects

Introduction to Software Engineering. 8. Software Quality

Software Engineering of NLP-based Computer-assisted Coding Applications

BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER

In: Proceedings of RECPAD th Portuguese Conference on Pattern Recognition June 27th- 28th, 2002 Aveiro, Portugal

Smarter Balanced Assessment Consortium. Recommendation

Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

find model parameters, to validate models, and to develop inputs for models. c 1994 Raj Jain 7.1

How To Achieve Continuous Delivery

SOA and BPO SOA orchestration with flow. Jason Huggins Subject Matter Expert - Uniface

OpenAIRE Research Data Management Briefing paper

PDF Primer PDF. White Paper

Continuous Integration

Programming Languages & Tools

Software Configuration Management

BCS HIGHER EDUCATION QUALIFICATIONS Level 6 Professional Graduate Diploma in IT. March 2013 EXAMINERS REPORT. Software Engineering 2

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

The Service Revolution software engineering without programming languages

SOA Enabled Workflow Modernization

The Clean programming language. Group 25, Jingui Li, Daren Tuzi

GEDAE TM - A Graphical Programming and Autocode Generation Tool for Signal Processor Applications

How To Develop Software

What s new in the HP Functional Testing 11.5 suite Ronit Soen, product marketing John Jeremiah, product marketing

Carnegie Mellon University Master of Science in Information Technology Software Engineering (MSIT-SE) MSIT Project (17-677) Approval Form

THE ORGANISATION. Senior Management Major end users (divisions) Information Systems Department

Overview of Software Engineering and the Software Development Process

TestTrack Test Case Management Quick Start Guide

Basic Trends of Modern Software Development

Metastorm BPM Interwoven Integration. Process Mapping solutions. Metastorm BPM Interwoven Integration. Introduction. The solution

Choosing a Content Management System (CMS)

SAS in clinical trials A relook at project management,

Comparison: Perforce and Microsoft Team Foundation Server (TFS)

Requirements INTLAND SOFTWARE. Management Guide INTLAND SOFTWARE LIBRARY QUIET ZONE. Requirements. Requirements

Introduction to Embedded Systems. Software Update Problem

Configuration & Build Management

JOURNAL OF OBJECT TECHNOLOGY

WHITE PAPER. Peter Drucker. intentsoft.com 2014, Intentional Software Corporation

Database Automation using VBA

MDSplus Automated Build and Distribution System

Bachelor of Games and Virtual Worlds (Programming) Subject and Course Summaries

How To Manage A Multi Site In Drupal

Chapter 12 Programming Concepts and Languages

Getting off the ground when creating an RVM test-bench

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE


Configuration Management: An Object-Based Method Barbara Dumas

NaviCell Data Visualization Python API

Latest Trends in Testing. Ajay K Chhokra

Achieving business benefits through automated software testing. By Dr. Mike Bartley, Founder and CEO, TVS

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Outline. High Performance Computing (HPC) Big Data meets HPC. Case Studies: Some facts about Big Data Technologies HPC and Big Data converging

Automation using Selenium

Maintaining Stored Procedures in Database Application

Software Development Kit

Bachelor Degree in Informatics Engineering Master courses

Levels of Software Testing. Functional Testing

A FULL-STACK SMTP PLATFORM Open & Scriptable, Targeted Specifically at Large-Scale Infrastructures

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

Real-Time Analytics on Large Datasets: Predictive Models for Online Targeted Advertising

Software Development In the Cloud Cloud management and ALM

Transcription:

Software Development Basics Dr. Axel Kohlmeyer Associate Dean for Scientific Computing College of Science and Technology Temple University, Philadelphia http://sites.google.com/site/akohlmey/ a.kohlmeyer@temple.edu

A Roadmap to the Workshop Focus on software development concepts Introduce tools and processes for organizing development and maintenance Discuss strategies and best practices Explore methodology that encourages collaborative software development Favor writing reusable software frameworks Work in groups with complementary expertise 2

Conventional Software Development Process Start with set of requirements defined by customer (or management): features, properties, boundary conditions Typical Strategy: Decide on overall approach on implementation Translate requirements into individual subtasks Use project management methodology to enforce timeline for implementation, validation and delivery Close project when requirements are met 3

What is Different in the Scientific Software Development Process? Requirements often are not that well defined Floating-point math limitations and the chaotic nature of some solutions complicate validation An application may only be needed once Few scientists are programmers (or managers) Often projects are implemented by students (inexperienced in science and programming) Correctness of results is a primary concern, less so the quality of the implementation 4

Why Worry About This Now? Computers become more powerful all the time and more complex problems can be addressed Use of computational tools becomes common among non-developers and non-theorists -> many users could not implement the whole applications that they are using by themselves Current hardware trends (SIMD, NUMA, GPU) make writing efficient software complicated Solving complex problems requires combining expertise from multiple domains or disciplines 5

Ways to Move Forward Write more modular, more reusable software => build frameworks and libraries Write software that can be modified on an abstract level or where components can be combined without having to recompile => combine scripting with compiled code Write software where all components are continuously (re-)tested and (re-)validated Write software where consistent documentation is integral part of the development process 6

In One Sentence... Scientific software development has to be recognized as a task requiring trained specialists and dedication of time and resources to produce dependable results 7

Embedded Scripting Language Not a new idea, but many scientific tools with scripting have their own language -> script capability added on top of the tool Better to add domain specific extensions to an existing, generic scripting language: -> use a language designed for scripting -> can import other extensions, if needed -> better documentation for script language -> users may already know the syntax We will use Python in this workshop 8

Script Language Benefits Portability Script code does not need to be recompiled Platform abstraction is part of script library Flexibility Script code can be adapted much easier Data model makes combining multiple extensions easy Convenience Script languages have powerful and convenient facilities for pre- and post-processing of data Only time critical parts in compiled language 9

Modular Programming & Libraries Many tasks in scientific computing are similar Tasks differ only in some subset of the calculation Calculations use common operations like fast Fourier transforms, basic linear algebra, etc. Data can be represented in a structured file format supported by generic analysis & visualization tools There is a large potential for code reuse Independent modules can be better validated Reusable code is better target for optimization 10

Object Oriented Programming Provide levels of abstraction -> no need to know how something is done -> opportunity to transparently optimize (for platforms, if certain conditions are given, etc.) Organize access to data -> combine data with functions that modify it -> control read-only vs. read-write access -> handle side effects, on-demand computation Preserve APIs and favor local changes -> modifying one part does not break others 11

Unit and Regression Testing Complex software cannot be fully tested, but Many components can be tested individually Testing of individual units is fast, can be automated When testing individual units, you can also test for the correct handling of incorrect use or data Failures in individual units may not always show up in testing the entire application for current use case After fixing a bug, build minimal test case exposing the bug and add to a library of regression tests in order to keep it from reappearing 12

Importance of Tests and Validation With a larger user base comes responsibility -> a test suite confirms available functionality No new code should break existing functionality Changes may have unintended side effects The more flexible a software is, the more potential for users to use it in unexpected ways Applications can fail on platforms due to broken compilers or system libraries Writing tests helps understanding a feature 13

Embedded Documentation Three types of documentation needed Information for developers who want to add code -> Documentation of the API (e.g. via doxygen) -> Comments in the code that explain choices Information for users that want to use a feature -> Reference manual for visible commands (can be automated and cross-linked with developer manual Information for users that want to learn using a tool -> write tutorials and HOWTO segments -> often better written as standalone documents It can be helpful to write documentation first 14

Source Code Management Not only a way to archive sources, but a tool for communication between developers Distributed source code management makes concurrent development easier Work with feature branches and merge often Commit changes in small increments and do not combine unrelated changes in on commit Have consistent, documented whitespace rules and best enforce them before committing 15

The Bottom Line Many of these concepts and methods can help improve scientific software development Important: it is not the tools by themselves, but how they are used that makes the difference Fight the urge to take shortcuts and see the restrictions that modular and object oriented programming imposes as opportunities Finding the right balance is key to success Never underestimate the longevity of your code 16

Software Development Basics Dr. Axel Kohlmeyer Associate Dean for Scientific Computing College of Science and Technology Temple University, Philadelphia http://sites.google.com/site/akohlmey/ a.kohlmeyer@temple.edu