Pragmatic Software Engineering for Computational Science

Author(s):  
David Worth ◽  
Chris Greenough ◽  
Shawn Chin

The purpose of this chapter is to introduce scientific software developers to software engineering tools and techniques that will save them much blood, sweat, and tears and allow them to demonstrate the quality of their software. By introducing ideas around the software development life cycle, source code analysis, documentation, and testing, and touching on best practices, this chapter demonstrates ways in which scientific software can be improved and future developments made easier. This is not a research article on current software engineering methods, nor does it attempt to specify best practices. Its aim is to introduce components that can be built into a tailored process. The chapter draws upon ideas of best practice current in software engineering, but recommends using these only selectively. This is done by presenting details of tools that can be used to implement these ideas and a set of case studies to demonstrate their use.

Author(s):  
David Worth ◽  
Chris Greenough ◽  
Shawn Chin

The purpose of this chapter is to introduce scientific software developers to software engineering tools and techniques that will save them much blood, sweat, and tears and allow them to demonstrate the quality of their software. By introducing ideas around the software development life cycle, source code analysis, documentation, and testing, and touching on best practices, this chapter demonstrates ways in which scientific software can be improved and future developments made easier. This is not a research article on current software engineering methods, nor does it attempt to specify best practices. Its aim is to introduce components that can be built into a tailored process. The chapter draws upon ideas of best practice current in software engineering, but recommends using these only selectively. This is done by presenting details of tools that can be used to implement these ideas and a set of case studies to demonstrate their use.


Author(s):  
Ruya Samli ◽  
Zeynep Behrin Güven Aydın ◽  
Uğur Osman Yücel

Measurement in software is a basic process in all parts of the software development life cycle because it helps to express the quality of a software. But in software engineering, measurement is difficult and not precise. However, researchers accept that any measure is better than zero measure. In this chapter, the software metrics are explained, and some software testing tools are introduced. The software metric sets of Chidamber and Kemerer Metric Set (CK Metric Set), MOOD Metric Set (Brito e Abreu Metric Set), QMOOD Metric Set (Bansiya and Davis Software Metric Set), Rosenberg and Hyatt Metric Set, Lorenz and Kidd Metric Set (L&K Metric Set) are explained. The software testing tools such as Understand, Sonargraph, Findbugs, Metrics, PMD, Coverlipse, Checkstyle, SDMetrics, and Coverity are introduced. Also, 17 literature studies are summarized.


Author(s):  
Andriy Lishchytovych ◽  
Volodymyr Pavlenko

The present article describes setup, configuration and usage of the key performance indicators (KPIs) of members of project teams involved into the software development life cycle. Key performance indicators are described for the full software development life cycle and imply the deep integration with both task tracking systems and project code management systems, as well as a software product quality testing system. To illustrate, we used the extremely popular products - Atlassian Jira (tracking development tasks and bugs tracking system) and git (code management system). The calculation of key performance indicators is given for a team of three developers, two testing engineers responsible for product quality, one designer, one system administrator, one product manager (responsible for setting business requirements) and one project manager. For the key members of the team, it is suggested to use one integral key performance indicator per the role / team member, which reflects the quality of the fulfillment of the corresponding role of the tasks. The model of performance indicators is inverse positive - the initial value of each of the indicators is zero and increases in the case of certain deviations from the standard performance of official duties inherent in a particular role. The calculation of the proposed key performance indicators can be fully automated (in particular, using Atlassian Jira and Atlassian Bitbucket (git) or any other systems, like Redmine, GitLab or TestLink), which eliminates the human factor and, after the automation, does not require any additional effort to calculate. Using such a tool as the key performance indicators allows project managers to completely eliminate bias, reduce the emotional component and provide objective data for the project manager. The described key performance indicators can be used to reduce the time required to resolve conflicts in the team, increase productivity and improve the quality of the software product.


2021 ◽  
Author(s):  
Mayank Gokarna

DevOps is the combination of cultural mindset, practices, and tools that increases a team's ability to release applications and services at high velocity. The development and operations teams always have a conflict around the scope of responsibility. With these differences the quality and speed of delivery across software Development Life Cycle is negatively impacted. DevOps is about removing the barriers between two traditionally delimited teams, development and operations. With DevOps, these two teams work together to optimize both the productivity of developers and the reliability of operations. They strive to communicate frequently, increase efficiencies, and improve the quality of services they provide. They take full ownership for their services, often beyond where their stated roles or titles have traditionally been scoped. Transitioning to DevOps requires a change in culture and mindset first. It is quite difficult to persuade a whole company to change its culture at once. This paper aims to bring different phases of software development lifecycle into DevOps implementation strategy and presents a comprehensive collection of leading tools used across Software Development life Cycle to automate and integrate different stages of software delivery. This paper also highlights on DevOps practices which span across different phases of the Software Development Lifecycle and how those can be implemented with different tools available.


