Software design and development methodology
The software design and development methodology adopted is formalized in the Standard Product Life Cycle, a procedure included in the Company’s Quality System certified ISO 9001, compliant with the standing regulations for software production, both general (IEEE 730.1) and for specific application fields (CEI EN 50128). This methodology is at the same time formal and agile. It is formal, as inspired by RUP (Rational Unified Process), for the realization of the set of documents required in the relationship among design and development teams and the other project teams, while it is agile, as inspired by agile methodologies (mainly SCRUM), and it is adopted internally for the software design, development and unit test.
The software is produced following an iterative and incremental life cycle, with successive stages of design, development, unit test, system test and release. The analysis of software requirements and the software design are formalized in UML, from where specific tools allow code generation and reverse engineering.
IDE (Integrated Development Environment) development environments are adopted, in order to guarantee alignment between design and implementation products. Software developed by Project Automation is mainly Object Oriented, at all logical levels (from the Presentation level to the Business Level), using standard programming languages such as Java, C++ and .net. The reference architectures are different, depending on the functional objectives of the system to be implemented, on its operational context and on the type of utilization that it will support: from Client/Server architectures for real time monitoring systems, recently joined, in the Web environment, by technologies such as Rich Internet Application (RIA) and Event Driven Architecture (EDA), to Service Oriented Architecture (SOA) for system integration, where services libraries are developed and coordinated by Business Process Management (BPM) and Business Rules Management System (BRMS) tools, integrated through the most common Enterprise Service Bus (ESB).
The development logics are inspired by well established best practices in this field: software is developed to be modular, scalable, open, loosely coupled, usable and portable. The tools used by the developers support the encoding and unit test stages, other tools support the integrity of code even when complex development projects with big, distributed teams are managed.
The system test is performed by test teams, separate from the development teams, although taking part in the project since the first stages of the software lifecycle. Functional, system, lifetime, performance and regression tests are carried out on all developed systems, on pilot installations wherever possible. A bug tracking system allows to trace and document each detected non conformity, fostering synergy between the development teams and the test teams.
The configuration management stages conclude the Life Cycle, ensuring, by means of versioning tools, the formalization of change requests, of non conformities management and in general of software maintenance.
Through its participation to associations such as Agile Movement and IFPUG-GUFPI/ISMA, the D&D unit acts as technological observer in order to assure innovation in the software development processes, both from a technological and a methodological standpoint.