Our software engineering approach establishes a modular foundation for service-oriented architecture, such that developers use modular components to assemble systems of services in ways that meet logical requirements, and users compose those services into dynamic workflows or applications that meet business requirements. The following examples represent our engineering approach.
This approach adds value by producing a sum that is greater than its parts. Such a system may be easily upgraded and expanded to meet future mission infrastructure requirements—in fact, gains in any part of the system can be leveraged across the entire enterprise to solve other problems.
We develop structurally and logically modular software, building an inventory of discoverable, reusable, pre-built, pre-tested and pre-approved software modules and services. As this inventory grows, the time from “idea to solution” will shrink as we increasingly move from solution development to solution assembly. This accelerates and expands users’ ability to build dynamic applications to meet emerging requirements.
Requirements Engineering (define|iterate|mature)
As part of our iP3℠ Innovate process, our requirements methodology iterates and matures requirements through user collaboration during agile development. This approach enables us to begin development before requirements are fully codified, resulting in faster deployment. It also provides the flexibility to minimize the impact of changes.
Although we remain tool-agnostic, we prefer requirements tools that explicitly implement Agile software development concepts (e.g., themes, epics, stories and tasks), facilitate collaboration and documentation of activities (such as sprint retrospectives), maintain requirements dependencies, and provides seamless traceability and functional mapping across the entire SDLC. We have experience with all major requirements tools.
Systems Engineering (strategy|architecture|design)
iNovex engineers use system design strategies that leverage existing customer systems and infrastructure, incorporate Web-based business process improvement strategies and solutions, and leverage trade studies and technology assessments to reduce costs, optimize capabilities, improve sustainability and reduce total cost of ownership. We work with our customer's technical leadership to develop an Architecture Roadmap that defines strategic goals, enumerates the objectives of our approach and outlines the technologies, tools, processes, policies, guidelines and best practices for implementation. Where possible we leverage open standards, open source components and non-proprietary solutions. Our design focuses on the principles of Enterprise Strategic Alignment (ESA), Complex Adaptive Systems (CAS), Resilient Systems Design, Pattern-Based Strategy and relevant open standards. Our approach features full validation, tracking, and verification of overall compliance with requirements, including traceability through all design components, artifacts and documentation. We design human-computer interfaces that improve personal productivity and reduce the cost of training and sustainment.
Software Engineering and Development (design|develop|deploy|sustain)
iNovex engineers offer our customers significant experience providing software engineering support using Computer Aided Software Engineering (CASE) tools, Integrated Development Environments (IDE) and developing software with languages including:
- C, C++ and Java
- Extensible Markup Language (XML)
- Extensible Stylesheet Language Transformations (XSLT)
- Scripting languages including Visual Basic, Perl, and Python
- Spring MVC
- Servlets for enterprise Java developers
We implement test harnesses to automate the provisioning of testing environments. We establish a harness foundation in early Sprints and build it up iteratively with incremental improvements in each Sprint to build a robust test harness over time. Our daily builds and baked-in regression testing ensure compatibility as components or environments change.
Information Management (ingest|transform|store|analyze)
In addition to our core competency of applying semantics to reason over data, iNovex provides complex data analysis tools and processes with query and caching of correlations across multiple systems performing data ingestion, transformation and analytics. We offer analytics through web services and common GUI components for use in existing and new analytic tools. We develop open, standards-based complex data analysis capabilities that implement large scale semantic indexing, logic reasoning, data aggregation heuristics, ad-hoc ontology consolidation, external services and responsive user interaction. As a foundational offering, our approach supplies analytic web services for consumption by corporate systems, and common GUI components for end-user applications in existing and new tools, and as an integrated information space. Our complex data analysis capability “decouples” the data from the presentation and logic layers and provides essential characteristics of complex data analysis capabilities:
- Enrich: ingest and transform raw data
- Consume: request, retrieve and process data
- Discover: find information buried in multiple data sources
- Visualize: represent data via web-enabled client-side visualization services
- Combine: link data with other sources to create new intelligence
- Expose: share information through the cloud using Linked-Data principles