For Product Developers
Where are you?
We traditionally first perform an assessment to understand your reliability goals and challenges, and to recommend what phase to start with: Availability, Functionality, Usability, and Sustainability. The assessment is typically a fixed bid research and consulting project that varies in length depending on the complexity of your situation. Our final report will contain specific, actionable advice that you can pursue on your own or with us.
How to work with us
Below are a number of examples of the type of work we do. If you don't see something that fits your needs,
Contact us to talk with one of our engineering staff. That's right -
we don't have a sales department. Instead, we'll connect you with the right person on our staff that has experience in your area to create an offering that fits your scenario.
Availability
Software Diagnostics and Metrics
Often the first step in improving availability is to build into your software the necessary self-diagnostic and application metric capabilities. We have worked with a range of systems for storing and managing this information, and can suggest highly time efficient ways to begin to instrument your software and incorporate instrumentation into your ongoing software development process. This will pay off in every phase of the lifecycle of your software, making it the best investment in reliability you can make.
Architecture Review
Our software design experts will look at your intended and actual software architecture and assess how it affects your overall software reliability. We will work with your team to identify short term high priority changes and longer term options. In the end, your development team will have a new perspective on how to evaluate proposed architecture elements from a reliability standpoint and how to make better trade off decisions between short and long term goals.
Functionality
Having a system that is always available to the customer is an essential first step, however it isn't the end of the game. For users to consider your system reliable, individual features need to include everything necessary to accomplish the user's goal. Additionally, it needs to have
some features for your own internal staff for maintenance and reliable operation.
System Maintenance and Operation Review
We look at how your system works in production and identify missing or under-developed capabilities that can significantly assist the product support staff in operating your system. This may range from targetted documentation or installation improvements to dedicated diagnostic tools and database design changes. Our experience in designing both web and client systems that need to be supported and upgraded over time has lead to a set of best practices we will help you embed in your system.
System Usage Metrics
There's no substitute for knowing what users are doing with your system, how often they do it, and how successful they are. We work with you to create useful metrics for usage, ensure those metrics can be automatically captured and analyized to guide future development. This often leads to revelations about what features aren't useful or aren't being used because they are too complicated or have usability issues. Get Facts, not Anecdotes
Functional Correctness Review
Your users know of issues in your application that are affecting them every day, but they haven't reported them. You may even lose customers and new sales to these problems, without ever knowing. We work with you to ensure that your system is reliable even in boundary cases, and predictable when it experiences errors. We can recommend graceful ways to handle functional problems to minimize the effect on users and improve their satisfaction even when the system doesn't work.
Usability
The difference between good products and breakout products is often the small details of usability that users aren't even directly aware of. When done right, the system does exactly what they expect it to each and every time. Consider that most rejected defects have their roots in usability problems: The system didn't do what the user expected, or they couldn't figure out how to make it do what they wanted, so they reported a defect. Even when the system did exactly what it was supposed to do, if that didn't align with the user's expectations then our goal of a reliable system wasn't met.
Sustainability
Sustainability is about doing the things that perserve the level of trustworthyness of your code over time in the face of changes.
Configuration Management Evolution
To preserve and improve the reliability of your software over time, we focus on how you control exactly what goes into your software and how it's delivered to your customers. We frequently work with clients to automate these processes to create low cost configuration management strategies that tend to identify software construction faults earlier in the development process. This can include automated build processes, unit testing and system testing processes, and deployment & certification processes.
|