Software Engineering

Riverside Research uses leading-edge technologies and applies software development best-practices to deliver proven and cost-effective solutions to meet our customers’ needs. We have a proven record of developing and deploying complex systems on time and within budget while meeting or exceeding performance expectations. We are well-versed in large-scale software development, including requirements analysis and definition, code design, prototyping, implementation, verification, validation and maintenance. We employ DevOps, agile methods, user-centered design, micro-services, and other community best practices enabling us to better manage the complete development process to create reliable and timely products. Riverside Research also adopted the Capability Maturity Model Integration for Development (CMMI-DEV) to ensure consistency and rigor in our processes. This reflects our commitment to quality and customer satisfaction, and we are proud to achieve a maturity level 3 rating.

Our software team has experience with application design and data structures; data analytics; machine learning; traditional and cloud (Amazon Web Services) infrastructures; SQL and non-SQL databases; information security; data visualization; various development environments (e.g., Microsoft Visual Studio); modern and legacy languages; and the effective use of commercial off-the-shelf (COTS) solutions. Our team can also develop and optimize software to run efficiently on a variety of computer platforms—from desktop workstations to the most capable high-performance supercomputers and to the cloud. This expertise includes efficiently mapping algorithms to the computer hardware and exploiting a high degree of vectorization, multi-level hybrid MPI/OpenMP parallelization, asynchronous I/O for efficient out-of-core operations, and efficient memory management. To ensure our products meet functional requirements, we employ verification and validation methods such as unit, integration, functional, system, stress, performance, usability, and finally acceptance testing. Our experts also analyze and recommend changes to user interfaces to complement human behavior (i.e. human factors) to create more effective and dependable systems.