Where ever possible, Maelstrom Solutions will utilize contemporary software design techniques such as object orientation to produce code which is more maintainable, extensible and re-usable. We can leverage polymorphism and inheritance to create a high-level abstraction (model) of the programming task at hand. These models are often simpler for non-technical team members to understand and easier for them to participate in the maintenance and enhancement of a system because it appeals to natural human cognition patterns.
Maelstrom Solutions, while adaptive to our customer's existing design practices, is a strong advocate of the Agile Software Development philosophy. It is our experience that the iterative nature of Agile minimizes risk and reduces time to market. That being said, often military projects require the more traditional "waterfall" approach where contract fulfillment (and payment) is linked to individual sections of a comprehensive requirements document. Rest assurred, we are capable of working within that paradigm as well.
    As contemporary software developers, we embrace software modeling languages such as UML. Here is an example as taken from a recent development effort.

Below is a simplified UML class view of a GPS interface we developed for an Industrial instrumentation client. This class communicates with the GPS hardware via an RS-232 Serial class.
However, we are adaptive to the existing documentation practices of the customer as illustrated below ...

Here is an excerpt from an OOP abstraction we developed for a test and measurement manufacturer. The client was developing a piece of telecommunications test equipment consisting of a base platform with various “flavors” of plug–in physical interfaces (noses). Depicted below is the class hierarchy for one such nose, a four port T1 module …