Software Development

Software Development

26 - 01 - 2021
15 Min

Introduction

In xitee, we have experience in developing software solutions with the know-how of digital businesses, finance & energy and healthcare sectors. We have a wide range of customers, from small startups to big corporate companies. We serve customers who have no experience with software development as well as specialized software houses.

Our goal is to always produce high-quality, well-tested software which is ready for production use in the shortest time with the lowest cost possible. These apparently divergent goals are achieved by following a plan and our internal best practices that remove the typical pitfalls of software development projects.

We anticipate any possible costly mistakes, such as failing to ask the end-user or client for feedback, which eliminates redundant rework and after-the-fact fixes. We focus profoundly on the testing phase and code reviews, which save a lot of rework, time, and money in the future. Also, we are always applying our deep industry knowledge.

New development

We offer development of solutions with maximum added value for our customers. That includes everything starting from business requirements analysis, through solution design (functional, graphical and technical), realization, deployment and following support.

Our past projects included a variety of different technologies for almost all platforms. Most commonly we use Java or .NET as backend and Angular or React for new web solution software development. Our experienced team is ready to always find the best solution for your specific needs. For more information about the technologies refer to Technologies.

Each project we work on includes a proper quality assurance (QA) before the project goes live.

Quality assurance

There are six foundation blocks (Version control, Continuous integration, Issue tracking, Unit tests, Reviews, Code analysis) that ensure the quality of the software and therefore of the product itself. Various synergies between the specific parts enable transparency and maintainability. At the same time these components work as a toolkit for every single software developer.

Through the usage of a version control, each modification of the code is comprehensibly documented, and each version can be restored at any time. This grants flexibility to the development and allows a precise analysis of all arising errors of the software.  

The use of a continuous integration (CI) system allows a controlled compiling of new software versions as well as continuous reporting for the developers regarding any arising errors during the compilation. Additionally, automatically elicited key figures, which display the state of the product, can be generated and reported. Features and bugs, as well as milestones and project tasks, are managed through the Issue tracking system (JIRA and / or Confluence). This creates traceable and transparent development from requirement analysis to delivery and allows the creation of relationships between individual tasks or features. 

Redevelopment

When evaluating the health of your current solution’s architecture and deciding whether to rewrite or refactor, every company needs to consider many aspects to make a correct decision. 

Some of the key aspects are:

  • Achieving business goals: might be different for each company. Some examples of business goals are  a focus on new customer requirements & feature releases, a focus on quality and performance of the product, gaining new customers & market share etc;
  • Technology : we have to consider how long  the currently used languages and frameworks will be supported. Are there any emerging technologies and trends which the application can benefit from? (i.e. clouds, microservices, new framework versions);
  • Reduction of costs to maintain and implement new features: reduction of current technological depth, shorten time to market
  • Performance & security: Is performance an issue which cannot be resolved with a current architecture? Do you want to examine your security with security penetration testing or security certificate? Do you want to elevate your security standards?
  • Customer experience: Are you current end-customers satisfied with your application’s UI/UX designs? Can new UI/UX further improve efficiency? For internal applications we can consider for instance whether an app can further improve productivity of  employees.
  • Quality of current codebase: Does your solution have correct design patterns? Did you use code style & unit tests? Does your solution suffer from bugs?

xitee can take over support & further development of your solution during the analysis stage.

Examples of possible agreed approaches:

  • continuing to develop with the old codebase;
  • keeping the old codebase but focusing on refactoring;
  • rewriting the whole system from scratch;
  • rewriting the system part by part.

Mobile development

xitee offers different types of mobile development based on your requirements. Native development produces solutions with high performance; however, it can be rather costly to build. If you have a limited budget to work with, a cross-platform development might be a suitable option for you. It is possible to save up to 50% as only a single codebase is created for a solution that works on both Android and iOS.

