Good Practices for Developing Scientific Software Frameworks: The WRENCH framework example (and some others)

Rafael Ferreira da Silva
Rafael Ferreira da SilvaSenior Research Scientist at Oak Ridge National Laboratory
Good Practices for Developing
Scientific Software Frameworks
The WRENCH framework example (and some others)
Rafael Ferreira da Silva
https://rafaelsilva.com
https://wrench-project.org
In collaboration with:
What is the best way to write
secure and reliable applications?
2
3
No Code!
Write
nothing,
deploy
nowhere!
How to proceed?
Here are some guidelines…
4
Good Enough Practices in Scientific Computing
• Among several recommendations, this paper emphasizes the following
aspects for software development:
• Place a brief explanatory comment at the start of every program
• Decompose programs into functions
• Be ruthless about eliminating duplication
• Always search for well-maintained software libraries that do what you need
• Test libraries before relying on them
• Give functions and variables meaningful names
• Make dependencies and requirements explicit
• Do not comment and uncomment sections of code to control a program's behavior
• Provide a simple example or test data set
• Submit code to a reputable DOI-issuing repository
5
https://arxiv.org/abs/1609.00037
Best Practices for Scientific Computing
• This paper focuses on the development of scientific software for science
domains:
• Write programs for people, not computers
• Let the computer do the work
• Make incremental changes
• Do not repeat yourself (or others)
• Plan for mistakes
• Optimize software only after it works correctly
• Document design and purpose, not mechanics
• Collaborate
6
https://doi.org/10.1371/journal.pbio.1001745
Scientific Software Best Practices
• This page highlights best-practices for scientific software development:
• Designing your software
• Software Requirements Specification
• Test-driven Development
• Version Control
• Branching Strategy
• Versioning of Releases
• Creating Citable Code
• Coding Guidelines and Code Review
• Continuous Integration
• Gamification
• Integrated Development Environment
7
https://scientific-software-best-practices.readthedocs.io/en/latest/
Best Practices for Scientific Software
• This blog post focuses on domain science software:
• Hosting
• Packaging / installation
• Documentation
• Assistance
• Testing
• Academic publishing
8
https://software.ac.uk/blog/2017-11-29-best-practices-scientific-software
However, there are no actual
recommendations for developing
scientific software frameworks!
Here it is our approach for the
WRENCH Software Framework…
9
The WRENCH Simulation Framework
10
• Objective: Make it easy to develop simulators of complex
Cyberinfrastructure application executions
• Provides high-level, reusable simulation abstractions
• Produces accurate and scalable simulations
https://wrench-project.org
Hosting: Open Source Project
• Some numbers
• > 26K lines of code
• C++, Javascript
• > 300 files
• ~3000 commits
• 16 contributors
• 12 releases
• 7 branches
• Version control
• Issues Tracking
11
https://github.com/wrench-project/wrench
License
12
https://choosealicense.com
Documentation
• Installation Guide
• Getting started
• APIs reference
• Tutorials
• Examples
• Focused guides
• 101, 102, etc.
• Tools
• Doxygen
• Sphynx
13
https://wrench-project.org/wrench/1.8
Testing: Code Coverage
• Unit Tests
• Google Tests
• Integration Tests
• CodeCov
• >88% code coverage
• Other free options
• Coveralls
• SonarCloud
14
https://codecov.io/gh/wrench-project/wrench
Code Quality Analysis
• Automated code review
• Identify issues through static
code review analysis
• Duplication
• Vulnerability
• Etc.
• Tools
• CodeFactor
• Codacy
• SonarCloud
15
https://www.codefactor.io/repository/github/wrench
-project/wrench/overview/master
Continuous Integration (CI) / Deployment (CD)
• Merging in small code
changes frequently
• Automated builds, testing,
and deployment
• Tools
• GitHub Actions
• TravisCI
• AppVeyor
• Jenkins
• Bamboo
16
https://github.com/wrench-project/wrench/actions
Continuous Delivery (CD)
• Kubernetes
https://kubernetes.io
• Amazon AWS / Google
Cloud / Microsoft Azure
• Ansible
https://www.ansible.com
• Packer
https://www.packer.io
17
https://dz2cdn1.dzone.com/storage/temp/11914589-what-
is-continuous-delivery.jpg
Core Infrastructure Initiative (CII)
18
https://bestpractices.coreinfrastructure.org/en/projects/2357
Gamification
• Getting a little badge to appear notifying you, gives a
(small) feeling of accomplishment and can be a good
motivator to write better pull requests
19
Statistics /
Usage
20
Outreach
• Website
• Presentations
• Publications
21
Releases
• Semantic versioning
https://semver.org
22
Some very successful scientific
software framework examples…
23
24
Pegasus Workflow
Management System
http://pegasus.isi.edu
• Open source project since 2001
• Documentation with examples
and tutorial
• Tests and continuous
Integration
• Thousands of citations
Scikit-learn
• Open source Python
library used for
millions of data
scientists
• Tests code coverage:
98%
25
and many, many others…
26
Thank you!
Questions?
27
1 of 27

