Making Software Executable by Others Varun Ratnakar USC/ISI April 17, 2015

Slides:



Advertisements
Similar presentations
Dr. Ken Hoganson, © August 2014 Programming in R COURSE NOTES 2 Hoganson Language Translation.
Advertisements

Inpainting Assigment – Tips and Hints Outline how to design a good test plan selection of dimensions to test along selection of values for each dimension.
An Empirical Study of the Reliability in UNIX Utilities Barton Miller Lars Fredriksen Brysn So Presented by Liping Cai.
What iS RMI? Remote Method Invocation. It is an approach where a method on a remote machine invokes another method on another machine to perform some computation.
Java development infrastructure at FMI Pekka Rantala FMI.
Technical Architectures
C Lecture Notes 1 Program Control (Cont...). C Lecture Notes 2 4.8The do / while Repetition Structure The do / while repetition structure –Similar to.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
RPC Project Using either sockets or TLI, implement Remote Procedure Calls between two distinct machines that are communicating over an Ethernet network.
EE694v-Verification-Lect5-1- Lecture 5 - Verification Tools Automation improves the efficiency and reliability of the verification process Some tools,
Guide To UNIX Using Linux Third Edition
Copyright © 2006 by The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill Technology Education Copyright © 2006 by The McGraw-Hill Companies,
ECE122 L17: Method Development and Testing April 5, 2007 ECE 122 Engineering Problem Solving with Java Lecture 17 Method Development and Testing.
Packaging of EPICS-basedControl System Software
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
Big Projects  Part of this class is about picking a cool software project and building it 1.
Introduction to Java Tonga Institute of Higher Education.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Manage Engine: Q Engine. What is it?  Tool developed by Manage Engine that allows one to test web applications using a variety of different tests to.
Benefits of PL/SQL. 2 home back first prev next last What Will I Learn? In this lesson, you will learn to: –List and explain the benefits of PL/SQL –List.
Linux Last Update Copyright Kenneth M. Chipps Ph.D. 1.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Software Engineering 2003 Jyrki Nummenmaa 1 CASE Tools CASE = Computer-Aided Software Engineering A set of tools to (optimally) assist in each.
Winrunner Usage - Best Practices S.A.Christopher.
Standalone Java Application vs. Java Web Application
MAE Continuous Integration Administration guide July 8th, 2013.
Oracle Data Integrator Workflow Management: The Packages.
Functions, Procedures, and Abstraction Dr. José M. Reyes Álamo.
Roles in Software Development using Domain Specific Modelling Languages Holger Krahn, Bernhard Rumpe, Steven Völkel Software Systems Engineering Technische.
Homework Assignment #1 J. H. Wang Oct. 13, Homework #1 Chap.1: 1.24 Chap.2: 2.13 Chap.3: 3.5, 3.13* (or 3.14*) Chap.4: 4.6, 4.12* –(*: optional.
Version 5. ¿What is PAF? PAF is a tool to easily and quickly implement… …distributed analysis over ROOT trees. …by hiding as much as possible the inherent.
Cloud Implementation of GT-FAR (Genome and Transcriptome-Free Analysis of RNA-Seq) University of Southern California.
Homework Assignment #1 J. H. Wang Oct. 6, 2011.
Wordpress with Mina Automated Deployment Solution Jonathan Gravato DIG 4104c.
Intermediate CGI & CGI.pm Webmaster II - Fort Collins, CO Copyright © XTR Systems, LLC CGI Programming & The CGI.pm Perl Module Instructor: Joseph DiVerdi,
Amir Iqbal L Mahwish Khan L Rabia Akhtar L Nida Sarwar L Cloud Computing Based – Online IDE.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
Maite Barroso - 10/05/01 - n° 1 WP4 PM9 Deliverable Presentation: Interim Installation System Configuration Management Prototype
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Systems Design.  Application Design  User Interface Design  Database Design.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Software Deployment & Release 26/03/2015 1EN-ICE.
Application Design Document Developers: o Uri Goldenberg o Henry Abravanel o Academic.
Tivoli Provisioning Manager V5.1 FP1 © 2006 IBM Corporation L2 GO Training Local TCA Install Przemyslaw Maciolek
Maven. Introduction Using Maven (I) – Installing the Maven plugin for Eclipse – Creating a Maven Project – Building the Project Understanding the POM.
CERN IT Department CH-1211 Genève 23 Switzerland t Bamboo users meeting IT-CS-CT.
Proctor Caching Overview. 2 Proctor Caching Diagram.
DECTRIS Ltd Baden-Daettwil Switzerland Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)
Programming Language Basics. What is a Programming Language? “A computer, human-created language used to write instructions for a computer.” “An artificial.
Essentials of UrbanCode Deploy v6.1 QQ147
External Web Services Quick Start Guide
Introduction to Computer Science
Section 13 - Integrating with Third Party Tools
prepared by hasan.we4tech.com
Project Topic 2: Migration to Java 9
I’m going to talk about my vision for the future of system administration, and a question for you to contemplate.
Understand the Programming Process
Comments, Prototypes, Headers & Multiple Source Files
JENKINS TIPS Ideas for making your life with Jenkins easier
Understand the Programming Process
Chapter 7 –Implementation Issues
Programming Language Basics
Escidoc build and development environment
Online software and backups
Configuration management suite
Computer Science 340 Software Design & Testing
Continuous Integration
Functions, Procedures, and Abstraction
Presentation transcript:

Making Software Executable by Others Varun Ratnakar USC/ISI April 17,

1. Sharing your software  So you created an awesome tool ? Share ! No share, no reward (cred or $)  What to share ?  Executable  Harder to maintain as you have to build for various systems  Faster for people to use.  Source code  Open source provides transparency and community help to make your software better & more re-usable!  Version control with repositories like GitHub, BitBucket etc  Dependencies ! *Important*  Also share the dependencies (libraries and other software required both for building the software from source & for running the software). Tip: Share the source code, and share executable if possible

Software Repositories (yum, apt, maven) Source code Build (libraries & dependencies) Executabl e Dependencie s Share Executable { Developer } { User } { Community usage }

Source code Repositories ( github, sourceforge, google code) Source code (java, C,..) Build Libraries & dependencies (README.txt, pom.xml,..) Source code (java, C,..) Build Libraries & dependencies (README.txt, pom.xml,..) Executable Share Source Code { Developer } { User } { Community feedback }

1.a Creating executable from Source  Ok so we shared the source code. Now what ?  How to create executable from source ?  Provide Instructions: README, INSTALL file  List dependencies (libraries, and third party software that the software depends upon)  Use “build automation software” (like make, maven, etc) to compile the code  Tools like “maven” (for java) automatically fetch dependencies from internet repositories in order to build the code

1.b Make your software run elsewhere  Portability: If your software runs on machine A, will it run on machine B too ?  List required dependencies (software and libraries that are needed to be installed on a machine to get your software to run)  No Hard-Coded machine specific details in the source code  Machine specific details such as file location, server name, etc.. should either go in a configuration file, or be provided as a parameter to the software

2. Test, Conduct Experiments  Now that the software is running, can we test it out ?  Provide test input data, and test results, and instructions on how to run the tests  Share real input data if possible, and explain data formats  Provide information about how to create input data, and what to do with the result data

3. Modularity  Split your code into multiple parts, where each part can be invoked separately if so desired.  Provides finer grained functionality that someone might want to re-use in a workflow (or a pipeline of executions)

4. Configurability  Expose important parameters in the software in the form of configuration files or parameter values  Helps to make your software more useful to people working in slightly different domains but with similar problem scenarios

5. Error Handling  Do NOT fail silently if something goes wrong.  Show an expressive error for users.  Return a failure exit code for automated workflow managers to indicate that the software failed