Agile Software Development

This is a summary of the services we provide within the software development branch.

Implementation & Maintenance of Large Software Systems

Programming languages

  • We work mainly with Enterprise Java, as well as C++, C#, JavaScript / TypeScript, Kotlin, PHP and Python

  • We also work, but less often, with C, Go, Groovy, Objective-C, Ruby, Rust, Scala and Swift

  • We know uncommon languages such as for example Haskell

Web technologies

  • Frameworks such as Angular, React and Vue.js, Flux/Redux, Ember

  • Java-frontend technologies such as Spring MVC, JSF and JSP, JavaFX, SWT, Swing and Vaadin

  • ASP.NET and Node.js

  • Grails on Groovy, Rails on Ruby, Python with Flask and PHP with Symfony

  • CSS with Less and Sass, PostCSS and CSS-in-JS

Frameworks

  • O/R-mapping with Hibernate/JPA, Doctrine and Entity Framework

  • Inversion of Control with Spring, CDI, Simple Injector and Unity

  • Application development with Spring Boot, .NET Core, Micronaut and Quarkus

  • Enterprise integration with Apache Camel and ESBs, TIBCO

  • Messaging with Kafka, ActiveMQ and RabbitMQ

  • Stream programming with Apache Flink and Spark

  • Rule engines with Drools

  • Reactive applications with Akka, Spring and Reactive Streams

  • Component models with OSGi and Java modules

  • GUIs with Qt

Tools

  • Search engines & tools such as ElasticSearch/Logstash/Kibana and Solr/Lucene/Hibernate search

  • Shell scripting with Bash, Zsh, Powershell

  • Compiler construction with Yacc/Bison/JavaCC/ANTLR and f/lex

  • Complex e-commerce solutions based on the hybris Commerce Suite and the hybris Commerce Accelerator

Architecture & Design

  • Domain-driven Design (DDD), object-oriented analysis and design (OOAD)

  • Distributed systems with REST & SOAP, GraphQL and OData

  • API management with OpenAPI and Apigee

  • Event-driven architectures, event sourcing and CQRS

  • Serverless architectures

  • Responsive web design, progressive web apps & user experience (UX)

  • Documentation with JGiven and arc42-templates

  • Architecture rules with ArchUnit

Automated Test & Quality Assurance

  • Test-driven development and test automation with Continuous Integration systems like Jenkins and Bamboo

  • Test tools like JUnit/TestNG/FitNesse, Hamcrest/Mockito, Concordion, Behat, JGiven, AssertJ & FEST, Selenium/Geb, Jest, Mocha and Jasmine

  • Quality management with SonarQube PMD, FindBugs/SpotBugs, CheckStyle and *Lint

  • Code reviews and software verification

  • Performance testing & tuning, analysis of concurrency and memory leak issues

Operating & Development Environments

  • Java application servers like Oracle WebLogic, Tomcat, Jetty, WebSphere and Wildfly

  • Portal servers like Liferay

  • Operating systems like Linux, Unix, macOS and Windows

  • Build systems with Gradle, Maven, Ant, Ivy, npm, Grunt, Gulp, Phing, Composer, yarn, CMake, NAnt and NuGet

  • Version control with Git (GitHub/GitLab/Bitbucket), SVN, ClearCase, Mercurial, TFS, Jazz

  • Artifact management with Nexus/Artifactory

  • Wikis and bug trackers like Atlassian Confluence and Jira, Jetbrains YouTrack, Trac, MediaWiki

  • IDEs like Eclipse, IntelliJ, PHPStorm and CLion

  • Development for mobile devices on iOS and Android

  • Cloud- and SaaS-platforms such as AWS, Azure, Google Cloud Platform, OpenShift und AppExchange

Services, Processes & Requirements

  • Best practices software development with Scrum, Kanban, scaled Scrum (SAFe, LeSS) and techniques out of Extreme Programming / XP

  • Support as a Scrum Master and Product Owner

  • Language- and tool-agnostic implementation of business software

  • Restructuring of ongoing third-party projects as well as troubleshooting and refactoring of legacy code

  • Agile requirements engineering, user stories/story mapping and event storming

  • Firefighting

  • Trainings, workshops and know-how transfer

IT Rescue

  • Inventory, due diligence review

  • Roadmap for modernization tailored to the customer with diverse technologies in various industries

  • Consulting on modernization strategies, e.g. according to the Strangler Pattern or with in-place modernizations

  • Support in prioritizing existing business features

  • Establishing cloud readiness

  • Intelligent concepts for the conversion: Temporary adapters that hide the migration for client systems

  • Paradigm shift and introduction of best practices in software development and requirement management

  • Quality assurance and risk minimization by increasing the degree of automation