Quality Control and Software Development Best Practices

This week’s cafรฉ conversation posed the questions "How can you be sure your statistical analysis or software is doing what you expect?" and "How can you make sure others will be able to use it and reproduce your results?" As a Research Software Engineer, my answers would be to make use of practices and tools such as testing, version control, continuous integration and containerisation, but these concepts can be daunting to those unfamiliar with them, and will not be applicable across all domains.

As our conversations are cross-disciplinary, with participants present from departments including Anthropology, Education, Computer Science and Geography, as well as from Advanced Research Computing (ARC) and the library systems team, we started the session with a short survey to try to gauge the sorts of tools and programming languages people are using, and how likely they were to use various tools/practices.


Our participants use a wide range of tools, from programming languages (and libraries) to predominantly GUI-based tools. The tools used will clearly have an impact on whether standard software development practices can be used, but can we adapt these practices to make them applicable to other tools?

 

Next, participants were asked to rate how likely they were to use various practices, from 0 (Never heard of it) to 5 (Extremely likely). The average scores for testing and version control were reasonably high, though all three scored some 0s and a handful of 1s. Continuous integration and containerization, unsurprisingly, had low scores.


We discussed how participants can be sure how their code or analysis does what it sets out to do. Most participants use some some sort of manual checks of their analyses, for example checking the outcome for specific, known results. In numerical sciences, testing is the norm: one participant mentioned he used manual testing as a stop-gap to automated testing. In this field, although journal policies vary, some reviewers will automatically reject papers that do not include sufficient proof or due diligence, of which testing is an important part. By contrast, in the humanities, journals are now asking to see the data but not necessarily the analysis or code that produced the results; participants felt that it was only a matter of time before they followed the lead of journals in the sciences and required authors to provide the same level of detail about code.


A question was posed: "What should we be testing for? Is it more important to make sure that the software does not crash, or that it produces the right results?" Whilst defensive programming to avoid crashes can be important in industry (where software will is more likely to be used by non-expert users), in research, crashes can just be a useful signal that something has gone wrong: silently carrying on and producing a wrong result could be far more dangerous.


Version control was the next topic of discussion. Versioning is built in to Dropbox and Microsoft Office 365, and is also included in wiki software used by some teams for their documentation. For more sophisticated use cases, there are tools more traditionally used for programming such as Git. Several participants mentioned that they end up figuring out their own method for keeping track of their code and data, but were not convinced that they were going about things the right way. Some participants had previously attended ARC’s course on Git and GitHub, but had not yet worked out how to fit it in to their everyday work.


As well as using version control to keep track of our own code and documents, how can we keep track of versions of dependencies (e.g. the software packages we use in our analysis or code), to ensure that our results can be reproduced? One participant makes use of DOIs to keep track of the specific versions of software used in a paper, using a Zenodo record to list all of the DOIs; other participants may not have considered keeping track of such things. We mentioned containerisation as one possible solution to this, though it has a steep learning curve; this could perhaps be overcome using tools such as mybinder. (Other solutions for dependency management, which were not discussed, are listed below.)


Time did not allow us to discuss continuous integration (CI) in detail, but we gave a brief explanation of CI to those who were unaware of it: "automat[ing] doing the repetitive tasks you used to do by hand" (as one participant succinctly put it). We pointed out that CI tools such as CircleCI or GitHub Actions can be used for something as simple as ensuring your code compiles or passes syntax checks; it does not need to use a sophisticated workflow.


So what are the barriers to using these tools and practices? Firstly there is the pressure to move on to the next new thing: writing tests and using version control can be seen as boring or a waste of time, particularly if there is no requirement from journals to share code or to ensure analyses can be replicated. Secondly, there is a lack of training and knowledge: some participants felt there was just too big a hurdle to get over before they can use these tools; others had some knowledge but were unsure how to embed these practices into their own workflows. Could ARC produce more domain-specific training for individual departments? Thirdly, there is the lack of motivation: for example, undergraduate Computer Science students are taught how and why to use version control but still rarely make use of it. One participant suggested that we need to show the value of the tools in ways that researchers would understand, for example using version control and blockchain to stop plagiarism


This week’s discussion encapsulated some of the issues that are being tackled by groups such as the Software Sustainability Institute and the Society of Research Software Engineers. From my point of view it was fascinating to get a more local insight into these issues, and I hope it will prove useful as we consider the future direction of the training courses run by ARC.


Useful links

Thanks to the participants for sharing many of these links. 

Testing

Version control

Executable notebooks to help reproducibility

Dependency tracking and containerisation

Continuous Integration

Advanced Research Computing Training


This blog expresses the author’s views and interpretation of comments made during the conversation. Any errors or omissions are the author’s.

Alison Clarke is a Research Software Engineer at Advanced Research Computing, Durham University.

