How we work
We develop software
15 years experience in software development
We have been developing software projects for 15 years, during this time the type and size of web-based applications and software has changed incredibly. In the past, software development was often a complicated subject, with precise planning, good project management and accurate implementation as its most important factors.
However today the implementation of software projects often involves complex and therefore hardly plannable tasks, e.g. due to rapid market changes and a multitude of dependencies and interfaces. Therefore, exact advance planning is of little help as the requirements or priorities can already change at the moment the implementation begins. Therefore we prefer agile software development to be able to react to changes at any time.
In essence, agile software development is about planning the entire project only roughly in advance and dividing the development into small sections, so-called sprints of 2-4 weeks. At the beginning of each phase, the current priorities and requirements are discussed and planned in detail with the customer. At the end of each section, the results are discussed together, if necessary the working method is optimized and the next section is planned.
A fully functioning software is the result of each section or sprint. It might be that the software can not do much yet, but all it can do works. So the work piece will be gradually enhanced with additional functions and features.https://dict.leo.org/englisch-deutsch/affairThe result of each section or sprint is a fully functioning software. It may not be that the software can do much yet, but what it can do works. So the work piece will be gradually enhanced with additional functions and features.
The advantages of this approach are obvious. In the past, changes in the course of a project led to high additional costs. These are not a problem in agile projects, changes are even planned. The risk is reduced to the length of a sprint – if the client wants to change the service provider, he can do so after each sprint and gets a working piece of software that other developers can develop further. The working method of agile software development is very transparent, the customer or client is continuously involved and is therefore always up to date with the latest developments.
Conception & requirements management
A relaunch always starts with the creation of an ACTUAL state analysis and a TARGET state concept.
The relaunch project starts with the analysis or survey of the actual state and the target concept. It has been shown that a workshop together with customers and developers at the beginning of the project is very helpful, we call it the “Project Kick-Off Workshop”.
Here, for example, the project vision can be formulated and the basic framework of the application can be worked out and visualized in a story map. W togetherthe in which should be obvious that of creating the taskin that parts
we also determine and set priorities. Afterwards it is clear in which order the implementation will take place.
We collect all requirements in UserStories, i.e. a very rough description of the task, which is understandable for non-technicians and developers alike. Each user story is further defined in the course of the project until the task is crystal clear and can be implemented.
Architecture & Design
Based on this basic framework of requirements, the software architects develop a solution approach. This includes choosing the right technology and the right software architecture. This can be imagined like a house that can be built using different materials such as wood, stone or metal and is planned architecturally differently depending on the intended use. Thus, an office fulfils different requirements than a hotel or a residential building.
Once the architecture and design are in place, the basic structure of the application is developed according to priorities. For example, user administration, interfaces to other systems or order management are created according to requirements.
As a rule, the respective basic functions are implemented first and the result is presented to the customer and discussed with him. On this base, the further functionalities or processes are planned and iteratively, i.e. gradually implemented in the further sprints.
Transparency, versioning, testing and automation
In software development, we rely on the use of various tools to assure software quality. They ensure transparency, reduce the potential of errors and promote good cooperation – thus we can ensure and prove good quality and support a culture of learning in the team.
Through code versioning systems such as Git and Gitlab, every contribution of every developer is visible and traceable for everyone at all times. Every change to the code is tracked and can be compared quickly and easily with previous versions. Thus the entire development process is easily traceable.
An appreciative, open and positive error culture is very important to us – errors will always happen and do not need to be concealed, because errors provide a great opportutity to learn from them. All that is needed is to take the right measures in order to detect them early on.
Therefore, we regularly conduct mutual code reviews by the developers before code is transferred to the production master of the application. This increases the quality and the developers continuously learn from each other.
We also use different types of tests, which are mostly executed automatically by systems as soon as a developer wants to contribute a change to the code. In order to prevent new bugs from creeping in, we check whether everything that worked flawlessly in the past is still working after the changes are applied.
So on, automation is used to check whether code conventions have been followed, this avoids poorly readable functions and typing errors. This way code becomes good and easy to change or extend for everyone. The times in that people depended on “the one developer” who understood the code are long gone.
Continous Integration - Continous Deployment
We like to focus on software development by using the full potential of modern DevOps development platforms to automate the integration and deployment processes (Continous Integration/Continous Deployment). That way, our team can focus on making a greater contribution to the actual value of the software.
Things that are repeated more often should be automated. For example, in addition to testing, this includes publishing the latest software version on the production system, known as deployment. Once the procedure or process has been configured in the CI/CD Server, it can be reliably repeated as often as required.
This means that releasing a new version is no longer a challenge at all and can theoretically even be carried out by trainees, as the results are predictable and can be planned.
Quality Management & Testing
To achieve the best quality of our software, we follow the test-driven approach of software development. Every function we implement is thoroughly tested by regards of its unit, functional, integration tests and penetration to ensure optimal quality management.
Our integration tests are based on the user stories that were created with the product owner. This reduces the time needed to create comprehensive documentation by emphasizing customer-oriented discussions.
During the modernization process, unused code can be identified and removed and the performance of the productive code can be improved
Besides software development, we are trained system integrators and have 20 years of experience in system administration. The installation, configuration and operation of server systems is in our blood. Therefore, we can configure and secure server infrastructures according to project or customer requirements and support them in further operation.
The decision of an used concept depends on your needs and the requirements of the software project. Over the last years a lot has happened in the area of virtualization and containerization. Several server systems share the same hardware. This increases efficiency, saves costs and can greatly simplify the development and support of the systems. For example, so-called snapshots can be used to freeze states and restore them later if needed.
We advise our customers to decide whether an application is better hosted in the intranet of a company, in the data center, in the cloud or using a PaaS provider (Platform as a Service). After recording the customer’s criteria, we can, if required, prepare a utility value analysis that may include financial and non-monetary aspects that are compared and weighted differently. As a result of this analysis you will receive a valid basis for your decision.
Maintenance and support
Once the application is online and actively used, we are happy to offer you an individual maintenance and support concept if required. The scope of this often depends on whether the customer has his own IT department taking care of the systems or whether an “all-inclusive package” is desired. This can therefore only include system monitoring and the installation of critical security updates. It also includes the regular backup of data according to the generation principle.