 |
Areas of Expertise
We provide the following services:
Desktop Application Software Development
We have thirteen years of experience developing applications for desktop operating
environments. These applications include:
- Stand-alone measurement and control systems
- Client/Server applications
- Application servers
- NT Services
We have been studying and using object oriented development techniques and various software development methodologies for the better part of a decade. Developing cost-effective solutions requires understanding the customer's needs, applying applicable software/hardware technology, and developing a solution that is effective and easy to use. The difficulty comes in the details. We've learned a great deal from our mistakes. Because of a disciplined development process we've been developing cost-effective solutions that meet or exceed our customer's expectations. The following paragraphs give a brief outline of how we think about software development.
We start by trying to understand what the customer needs. To us, this is perhaps the most challenging stage in the software development process. As software developers, we tend to be too detailed at this stage and push the design too far, too early. To combat this tendency, we try to NOT to define things that constrain the solution before it is time. The product of this stage must be concise, easy to understand, easily communicated, sufficiently detailed (sufficient but not excessive) and implementation-independent. Rapid prototyping can be used to help understand the problem but should be used in a 'throw-away' sense. In other words, if a prototype is developed with the intent of re-use, then you are constraining the design too early and the design will not be implementation-independent. Here are some recourses we like:
From here we can develop an initial high-level design, target areas of significant risk and prototype solutions for these areas. Simply put, reduce the unknown. High-risk areas may exist due to developer inexperience or complexity, for instance. If we learn something here that affects the previous stage, we go back, revise and determine why the detail was missed. There may be something else to be learned.
Now we get in to the application design that will translate to code. The key here is to separate and decouple. We like Bruce Eckel's vector of change principle, "separate the things that change from the things that stay the same". We use the Model View Controller (MVC) design paradigm as a guide to our design. We see this implemented in Java Swing and Struts. We use UML to present the model.
Borland C++ Builder, Delphi and Kylix development environments provide
some of the best ways to develop desktop and web applications for
Windows and Linux. We are proud to use:
|
|
 |