Comments

  1. I am very much pleased with the contents you have mentioned. I wanted to thank you for this great article. Agile Software Development

    ReplyDelete
  2. Very nice informative and impressive post you have written, this is quite interesting

    ReplyDelete
  3. No doubt this is an excellent post I got a lot of knowledge after reading good luck. Theme of blog is excellent there is almost everything to read, Brilliant post. Microsoft office 2019

    ReplyDelete

  4. Hi dear,

    Thank you for this wonderful post. It is very informative and useful. I would like to share something here too. Ritzy Solutions has its own capacious workplace and we have segregated our domains into “Ritzy Shipping”, “Ritzy Comfort” and “Ritzy Real-Estate”. As the caption suggests, Ritzy Shipping deals with the logistics & freight forwarding system, Ritzy Comfort provides comforting solutions for inventory control & accounting and Ritzy Real-Estate deals with the intricacies of real-estate management. Some of the concrete reasons for which you should prefer us are:

    Domestic Freight Software

    ReplyDelete
  5. Yes it’s a very good blog, I gain so much knowledge thanks.
    Browse this site

    ReplyDelete
  6. I say is better I allow you all know this I believe this is the opportunity most of you have being waiting for earn with Mr Johnny today on crypto currency trade contact him Via WhatsApp: +447883246472
    Email : tdameritrade077@gmail.com

    ReplyDelete


  7. Really i like the way of your blog post content, it's a good information..

    identity verification solutions
    best esign software

    ReplyDelete
  8. 1st let me congratulate the author for writing a great post!
    Web Designing Company In Mumbai

    ReplyDelete
  9. Posting Such an informative and valuable blog can help each newcomer in the field of Software Development.
    Brouchers And Logo Designer Hyderabad

    ReplyDelete
  10. Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts. Kaspersky Total Security

    ReplyDelete
  11. Thank you because you have been willing to share information with us. we will always appreciate all you have done here because I know you are very concerned with our. Kaspersky Internet Security 2022

    ReplyDelete
  12. A quick and handy guide to the questions you should be asking your Massachusetts Website Design ​before hiring them! A must have list before pressing "go" on your web project!

    ReplyDelete
  13. Nice post! Thank you for sharing the valuable information. If you want to know about school management system then you must visit nlet.in.

    ReplyDelete
  14. This blog is very helpful information thank you so much for sharing this. Know why the future of PWA Development is so bright.

    ReplyDelete
  15. Great information! Nice blog! Before choosing a Custom Software Development Company in Delhi NCR and hire it, make a list of things that you need from the software.

    ReplyDelete
  16. Hello, Thanks for sharing nice blog with us. this is really very nice blog again to all thanks i am regular reader your website Custom Software Development near me

    ReplyDelete
  17. Very interesting & informative blog published by you. I really appreciate your hard work in giving us valuable information this type of blog are very helpful for each newcomers in the field of software development.
    Thanks for sharing!!

    Game Development Company

    ReplyDelete
  18. Brilliant post! These tools will certainly promote Machine Learning .

    ReplyDelete
  19. Thanks for submitting this useful information and i am eagerly waiting for the next part.As a trainee from Full-Service Software Development Company " i found this information very interesting. Thanks once again.

    ReplyDelete
  20. Thank you for sharing the information. Wonderful blog & good post. It's really helpful for me, waiting for a more new post. Keep Blogging!hire a virtual assistant

    ReplyDelete
  21. Software development is getting huge importance these days. It is believed that every business needs a customized software solution for their business to sustain in this competitive market. Being a software developer I know how much important it is to incorporate all the best practices of software development that has been passed on to us by our software development industry experts. And of course only if we use all the best practices in development phase then only the software do wonders in the market.

    ReplyDelete
  22. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. sales automation platform

    ReplyDelete
  23. Amazing blog and very informative content. Thanks for sharing with everyone.

    Freelancing Website in Canada

    ReplyDelete
  24. I would like to say that this blog really convinced me to do it! Thanks, very good post. software development company

    ReplyDelete
  25. Thanks for sharing this. We really appreciate you for this article. We're a Custom Software Development Company in San Antonio

    ReplyDelete
  26. Good Blog, thank you for sharing with us. Custom solution development

    ReplyDelete
  27. Needed to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.Learn about - ERP SOFTWARE IN CHENNAI

    ReplyDelete
  28. This comment has been removed by the author.

    ReplyDelete
  29. Great content with proper explanation. I've some doubts but now all is clear. Thanks for explaining it perfectly.

    Whether you belong to a leading industry or just a new startup, we love to be your technology partner to achieve your short-term objectives as well as your futuristic mission, through our top-notch development expertise that excels our dexterity and eminence as a software development company in India & USA.

    Software development

    ReplyDelete
  30. This article was incredibly interesting to me. This article is one of the most fantastic ones I've ever read. I'm hoping it will be a huge assistance to everyone. Thank you so much for this fantastic post. Please keep us informed like this. We also offer similar kinds of custom software development services in Dubai. We are one of the best AI development company in UAE.

    ReplyDelete
  31. I have found this blog.

    It's a great post for Quality Control and Software Development. Your content is good for software developer.

    And it is very helpful and informative content.

    Keep posting.

    best Software Development Services in India.

    ReplyDelete
  32. informative blog about software development.we also offering same Microsft Power Apps Development In Canda And Also In US..

    ReplyDelete
  33. The present age is the age of science and softwer technology. digital-transformation

    ReplyDelete
  34. Great article! such a nice content and wonderful contribution towards this blog and thank you for sharing this wonderful blog post.
    erp software development chennai

    ReplyDelete
  35. I read your blog now share great information here.
    Tech DD

    ReplyDelete
  36. Join the White Bitcoin Affiliate Program and earn rewards for promoting WBTC affiliate Wallet. Experience the benefits of Crypto Affiliate Program
    today.

    ReplyDelete
  37. ๐Ÿ‘‹ Hey there! This article has some great tips for ensuring top-notch statistical analysis and software development ๐Ÿ‘จ‍๐Ÿ’ป. It recommends using testing ๐Ÿงช, version control ๐Ÿ“, continuous integration ๐Ÿ”„, and containerization ๐Ÿณ, but notes that some of these strategies might not be relevant in certain fields ๐Ÿค”. The article also explores how different disciplines approach testing and version control and emphasizes the importance of reproducibility in analyses ๐Ÿง. Unfortunately, obstacles like lack of motivation ๐Ÿ˜ด, training ๐Ÿ“š, and pressure to move quickly ๐Ÿƒ‍♂️ can make it tough to implement these best practices. If you're looking to Hire Salesforce Consultant UK, it's important to keep these considerations in mind! ๐Ÿค Overall, the article offers valuable insights into ongoing efforts by groups like the Software Sustainability Institute and the Society of Research Software Engineers. ๐Ÿ’ป

    ReplyDelete
  38. You have done a great job of highlighting the importance of quality control in software development and providing practical solutions to bridge the gap between quality control and software development teams. The article is well-researched and well-written, and your expertise in the field is evident. I appreciate your head work in providing real-world examples and case studies to illustrate their points. Excellent work.
    If you are looking for a Custom API Development Company, feel free to contact us, we will be happy to help you.

    ReplyDelete
  39. This comment has been removed by the author.

    ReplyDelete
  40. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here customer relationship management module in erp

    ReplyDelete
  41. Thank you so much for exploring the field of software development! Your app development insights shed light on the complicated craft. The process of developing Custom software development company in Chennai , a booming tech hub, one of creativity and teamwork. Your contribution weaves digital dreams into reality by adding a meaningful note to this symphony of code. "Let's toast to our joint exploration of this endless technological space!

    ReplyDelete
  42. Quality control is the most important aspect of successful software development. Every customized software development company should prioritize robust software testing and development best practices because it ensures quality and stability at every phase, from initial requirements to final product release.

    ReplyDelete
  43. We are the leading software development company in Bangalore, India with 21+ years of experience, delivering highly scalable custom software development
    https://www.carmatec.com/software-development-company/bangalore/

    ReplyDelete
  44. Your blog is very useful and provide tremendous facts. It is going to change the way one think by a sharp angle.I wonder if you write on gadgets also. Keep up the good work ahead.
    custom software development New Jersey

    ReplyDelete
  45. Thank you so much for exploring abonnement iptv the field of software development! Your app development insights shed light on the complicated craft.

    ReplyDelete
  46. Your blog is very useful and provide mushroom chocolate tremendous facts.

    ReplyDelete
  47. for their dedication to keeping up with the most recent developments in technology, and for their ERP software development team in the USA.
    erp software development services in usa

    ReplyDelete
  48. A great thing explained about quality control and software development best practices!!
    To know more about the development process, visit Custom software development company in Canada.

    ReplyDelete
  49. CMOLDS stands out among app development companies in dubai for its unparalleled expertise in crafting innovative and customized mobile solutions. With a focus on creativity and cutting-edge technology, we bring your app ideas to life and help your business thrive in the digital age.

    ReplyDelete
  50. Your blog post is truly remarkable! It deserves recognition for its in-depth analysis and captivating writing style. I commend you for your dedication in shedding light on such a significant subject. Keep up the exceptional work! ๐Ÿ‘๐Ÿ‘๐Ÿ‘

    Shopify Web Development Services

    ReplyDelete
  51. Conferencing software development demands innovation, accessibility, and security. It's about crafting a seamless user experience for effective communication and collaboration in the digital age.

    ReplyDelete
  52. Inventory management software offers a powerful solution to these challenges. By automating tasks and providing real-time insights, this software can significantly improve your operational efficiency.

    ReplyDelete
  53. Unlocking Operational Efficiency: The Role of System Integration Services
    System integration services are essential for organizations looking to optimize their IT infrastructure and enhance operational efficiency. These services involve integrating various systems, applications, and technologies to ensure seamless communication and data exchange. Whether it's connecting disparate applications, consolidating data from multiple sources, or integrating IoT devices, system integration enables organizations to streamline workflows and improve decision-making. By leveraging these services, businesses can adapt to changing technology landscapes, enhance collaboration, and drive digital transformation initiatives effectively.

    ReplyDelete

Post a Comment