What can I do for you?
Being a computer science engineer with a specialization in desktop software, I develop business applications for companies and institutions, used by hundreds of people. I started this activity in 2000, when modern development tools were not as sophisticated as today. Some of them are still in use, while others have been superseded by newer technologies.
As technologies evolve quickly, I favor open source tools that the community can take over when its original publisher decides to shift its commercial orientation. This ensures financial sustainability and maintainability for my customers.
Assistance for a great start
Expressing business needs is usually a complex process. It implies organizational requirements and goals, existing processes and users. It’s the most important step in software engineering as it defines the deliverables. During this phase, I can assist you in:
- precisely defining the project scope
- analyzing and defining the functional software requirements of your application, thanks to a Use Case approach, including:
- business processes modelling,
- data modelling,
- software architecture.
Help to implement a successful Agile project management
In order for your project to succeed, a project management methodology alone is not enough. Other key points must be addressed, such as:
- a budget,
- a realistic estimated timeline,
- a risk analysis,
- a communication policy with the steering committee and the stakeholders.
As a consultant, I have been involved in various projects and each one was managed in a unique way, according to the organization’s culture. No project management methodology by itself guarantees success. It’s rather a perspective, a mindset adopted by the team geared toward confidence in the project.
Once the features, the resources and the milestones are defined, it’s time to start to code the application with the following tools and languages:
- C# as the base programming language
- the .Net 5.0 Framework
- other specific libraries for cross-platform graphical user interfaces
- PostgreSQL as a database
Usually the development tasks are performed on Linux and macOS platforms. Windows is of course used too, mainly for testing purposes.
By default, the application will work on Windows. Upon request, the application can be designed to work on Windows, macOS, Linux, Android and iOS.
Best engineering practices
It’s not so complicated to pick technologies and use them together to code a new application. However, what determines the quality of the deliverable in the long run is the engineering mindset, consisting in:
- using proven design patterns (code and UI),
- multi-layered modular architecture,
- using modelling tools like UML,
- optimizing code to ensure performance,
- test-driven development,
- defensive programming.
Software Quality Assurance
Software quality is at the core of every project. “Fail early” is an applied principle that guarantees that
bugs are identified and fixed as soon as possible, rather than later when the fixing cost is much higher. The mandatory
quality strategies are:
- unit tests, to ensure the correctness of the functional requirements,
- integration tests, to ensure that the application can be correctly deployed,
- user interface tests, to ensure the correct behavior of the application by the users.
Other tests can be included, based on specific requirements:
- security tests,
- performance tests,
- ad hoc tests.
Feel free to drop me a line. I’ll be very pleased to learn more about your needs and find together the best solution for your project.