Matrixx: Native Mobile Apps for Telecommunications
Provided mobile expertise to build mobile access to the client’s platform for communications service providers. Ongoing development of the native iOS and Android applications for real-time transactions monitoring and management, digital marketplace, etc.
MATRIXX Software is an award-winning provider of real-time, integrated infrastructure for the business of digital service providers. The company provides solutions for instant visibility, intelligence and control of services for communications service providers. MATRIXX allows users to move to the all-digital service environment with a new kind of real-time time technology platform, designed to handle the surge in interactions without forcing the compromises of conventional technology.
In mid-2015, MATRIXX realized they needed expert help to build new mobile-based access to their industry-leading platform. They reached out to Waverley for our experience in native development on both iOS and Android, as well as the ability to turn a vision into user experience and final design of new mobile software. Just like the full platform, the mobile version of MATRIXX would allow users to interact and configure their data experience in real-time while simultaneously handling the surging transaction volumes associated with LTE monetization. In addition, it would allow customers to tailor price plans through a digital marketplace and to set personal policy rules for when they reach balance thresholds.
Waverley started building two mobile applications for iOS and Android. The work is now in progress. Both applications will enable secure and easy onboarding and account activation (including Facebook authorization), tariff manipulations, family sharing and push notifications. The server-side will use integration with 3rd party web apps that are cross-platform, application-independent, fully integrated as part of the UI and can be cached. An easy to integrate, customizable, iOS/Android SDK is used. The SDK should share the same server API layer with local data caching, skin-able UI elements and tablet support. Both apps are being created by means of the latest technologies, ensuring their scalability and maintainability.
In order to reach maximum user-friendliness, our UX designers follow the two-taps reachability approach. For iOS application, the designers are following Apple design guidelines, leveraging the best practices of iOS UX. For Android, they’ve chosen the simple and elegant Google material design. The UI on both platforms is highly interactive, as insured by UI automation testing. It also provides localization, supporting various languages and localized user names and descriptions.
The iOS application is built using the component-oriented approach. Web components are embedded into screens, list view. It possesses the essential features while providing beautiful and logical user experience following Apple design guidelines. We have unit tests that cover the following layers of the App: Network, mapping and database layers.
We needed a company that could move quickly, accept a demanding and sometimes moving spec, and still deliver a product with the same high quality that our own customers expect. I've been impressed by Waverley's expertise and willingness to go the extra mile when we needed it, and although the project members are widely distributed, they feel like part of the team.
The Android app for Matrixx will support Android 4.1 and higher. The app logic heavily relies on RxJava framework. It really helps to reduce bugs and keep the code clean. A few famous and robust open-source libraries have been used (Retrofit, GreenDao, Retrolambda, Glide, RxJava, etc). It contains the same essential features as iOS app, including marketplace research, assets exchange, tariff bundle support. Its scalability is ensured by means of multilayer design and use of isolated components. In order to provide the highest maintainability, all code is documented and unit testing is performed. The app also supports offline functionality.
On the server-side, the request from the customer was clear: both applications should comply with the common rules and business logic, and offer subscriber base aggregation. The highly configurable integration layer we are currently working on sits between client apps and Matrixx APIs. This layer should be horizontally scalable, which means its API should be RESTfull. We use tools like New Relic to monitor server performance. Mongo storage is organized on replica set conception. This prevents possible data losses and increases information availability. In order to optimize resource use, maximize throughput, minimize response time, and avoid overload of any single resource, a load balancer is utilized. We also introduced an easy API for purchases, a user-friendly admin panel with convenient app analytics, as well as a wide range of notifications: APN, FCM and SMS (for onboarding).
We work using an iteration-based Agile approach with 1-2 week iterations. The Product Owner participates in daily standup meetings to track progress and answer any questions from the team. The team uses the shared codebase. By means of this approach, we are able to implement any adjustments and detect problems in their early stages. Each iteration, once it is completed, has a ready-to-use functionality that can be shown to customers. This enables us to deliver frequent production-quality releases with partial functionality as the project progresses, which, in turn, ensures meeting the deadlines.
All test documentation related to functional testing is created in a test management tool. We automate repetitive tasks and regression testing using modern frameworks. We use:
- Functional tests (positive and negative) for both applications.
- Compatibility testing.
- Load and performance testing for server-side
- scalability testing.
All bugs are reported in a bug tracking system (Jira, Pivotal, Redmine, etc.). Bugs are reported and assigned as soon as they are found. The QA Lead will review each bug and monitor the bug life cycle. A Triage meeting is conducted each week between Product Owner, QA Lead and Tech Lead(s). The QA Lead organizes the meeting. During the meeting each bug is analyzed and discussed. Updates are captured in the bug tracking system. Frequency of these meetings depends on project schedule, numbers of bugs, team availability, etc.
TBD, applications are still in development.