When developing a new software solution, no matter how complex it could be, a specific sequence of steps should be taken in order to locate every critical aspect and to manage every glitch that will be showing during the project development.
This path is called software development process and its aim is to minimise the number of bugs and glitches in the final product. There are many kind of processes and the easiest method is to move to the next activity only when the current one is done.
This method is known as waterfall and it is composed by five steps:
Analysis and specification drafting
Testing and startup
Common pitfalls to avoid
The waterfall approach is very simple and it misses to address the most common pitfalls.
Analysis or specification errors
Analysis is the outcome of multiple meetings between the customer and the analyst, aimed to collect all the specific needs which the software should address.
Complex systems are, by definition, hard to study. Sometimes the analysis process may not read every aspect of a system in the right way, so you have to take these changes in account with a further step.
These misunderstandings may require a certain amount of rework, increasing the workload and with the consequence of missing shipment deadlines.
Considering small and simple software tools, a typical error of unexperienced software developers is to skip the software design process.
Sometimes, even smallest systems have hidden pitfalls which may be located only during the design phase. For instance you may need a not unforeseen input data, which is derived from many other components. Or more simply, the data amount is bigger than the available memory so you need to switch paradigm and increase the system complexity, maybe introducing dynamic programming and parallel computing.
No design implies more work to do and it makes expenses grow faster.
When a software reaches the feature complete state, you may want it in production as soon as possible, especially if it is an important component of the system or it brings extraordinary improvements to the current version.
When developing new software you should not be in a hurry. At the end of the development lifecycle, an extensive test session should be carried out, with actual data and an amount comparable to the one in production.
Not doing tests means that you will find out bugs directly in production and a disaster may occur. Unfortunately, there is no software without any bug.
Sometimes you may discover you are missing a specific feature or that the actual one is not ok for your needs. Change is naturale and it’s awesome but bringing responsiveness to change into software may be hard, especially in a late stage of development.
Requirements change has a great impact if the development process is managed using a waterfall approach, increasing costs and delaying releases. Agile techniques may be a solution for this as we will see.
3DGIS’ software development process
The dilemma is: how to avoid pitfalls during software development? 3DGIS follows an interactive approach which is based on agile development techniques, which engages the customer in the process.
Carrying out our projects we follow the “deliver early /deliver often” concept, which explodes the projects in short phases with the purpose of minimising the pitfalls we have seen before.
A project is divided in sprints where features are collected and organised per period of time and by the value which is given by the customer. Every sprint is linked to a release and to a test session: in this way the customer is able to follow the development process, to verify the specification compliance and to identify any potential issue with the project.
This development method is carried out side by side with the customer, involving him into the decisional process and letting him verify every deliverable.
The more active the customer, the better the software will be.
Source code version management
A software product is the result of source code compilation and assembly with the other application assets. Every software has a lifecycle made up of different versions, released for many customers in various dates which needs to be maintained along time in a errorless way.
3DGIS adopts a control version system, aiming to:
- track project evolution and to let you go back in time
- allow collaboration between developers
- organise and simplify the project development, thanks to feature branching.
We adopted GIT as versioning tool, which let us to have a decentralised management of source code and to share it with our customers.
Project and activity management
A project is made up of many different tasks, which are regulated by resources availability, dependencies and deadlines.
Keeping every aspect of a project under control, its phases and activities, is really challenging and you may want to rely on software tools designed to accomplish project management.
3DGIS has set up an arrangement of different tools which allows us to manage many project at the same time while respecting procedures and regulations required by our quality management system.
In every moment we can know the exact progress of a specific project, what needs to be done before the next release and which issues need to be solved.
We use continuous integration during development.
Source code is managed by the versioning system, which is integrated with a software tool (the CI server) which runs integration and unit tests in order to verify correctness, both syntactical and functional.
The source code is validated using many metrics, improving its overall quality and making bugs easier to find.
Continuous integration also allows us to automate releases and deployment, improving efficiency and reducing time to market.
Complaints and advisories are fully tracked: they generate a trouble ticket , get a unique ID number and an assigned priority, depending on error classification and other parameters.
Every day these tickets are assigned to a responsible which has to fix them as soon as possible, while promptly communicating updates to the customer.
Our customers may access to the customer portal, which has been designed to collect all customer data and actions. It contains current and past trouble tickets and incidents and customer documents and it allows the customer to communicate with us.