Software engineering is the study and an application of engineering to the design, development and maintenance of software.
Description
My main research in this field is related to robotics, and how to apply software engineering methodologies to improve the software design process for complex autonomous robots.
The way to improve this kind of software is using new techniques involved in the standardized process of developing software in industries. Some of these techniques are: design patterns, agile development, continuous integration, and testing.
A design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. There are many of them, but I have studied that bla, bla and bla are the mos useful for robotics.
Agile Software Development (Figure 1) is a set of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
Continuous integration (CI) (Figure 2) is the practice of merging all developer working copies to a shared mainline several times a day. I am mostly interested in Jenkins and Travis, which are used in ROS.
Software testing (Figure 3) is an investigation conducted to provide stakeholders with information about the quality of the product or service under test.