Recommended

WRENCH: Workflow Management System Simulation Workbench by
WRENCH: Workflow Management System Simulation WorkbenchWRENCH: Workflow Management System Simulation Workbench
WRENCH: Workflow Management System Simulation WorkbenchRafael Ferreira da Silva
913 views20 slides
Bridging Concepts and Practice in eScience via Simulation-driven Engineering by
Bridging Concepts and Practice in eScience via Simulation-driven EngineeringBridging Concepts and Practice in eScience via Simulation-driven Engineering
Bridging Concepts and Practice in eScience via Simulation-driven EngineeringRafael Ferreira da Silva
475 views14 slides
Modeling and Simulation of Parallel and Distributed Computing Systems with Si... by
Modeling and Simulation of Parallel and Distributed Computing Systems with Si...Modeling and Simulation of Parallel and Distributed Computing Systems with Si...
Modeling and Simulation of Parallel and Distributed Computing Systems with Si...Rafael Ferreira da Silva
296 views16 slides
WorkflowHub: Community Framework for Enabling Scientific Workflow Research a... by
WorkflowHub: Community Framework for Enabling  Scientific Workflow Research a...WorkflowHub: Community Framework for Enabling  Scientific Workflow Research a...
WorkflowHub: Community Framework for Enabling Scientific Workflow Research a...Rafael Ferreira da Silva
238 views16 slides
Towards an Infrastructure for Enabling Systematic Development and Research of... by
Towards an Infrastructure for Enabling Systematic Development and Research of...Towards an Infrastructure for Enabling Systematic Development and Research of...
Towards an Infrastructure for Enabling Systematic Development and Research of...Rafael Ferreira da Silva
115 views15 slides
A Semantic-Based Approach to Attain Reproducibility of Computational Environm... by
A Semantic-Based Approach to Attain Reproducibility of Computational Environm...A Semantic-Based Approach to Attain Reproducibility of Computational Environm...
A Semantic-Based Approach to Attain Reproducibility of Computational Environm...Idafen Santana Pérez
410 views46 slides

More Related Content

What's hot

IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr... by
IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...
IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...Lixi Conrads
176 views25 slides
Reproducibility with Checkpoint & RRO by
Reproducibility with Checkpoint & RROReproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RROWork-Bench
21.3K views29 slides
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th... by
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Work-Bench
19K views19 slides
Innovate2014 Better Integrations Through Open Interfaces by
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesSteve Speicher
3.3K views28 slides
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ... by
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...IncQuery Labs
193 views16 slides
Innovate2014 Panel - Best Practices on Implementing Integrations by
Innovate2014 Panel - Best Practices on Implementing IntegrationsInnovate2014 Panel - Best Practices on Implementing Integrations
Innovate2014 Panel - Best Practices on Implementing IntegrationsSteve Speicher
3.6K views12 slides

What's hot(15)

IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr... by Lixi Conrads
IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...
IGUANA: A Generic Framework for Benchmarking the Read-Write Performance of Tr...
Lixi Conrads176 views
Reproducibility with Checkpoint & RRO by Work-Bench
Reproducibility with Checkpoint & RROReproducibility with Checkpoint & RRO
Reproducibility with Checkpoint & RRO
Work-Bench21.3K views
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th... by Work-Bench
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Nobody Knows What It’s Like To Be the Bad Man: The Development Process for th...
Work-Bench19K views
Innovate2014 Better Integrations Through Open Interfaces by Steve Speicher
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open Interfaces
Steve Speicher3.3K views
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ... by IncQuery Labs
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
Towards Scalable Validation of Low-Code System Models: Mapping EVL to VIATRA ...
IncQuery Labs193 views
Innovate2014 Panel - Best Practices on Implementing Integrations by Steve Speicher
Innovate2014 Panel - Best Practices on Implementing IntegrationsInnovate2014 Panel - Best Practices on Implementing Integrations
Innovate2014 Panel - Best Practices on Implementing Integrations
Steve Speicher3.6K views
Moving to Agile Methods and DevOps on IBM i with ARCAD Pack for Rational 1479... by Philippe Krief
Moving to Agile Methods and DevOps on IBM i with ARCAD Pack for Rational 1479...Moving to Agile Methods and DevOps on IBM i with ARCAD Pack for Rational 1479...
Moving to Agile Methods and DevOps on IBM i with ARCAD Pack for Rational 1479...
Philippe Krief4.9K views
Dependency inversion using ports and adapters by Mahfuzul Haque
Dependency inversion using ports and adaptersDependency inversion using ports and adapters
Dependency inversion using ports and adapters
Mahfuzul Haque137 views
How to Choose a Deep Learning Framework by Navid Kalaei
How to Choose a Deep Learning FrameworkHow to Choose a Deep Learning Framework
How to Choose a Deep Learning Framework
Navid Kalaei86 views
Intelligently Monitor And Rapidly Troubleshoot Streaming Fast Data Applicatio... by Lightbend
Intelligently Monitor And Rapidly Troubleshoot Streaming Fast Data Applicatio...Intelligently Monitor And Rapidly Troubleshoot Streaming Fast Data Applicatio...
Intelligently Monitor And Rapidly Troubleshoot Streaming Fast Data Applicatio...
Lightbend1.5K views
Cheng_Wang_resume by Cheng Wang
Cheng_Wang_resumeCheng_Wang_resume
Cheng_Wang_resume
Cheng Wang683 views
Intro to big data analytics using microsoft machine learning server with spark by Alex Zeltov
Intro to big data analytics using microsoft machine learning server with sparkIntro to big data analytics using microsoft machine learning server with spark
Intro to big data analytics using microsoft machine learning server with spark
Alex Zeltov895 views
Building a data warehouse with Pentaho and Docker by Wellington Marinho
Building a data warehouse with Pentaho and DockerBuilding a data warehouse with Pentaho and Docker
Building a data warehouse with Pentaho and Docker
Wellington Marinho9.9K views
Better integrations through open interfaces by Steve Speicher
Better integrations through open interfacesBetter integrations through open interfaces
Better integrations through open interfaces
Steve Speicher1.8K views

Similar to Good Practices for Developing Scientific Software Frameworks: The WRENCH framework example (and some others)

