Uma abordagem holística para o desenvolvimento de software multiplataforma - Blanco, Juliano Zanuzzio (2020)
Background: Software systems have become fundamental in the activities of individuals and companies in recent years. The possibility of easy access became possible after the popularization of the web platform in the first moment, followed by the mobile platform, have been changing the need for access and information processing. Given this scenario, software development gains a new challenge, beyond the requirement for quality and productivity. In many cases, it must be cross-platform and consider differences and limitations of the various existing and future devices. Cross-platform systems are normally composed of several individual solutions, each for a different device or platform. This separation increases the development cost, as different development teams are often needed for dealing with the specific requirements for each device. There are cross-platform solutions available in the industry and academia, but these are normally restricted to preconfigured platforms. They also normally consider that each individual solution is equal or similar, in terms of functionality, to each other. Objective: Motivated by this scenario, this doctoral thesis presents an approach where the development and maintenance of cross-platform software occurs as a single software entity, taking a more holistic view. The approach takes advantage of existing cross-platform solutions but adds three new aspects regarding the developer's autonomy: support to include new platforms, extension of the approach and support to distribute functionality across the devices. Method: The approach is based on a general-purpose language (GPL), which allows the developer to specify domain concepts in an abstraction level that is higher than a normal programming language, as it is free from platform details and includes some modeling elements. Automatic transformations are used to produce executable code that can be properly divided and deployed separately into different platforms. The proposed approach was evaluated in three ways. In the first evaluation, an existing cross-platform system was recreated using the approach. The second evaluation was conducted with 5 experts, who tested the cross-platform approach in practice. The last evaluation was the solution of a pointed out by the specialists through the possibility of extending the approach, demonstrating its robustness. Results: The results have brought evidence supporting the contributions of the approach, mainly: the possibility to use a single environment to create a high abstraction representation of the software, the ability to reuse similar concepts between platforms and the potential to reduce costs. The evaluations also pointed out some limitations, mainly: the need for an initial effort to properly create and prepare the platform using the native IDEs, the need for additional tests and some missing implementation details.