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.
|