Analysis of-quality-of-pkgs-in-packagist-univ-20171024 by
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Clark Everetts
353 views33 slides
Software Engineering - chp6- development phase by
Software Engineering - chp6- development phaseSoftware Engineering - chp6- development phase
Software Engineering - chp6- development phaseLilia Sfaxi
3.6K views39 slides
[Wroclaw #5] OWASP Projects: beyond Top 10 by
[Wroclaw #5] OWASP Projects: beyond Top 10[Wroclaw #5] OWASP Projects: beyond Top 10
[Wroclaw #5] OWASP Projects: beyond Top 10OWASP
1.7K views131 slides
Integração contínua com Jenkins by
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
805 views33 slides
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to... by
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...SmartBear
704 views16 slides
Software Analytics - Achievements and Challenges by
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and ChallengesTao Xie
1.8K views65 slides

Similar to Good Practices for Developing Scientific Software Frameworks: The WRENCH framework example (and some others)(20)

Analysis of-quality-of-pkgs-in-packagist-univ-20171024 by Clark Everetts
Analysis of-quality-of-pkgs-in-packagist-univ-20171024Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Analysis of-quality-of-pkgs-in-packagist-univ-20171024
Clark Everetts353 views
Software Engineering - chp6- development phase by Lilia Sfaxi
Software Engineering - chp6- development phaseSoftware Engineering - chp6- development phase
Software Engineering - chp6- development phase
Lilia Sfaxi3.6K views
[Wroclaw #5] OWASP Projects: beyond Top 10 by OWASP
[Wroclaw #5] OWASP Projects: beyond Top 10[Wroclaw #5] OWASP Projects: beyond Top 10
[Wroclaw #5] OWASP Projects: beyond Top 10
OWASP1.7K views
Integração contínua com Jenkins by Aécio Pires
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
Aécio Pires805 views
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to... by SmartBear
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
The API Lifecycle Series: Exploring Design-First and Code-First Approaches to...
SmartBear704 views
Software Analytics - Achievements and Challenges by Tao Xie
Software Analytics - Achievements and ChallengesSoftware Analytics - Achievements and Challenges
Software Analytics - Achievements and Challenges
Tao Xie1.8K views
Experience in teaching devops by Len Bass
Experience in teaching devopsExperience in teaching devops
Experience in teaching devops
Len Bass512 views
Agile Secure Cloud Application Development Management by Adam Getchell
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
Adam Getchell986 views
From Sandbox to Production by Vadym Fedorov by SoftServe
From Sandbox to Production by Vadym FedorovFrom Sandbox to Production by Vadym Fedorov
From Sandbox to Production by Vadym Fedorov
SoftServe831 views
Continuous Delivery - Automate & Build Better Software with Travis CI by wajrcs
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
wajrcs538 views
Top 10 dev ops tools (1) by yalini97
Top 10 dev ops tools (1)Top 10 dev ops tools (1)
Top 10 dev ops tools (1)
yalini9774 views
From the sandbox to production by Vadym Fedorov
From the sandbox to productionFrom the sandbox to production
From the sandbox to production
Vadym Fedorov415 views
Agileand saas davepatterson_armandofox_050813webinar by Roberto Jr. Figueroa
Agileand saas davepatterson_armandofox_050813webinarAgileand saas davepatterson_armandofox_050813webinar
Agileand saas davepatterson_armandofox_050813webinar
AppSec DC 2019 ASVS 4.0 Final.pptx by Josh Grossman
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptx
Josh Grossman42 views

More from Rafael Ferreira da Silva

Accurately Simulating Energy Consumption of I/O-intensive Scientific Workflows by
Accurately Simulating Energy Consumption of I/O-intensive Scientific WorkflowsAccurately Simulating Energy Consumption of I/O-intensive Scientific Workflows
Accurately Simulating Energy Consumption of I/O-intensive Scientific WorkflowsRafael Ferreira da Silva
528 views21 slides
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste... by
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...Rafael Ferreira da Silva
728 views46 slides
The Interplay of Workflow Execution and Resource Provisioning by
The Interplay of Workflow Execution and Resource ProvisioningThe Interplay of Workflow Execution and Resource Provisioning
The Interplay of Workflow Execution and Resource ProvisioningRafael Ferreira da Silva
575 views25 slides
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows by
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific WorkflowsOn the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific WorkflowsRafael Ferreira da Silva
552 views17 slides
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor... by
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...Rafael Ferreira da Silva
631 views23 slides
Automating Environmental Computing Applications with Scientific Workflows by
Automating Environmental Computing Applications with Scientific WorkflowsAutomating Environmental Computing Applications with Scientific Workflows
Automating Environmental Computing Applications with Scientific WorkflowsRafael Ferreira da Silva
132 views25 slides

More from Rafael Ferreira da Silva(20)

Accurately Simulating Energy Consumption of I/O-intensive Scientific Workflows by Rafael Ferreira da Silva
Accurately Simulating Energy Consumption of I/O-intensive Scientific WorkflowsAccurately Simulating Energy Consumption of I/O-intensive Scientific Workflows
Accurately Simulating Energy Consumption of I/O-intensive Scientific Workflows
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste... by Rafael Ferreira da Silva
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...
Running Accurate, Scalable, and Reproducible Simulations of Distributed Syste...
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows by Rafael Ferreira da Silva
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific WorkflowsOn the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
On the Use of Burst Buffers for Accelerating Data-Intensive Scientific Workflows
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor... by Rafael Ferreira da Silva
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...
Using Simple PID Controllers to Prevent and Mitigate Faults in Scientific Wor...
Automating Environmental Computing Applications with Scientific Workflows by Rafael Ferreira da Silva
Automating Environmental Computing Applications with Scientific WorkflowsAutomating Environmental Computing Applications with Scientific Workflows
Automating Environmental Computing Applications with Scientific Workflows
Automating Real-time Seismic Analysis Through Streaming and High Throughput W... by Rafael Ferreira da Silva
Automating Real-time Seismic Analysis Through Streaming and High Throughput W...Automating Real-time Seismic Analysis Through Streaming and High Throughput W...
Automating Real-time Seismic Analysis Through Streaming and High Throughput W...
Performance Analysis of an I/O-Intensive Workflow executing on Google Cloud a... by Rafael Ferreira da Silva
Performance Analysis of an I/O-Intensive Workflow executing on Google Cloud a...Performance Analysis of an I/O-Intensive Workflow executing on Google Cloud a...
Performance Analysis of an I/O-Intensive Workflow executing on Google Cloud a...
Task Resource Consumption Prediction for Scientific Applications and Workflows by Rafael Ferreira da Silva
Task Resource Consumption Prediction for Scientific Applications and WorkflowsTask Resource Consumption Prediction for Scientific Applications and Workflows
Task Resource Consumption Prediction for Scientific Applications and Workflows
Characterizing a High Throughput Computing Workload: The Compact Muon Solenoi... by Rafael Ferreira da Silva
Characterizing a High Throughput Computing Workload: The Compact Muon Solenoi...Characterizing a High Throughput Computing Workload: The Compact Muon Solenoi...
Characterizing a High Throughput Computing Workload: The Compact Muon Solenoi...
Experiments with Complex Scientific Applications on Hybrid Cloud Infrastructures by Rafael Ferreira da Silva
Experiments with Complex Scientific Applications on Hybrid Cloud InfrastructuresExperiments with Complex Scientific Applications on Hybrid Cloud Infrastructures
Experiments with Complex Scientific Applications on Hybrid Cloud Infrastructures
A Unified Approach for Modeling and Optimization of Energy, Makespan and Reli... by Rafael Ferreira da Silva
A Unified Approach for Modeling and Optimization of Energy, Makespan and Reli...A Unified Approach for Modeling and Optimization of Energy, Makespan and Reli...
A Unified Approach for Modeling and Optimization of Energy, Makespan and Reli...
Leveraging Semantics to Improve Reproducibility in Scientific Workflows by Rafael Ferreira da Silva
Leveraging Semantics to Improve Reproducibility in Scientific WorkflowsLeveraging Semantics to Improve Reproducibility in Scientific Workflows
Leveraging Semantics to Improve Reproducibility in Scientific Workflows
A science-gateway for workflow executions: online and non-clairvoyant self-h... by Rafael Ferreira da Silva
A science-gateway for workflow executions: online and non-clairvoyant self-h...A science-gateway for workflow executions: online and non-clairvoyant self-h...
A science-gateway for workflow executions: online and non-clairvoyant self-h...
Toward Fine-Grained Online Task Characteristics Estimation in Scientific Work... by Rafael Ferreira da Silva
Toward Fine-Grained Online Task Characteristics Estimation in Scientific Work...Toward Fine-Grained Online Task Characteristics Estimation in Scientific Work...
Toward Fine-Grained Online Task Characteristics Estimation in Scientific Work...
On-line, non-clairvoyant optimization of workflow activity granularity task o... by Rafael Ferreira da Silva
On-line, non-clairvoyant optimization of workflow activity granularity task o...On-line, non-clairvoyant optimization of workflow activity granularity task o...
On-line, non-clairvoyant optimization of workflow activity granularity task o...
Workflow fairness control on online and non-clairvoyant distributed computing... by Rafael Ferreira da Silva
Workflow fairness control on online and non-clairvoyant distributed computing...Workflow fairness control on online and non-clairvoyant distributed computing...
Workflow fairness control on online and non-clairvoyant distributed computing...

Recently uploaded

ChatGPT and AI for Web Developers by
ChatGPT and AI for Web DevelopersChatGPT and AI for Web Developers
ChatGPT and AI for Web DevelopersMaximiliano Firtman
181 views82 slides
The Importance of Cybersecurity for Digital Transformation by
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital TransformationNUS-ISS
27 views26 slides
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensorssugiuralab
15 views15 slides
STPI OctaNE CoE Brochure.pdf by
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdfmadhurjyapb
12 views1 slide
Spesifikasi Lengkap ASUS Vivobook Go 14 by
Spesifikasi Lengkap ASUS Vivobook Go 14Spesifikasi Lengkap ASUS Vivobook Go 14
Spesifikasi Lengkap ASUS Vivobook Go 14Dot Semarang
35 views1 slide
[2023] Putting the R! in R&D.pdf by
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdfEleanor McHugh
38 views127 slides

Recently uploaded(20)

The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS27 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab15 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb12 views
Spesifikasi Lengkap ASUS Vivobook Go 14 by Dot Semarang
Spesifikasi Lengkap ASUS Vivobook Go 14Spesifikasi Lengkap ASUS Vivobook Go 14
Spesifikasi Lengkap ASUS Vivobook Go 14
Dot Semarang35 views
[2023] Putting the R! in R&D.pdf by Eleanor McHugh
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
Eleanor McHugh38 views
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu... by NUS-ISS
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
Architecting CX Measurement Frameworks and Ensuring CX Metrics are fit for Pu...
NUS-ISS37 views
The details of description: Techniques, tips, and tangents on alternative tex... by BookNet Canada
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...
BookNet Canada121 views
Web Dev - 1 PPT.pdf by gdsczhcet
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet55 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
AMAZON PRODUCT RESEARCH.pdf by JerikkLaureta
AMAZON PRODUCT RESEARCH.pdfAMAZON PRODUCT RESEARCH.pdf
AMAZON PRODUCT RESEARCH.pdf
JerikkLaureta15 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk88 views
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum... by NUS-ISS
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
Beyond the Hype: What Generative AI Means for the Future of Work - Damien Cum...
NUS-ISS34 views
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze by NUS-ISS
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeDigital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
NUS-ISS19 views
Special_edition_innovator_2023.pdf by WillDavies22
Special_edition_innovator_2023.pdfSpecial_edition_innovator_2023.pdf
Special_edition_innovator_2023.pdf
WillDavies2216 views
handbook for web 3 adoption.pdf by Liveplex
handbook for web 3 adoption.pdfhandbook for web 3 adoption.pdf
handbook for web 3 adoption.pdf
Liveplex19 views
Future of Learning - Khoong Chan Meng by NUS-ISS
Future of Learning - Khoong Chan MengFuture of Learning - Khoong Chan Meng
Future of Learning - Khoong Chan Meng
NUS-ISS33 views

Good Practices for Developing Scientific Software Frameworks: The WRENCH framework example (and some others)

  • 1. Good Practices for Developing Scientific Software Frameworks The WRENCH framework example (and some others) Rafael Ferreira da Silva https://rafaelsilva.com https://wrench-project.org In collaboration with:
  • 2. What is the best way to write secure and reliable applications? 2
  • 4. How to proceed? Here are some guidelines… 4
  • 5. Good Enough Practices in Scientific Computing • Among several recommendations, this paper emphasizes the following aspects for software development: • Place a brief explanatory comment at the start of every program • Decompose programs into functions • Be ruthless about eliminating duplication • Always search for well-maintained software libraries that do what you need • Test libraries before relying on them • Give functions and variables meaningful names • Make dependencies and requirements explicit • Do not comment and uncomment sections of code to control a program's behavior • Provide a simple example or test data set • Submit code to a reputable DOI-issuing repository 5 https://arxiv.org/abs/1609.00037
  • 6. Best Practices for Scientific Computing • This paper focuses on the development of scientific software for science domains: • Write programs for people, not computers • Let the computer do the work • Make incremental changes • Do not repeat yourself (or others) • Plan for mistakes • Optimize software only after it works correctly • Document design and purpose, not mechanics • Collaborate 6 https://doi.org/10.1371/journal.pbio.1001745
  • 7. Scientific Software Best Practices • This page highlights best-practices for scientific software development: • Designing your software • Software Requirements Specification • Test-driven Development • Version Control • Branching Strategy • Versioning of Releases • Creating Citable Code • Coding Guidelines and Code Review • Continuous Integration • Gamification • Integrated Development Environment 7 https://scientific-software-best-practices.readthedocs.io/en/latest/
  • 8. Best Practices for Scientific Software • This blog post focuses on domain science software: • Hosting • Packaging / installation • Documentation • Assistance • Testing • Academic publishing 8 https://software.ac.uk/blog/2017-11-29-best-practices-scientific-software
  • 9. However, there are no actual recommendations for developing scientific software frameworks! Here it is our approach for the WRENCH Software Framework… 9
  • 10. The WRENCH Simulation Framework 10 • Objective: Make it easy to develop simulators of complex Cyberinfrastructure application executions • Provides high-level, reusable simulation abstractions • Produces accurate and scalable simulations https://wrench-project.org
  • 11. Hosting: Open Source Project • Some numbers • > 26K lines of code • C++, Javascript • > 300 files • ~3000 commits • 16 contributors • 12 releases • 7 branches • Version control • Issues Tracking 11 https://github.com/wrench-project/wrench
  • 13. Documentation • Installation Guide • Getting started • APIs reference • Tutorials • Examples • Focused guides • 101, 102, etc. • Tools • Doxygen • Sphynx 13 https://wrench-project.org/wrench/1.8
  • 14. Testing: Code Coverage • Unit Tests • Google Tests • Integration Tests • CodeCov • >88% code coverage • Other free options • Coveralls • SonarCloud 14 https://codecov.io/gh/wrench-project/wrench
  • 15. Code Quality Analysis • Automated code review • Identify issues through static code review analysis • Duplication • Vulnerability • Etc. • Tools • CodeFactor • Codacy • SonarCloud 15 https://www.codefactor.io/repository/github/wrench -project/wrench/overview/master
  • 16. Continuous Integration (CI) / Deployment (CD) • Merging in small code changes frequently • Automated builds, testing, and deployment • Tools • GitHub Actions • TravisCI • AppVeyor • Jenkins • Bamboo 16 https://github.com/wrench-project/wrench/actions
  • 17. Continuous Delivery (CD) • Kubernetes https://kubernetes.io • Amazon AWS / Google Cloud / Microsoft Azure • Ansible https://www.ansible.com • Packer https://www.packer.io 17 https://dz2cdn1.dzone.com/storage/temp/11914589-what- is-continuous-delivery.jpg
  • 18. Core Infrastructure Initiative (CII) 18 https://bestpractices.coreinfrastructure.org/en/projects/2357
  • 19. Gamification • Getting a little badge to appear notifying you, gives a (small) feeling of accomplishment and can be a good motivator to write better pull requests 19
  • 23. Some very successful scientific software framework examples… 23
  • 24. 24 Pegasus Workflow Management System http://pegasus.isi.edu • Open source project since 2001 • Documentation with examples and tutorial • Tests and continuous Integration • Thousands of citations
  • 25. Scikit-learn • Open source Python library used for millions of data scientists • Tests code coverage: 98% 25
  • 26. and many, many others… 26