Source code analysis
We read, understand and organise your source code, and identify its key parts, dependencies and quality.
In more than 20 years we have watched technologies, languages and frameworks come and go. All that time we have been working on legacy systems – and we even built some of them ourselves.
If you find yourself nodding while reading the points, we will come, assess the situation and help you before it becomes a serious problem.
Documentation was lost, corrupted or marked as not needed during the last overhaul of the document management system. It sits on an unreadable medium or a failed hard drive, or was simply lost, forgotten, never delivered.
Remember Joe? The one who left last year after being with the company forever. Nobody really knew what his duties were, and the handover was done in a hurry. Yes, that one – the one who knew what the system does and why it was declared critical. And yes, he is gone and not coming back.
If your platform is older than your interns, half of its software frameworks can no longer be downloaded, error messages are only discussed on obscure Chinese servers and Google returns just five results, it may already be too late.
Oh, your hardware is out of production and out of support? But you can’t replace it, because the software needs an old operating system that is incompatible with new hardware. Plus, the list of known vulnerabilities for those old systems is longer than the list of their features. But don’t worry – if you’re lucky, the hacker will be too young to know how to connect to the good old systems.
We use the vast experience gained over decades in the field to see what you cannot. Our work is mission-oriented and deliberate with clear outcomes.
We read, understand and organise your source code, and identify its key parts, dependencies and quality.
We create, update or complete the documentation so that work on the system can continue.
We bring order and structure, mapping the system architecture with its individual building blocks and their relationships. We describe its inner workings as well as its interfaces to the outside world.
We identify and assess both general and security risks of the system, and propose solutions or mitigations together with a clear implementation plan.
We identify the key parts of the system and prepare the approach to modernisation and its delivery, covering every level – from technical through project and financial planning to the implementation itself.
Leave it to us – we analyse your system and take it over into our care with minimal impact on your operations.
We consult you on every step and prepare it so that we always act in line with your goals and expectations.
Understanding and clearly defining the problem and expectations is essential to reaching the goal and your satisfaction.
Knowing where we are and what we are facing is essential to deciding where to go next.
Knowing where we are going and how we will get there is essential so that we don’t get lost along the way.
Movement and delivery are essential so that we don’t stand still.
The art of looking back and seeing objectively what we have overcome is essential so that we don’t repeat the same mistakes next time.
From a nationwide system in round-the-clock operation, through a database with twenty years of history, to modernising a Visual Basic 6 application. Four examples of how we helped clients regain control of critical systems.
Developed since 2010 and in operation since 2016/2018, the system is used nationwide by tens of thousands of users and stores hundreds of millions of records. Since 2018 our team has been solely responsible for its maintenance and upgrades – including several rounds of performance and functional upgrades, all under 24/7/365 availability.
It is a large-scale system with many integrations and, as part of critical infrastructure, faces severe security and performance requirements. Although several members of our team were part of the original development team, they produced only around 25% of the code we maintain – the rest we had to take over, understand and keep running.
We maintain hundreds of complex test scenarios integrated with third-party modules and run the full secure development cycle, including audits, static analysis and vulnerability monitoring.
One database, eight years since its last major upgrade, terabytes of data, hundreds of tables, thousands of stored procedures – and three foreign keys. Constant performance issues, no control over data consistency and more than 20 years of development.
We combined automated and manual analysis and built custom tooling to automate the analytical process. We found three solutions, developed over 20+ years, coexisting inside the database and intertwined into one.
We identified relationships between tables, built the application's domain model, found unused parts and mapped table usage across stored procedures and functions – several thousand relationships and dozens of primary keys in total.
Result: the cost of a complete overhaul was judged too high, and the findings became the argument for an entirely new implementation of the system.
The digital transformation of the second-largest hospital in Czechia had stalled – insufficient funding, resistance to change, vendor lock-in and a devastating cyber-attack. The result: core systems 20–30 years old, still running MS-DOS-style text interfaces in 2023.
We mapped the information system ecosystem and classified systems by importance and age – most were out of support, with severe vendor lock-in. We then assessed alternatives within the customer's budget constraints while balancing pressures from several factions in the hospital's C-suite.
This lets the customer spread the transition over time without severely affecting day-to-day operations or the friction of a big-bang approach. We also helped prepare proposals to secure funding from EU structural funds.
The system the customer uses to serve its clients had been developed for 20 years in Visual Basic 6 – with COM objects, Windows services, web services and many third-party integrations. The goal: a new version with as few functional changes as possible, on current technology, with significantly shorter testing and deployment times.
We opted for a microservices architecture with a .NET backend and a React frontend, with automated UI and unit testing. The application is fully dockerised and deployed automatically through pipelines.
Within three months we set up environments with automated build and deployment, completed the analysis for the first part of the application and met the milestone I targets – with the full backend stack and automatically generated parts of the solution.
What we bring is, above all, experience and honest work gained over years of working on systems both small and large. In the age of AI, listing the platforms we understand is pointless – so even if you don’t see your language or platform in the list, it doesn’t mean our experienced team can’t help you.
Our main goal is always to achieve your goals. We draw on our extensive experience to find a way even where others cannot see one.
Small, large, critical – we have worked, and still work, on systems of every size.
Because we come from the outside, we are not limited by habits, practices or the status quo. We look at every challenge as unbiased observers.
We provide services across all phases and levels of project planning and delivery.
We say and describe things as they are – not as they seem, or as someone would like them to be.
“To improve is to change; to be perfect is to change often.”Winston S. Churchill
It depends on the complexity of the system and the goal of our work. For smaller systems we expect somewhere between three and six months.
If we are to propose changes to it, definitely. If you don’t have it but have the right to use and modify it, we will try to recreate it through decompilation.
We will design its structure and fill it in.
We can cover any activity across the planning, delivery and operation of systems, including taking the system over into our care.
Let’s take the first step together – write to us or give us a call.