DevOps (a portmanteau of “development” and “operations”) is a software development method that extends the agile philosophy to rapidly produce software products and services and to improve operations performance and quality assurance. It was born to accelerate the delivery of Web-based systems and quickly bring new value to users. Many Web-based systems evolve according to usage trends without a clear long-term goal. Before the widespread use of Web services, most software with a clear goal were delivered as packages that users installed on their own system. New versions were delivered with a much lower frequency, with periods in between versions ranging from months to years. Development cycles were divided into large design, coding and testing phases culminating in the release of a new stable version. In software development in the context of applied science, even when the goal is clear, the process to attain it is not.
Hence, working releases that capture the current software state must be released frequently in order to reduce the risks for all stakeholders and to make it possible to assess the current state of a project and steer it in the right direction. This paper explores the usefulness of DevOps concepts to improve the development of software that supports scientific projects. We establish the similarities and differences between scientific projects and Web applications development, and discuss where the related methodologies need to be extended. Unique challenges are discussed herewith developed solutions, and still open questions. Lessons learned are highlighted as best practices to be followed in research projects. This discussion is rooted in our experience in real-life projects at the IBM Research Brazil Lab, which just as well apply to other research institutions.
Continue Reading
Feature learning plays a central role in pattern recognition. In recent years, many representation-based feature learning methods have been proposed and have achieved great success in many applications. However, these…
Requirement prioritization is a process that allows selection of the “key” candidate requirements, the ones that are the most important for the construction of quality and cost-controlled software. Requirement prioritization…
In loop parallelization, data dependence relations are used to decide which pair of statement instances should be allocated to a same processor or should have a synchronization communication. However, in…
Transistor lasers (TLs) with n-doped quantum wells (QWs), which own low threshold current, are reported in this paper. The exposed side walls of QWs introduce amounts of recombination centers, which…
This paper reports a 325-km ultra-long span repeater-less transmission system in a 17×10 Gbit/s optical transmission system by using different amplification schemes. We demonstrate two different amplification schemes which combine…
The paper describes the implementation and experiences gathered from the Spade project which is a decentralized mechanism for data management that has been used in High Energy and Light Source…
Full length Pseudo Random Noise (PRN) sequences are widely used in CDMA communication. The full length sequence number is not easily divisible. So it is not easy to generate a…
This paper proposes the taboo words similarity browsing system which is able to assist the naming process. The proposed system in this paper analyzes new texts - new words or…
Research on recommendation system is now getting a lot of attention due to the rapid growth of user generated contents, especially internet review forums. They easily share about their experiences…