If you do not need to have your solution on App Store or Google Play and you wish just to provide mobile friendly environments for your users, we can use Progressive web apps (PWA) with some of mobile application capabilities. The cheapest and fastest solution might be to use only web solutions optimized for mobile devices.

Native development

Native applications are being developed through their native operating environment. In the case of a native development, developers use a programming language adopted for a particular platform, such as for example Objective-C and Swift for iOS or Java for Android. 

Advantages of native development:

  • stable and fast performance;
  • maximum app lifetime;
  • the application is more flexible and scalable, due to the native tools usage;
  • less restrictions in the architecture and functions;
  • the interface is made in a full compliance with the platform.

Cross-platform development

Cross-platform solutions are developed through a shared operating environment, such as Xamarin. A cross-platform solution is a universal solution that is supported by several mobile platforms at once. On one hand, it is convenient and profitable, but on the other hand, there might be a need to accept certain compromises, since it is difficult to tailor the solution to various operation systems. 

Advantages of cross-platform development:

  • the development takes less time and resources;
  • the speed of development increases.

Progressive web app (PWA)

A progressive web app is built from web technologies, such as HTML, CSS, and JavaScript, but with a feel and functionality that rivals an actual native app. Due to smart additions, you can turn almost any website into a progressive web app, which means that you can build a PWA in a short period of time.

Advantages of PWA development:

  • you do not have to go through the process to get into different app stores;
  • PWAs are smooth, fast and lightweight;
  • PWAs work offline, unlike your regular site;
  • you can use push notifications to re-engage users.

Web solutions optimized for mobile devices

In this scenario we are creating a separate design for mobile devices. It is the fastest way to provide your solution for mobile users. 

Advantages of a web solution optimized for mobile devices:

  • low costs;
  • time to go to market.

Data warehousing & reporting

Data warehousing is the way of constructing and using a data warehouse. A data warehouse is created by integrating data from multiple heterogeneous sources that support analytical reporting and decision making. xitee has experience with numerous different technologies including databases, date warehouses and migration projects.

Data reporting is a process of collecting and formatting raw data and subsequently transforming them into a digestible format to assess the ongoing performance of your organization. A data report reveals then where to spend the most time and resources, and what needs more organization or attention.

An accurate data reporting plays an important role in every industry. Therefore, we provide a service focused on data warehousing and reporting. We have experience with the following tools and technologies:

  • SQL Databases - database design, optimization and upgrade for popular DB systems (Oracle, Microsoft SQL Server, MySQL, MariaDB, Galera Cluster, PostgreSQL);
  •  noSQL databases & search engines - selection and usage of proper technology for particular needs (Cosmos DB, Mongo DB, Lucene, Elasticsearch);
  • Data migration as a part of a new software development, typically using self-made (project specific) migration tools. Either as a batch process or a continuous data transfer/synchronization;
  • Data Warehouse - design and implementation of a cloud based as well as a tailor-made data warehouse solution, including data import, data keeping, data analytics and data export functions;
  • Reporting - creation of reports, dashboards and exports including data access, processing, presentation and storage layers. Output can be UI-based, or document based, including an electronic document signature. We have knowledge of many popular libraries, such as Highcharts, chart.js, IOS Charts and tools such as JasperReports, SQL Server Reporting Services (SSRS) and Microsoft Power BI.

Prototyping

Software prototyping offers you the possibility to visualize a software solution before it has been created. Since the development of a software from scratch requires a great investment of time, money and effort, it is beneficial to have a visual prototype developed before the development of the actual product starts. The prototype acts as a ‘model’ which replicates the appearance, and sometimes the functionality, of the product that the client wants to develop. 

In order to decide whether you should use prototyping for your project or not, there are a few aspects to consider.

Considerations and situations where prototyping might be the best choice: 

  • When the requirements of the product are not clear to the team;
  • When the demands of the product are unstable and change quickly;
  • When there are software-intensive and complex systems that need experimentation and a minimum risk;
  • Big projects with tight timelines and deliverables.

Other blog from the same industry