Author(s):  
Salamah Salamah ◽  
Massood Towhidnejad ◽  
Thomas Hilburn

While many Software Engineering (SE) and Computer Science (CS) textbooks make use of case studies to introduce difference concepts and methods, the case studies introduced by these texts focus on a specific life-development phase or a particular topic within software engineering object-oriented design and implementation or requirements analysis and specification. Moreover, these case studies usually do not come with instructor guidelines on how to adopt the introduced material to the instructor’s teaching style or to the particular level of the class or students in the class. The DigitalHome Case Study aims at addressing these shortcomings by providing a comprehensive set of artifacts associated with the full software development life-cycle. The project provides an extensive set of case study modules with exercises for teaching different topics in software engineering and computer science, as well as guidance for instructors on how to use these case modules. In this chapter, the authors motivate the use of the case study approach in teaching SE and CS concepts. They provide a description of the DigitalHome case study and the associated artifacts and case modules. The authors also report on the use of the developed material.


Author(s):  
Salamah Salamah ◽  
Massood Towhidnejad ◽  
Thomas Hilburn

While many Software Engineering (SE) and Computer Science (CS) textbooks make use of case studies to introduce difference concepts and methods, the case studies introduced by these texts focus on a specific life-development phase or a particular topic within software engineering object-oriented design and implementation or requirements analysis and specification. Moreover, these case studies usually do not come with instructor guidelines on how to adopt the introduced material to the instructor's teaching style or to the particular level of the class or students in the class. The DigitalHome Case Study aims at addressing these shortcomings by providing a comprehensive set of artifacts associated with the full software development life-cycle. The project provides an extensive set of case study modules with exercises for teaching different topics in software engineering and computer science, as well as guidance for instructors on how to use these case modules. In this chapter, the authors motivate the use of the case study approach in teaching SE and CS concepts. They provide a description of the DigitalHome case study and the associated artifacts and case modules. The authors also report on the use of the developed material.


2012 ◽  
pp. 1215-1236 ◽  
Author(s):  
Farid Meziane ◽  
Sunil Vadera

Artificial intelligences techniques such as knowledge based systems, neural networks, fuzzy logic and data mining have been advocated by many researchers and developers as the way to improve many of the software development activities. As with many other disciplines, software development quality improves with the experience, knowledge of the developers, past projects and expertise. Software also evolves as it operates in changing and volatile environments. Hence, there is significant potential for using AI for improving all phases of the software development life cycle. This chapter provides a survey on the use of AI for software engineering that covers the main software development phases and AI methods such as natural language processing techniques, neural networks, genetic algorithms, fuzzy logic, ant colony optimization, and planning methods.


Author(s):  
Farid Meziane ◽  
Sunil Vadera

Artificial intelligences techniques such as knowledge based systems, neural networks, fuzzy logic and data mining have been advocated by many researchers and developers as the way to improve many of the software development activities. As with many other disciplines, software development quality improves with the experience, knowledge of the developers, past projects and expertise. Software also evolves as it operates in changing and volatile environments. Hence, there is significant potential for using AI for improving all phases of the software development life cycle. This chapter provides a survey on the use of AI for software engineering that covers the main software development phases and AI methods such as natural language processing techniques, neural networks, genetic algorithms, fuzzy logic, ant colony optimization, and planning methods.


2018 ◽  
Vol 2 (6) ◽  
pp. 763-767
Author(s):  
Trevor Lane

The quality of the research record in the form of peer-reviewed journal archives is a reflection of not only the quality of the research publication and correction process, but also the quality of the underlying knowledge creation process. Key to the integrity of the research record are honesty and accountability from all parties involved in governing, performing, and publishing scholarly work. A concerted effort is needed to nurture an ethical research publishing culture by promoting ethical practice, relevant training, and effective systems for responding to allegations of research or publication misconduct. The Committee on Publication Ethics (COPE) is a membership organisation that aims to promote integrity in research publishing, for example, by developing and encouraging best practices to ensure that research is reported ethically, completely, and transparently. COPE uses the Principles of Transparency and Best Practice in Scholarly Publishing as part of its criteria when evaluating publishers and journals as members. Researchers can also make use of these guidelines to assess a journal's quality and to gain insights into what peer-reviewed journals expect from authors. The present article outlines and discusses these guidelines to help life science researchers publish ethically, as well as to identify ethical journals as readers, authors, and reviewers.


Sign in / Sign up

Export Citation Format

Share Document