How is Your Software Designed?

Designing software is arguably the most import part of the development process, because it provides the foundation of what your resulting application will look like. During the design, a software creator can determine the best requirements for what needs to be built. The designer will be able to determine the best programming language and environment, as well as the general functions of the resulting application.

All this looks good, with the exception that it is not true. It is rare the case when software designers have the opportunity to determine all these parameters before the software development starts. Usually, a software designer has to start making a compromise by using the existing languages, machines, and related software.

Unprofessional Design

This is a sad state of things, because designing software should be left for professionals. Despite this, many believe that designing an application can be left to anyone, even to people without any experience in software development. This is the case, for example, when a buyer takes to himself the responsibility of designing how an application will look and work.

In commercial software houses, also known as independent software vendors, there is a strong push for the development of customized solutions. What this means is that developers will talk to clients and create software that can satisfy their particular needs.

Usually the conversation goes like this: the client wants to solve a general problem, such as inventory control. In order to do this, the client will pay for development, but they will also request a number of very specific features. For example, they will usually make requests about how the graphical interface will look like, or about the sequence of steps that the application will present to its users.

Imagine if we did this with architecture projects? A client would hire an architect and request a new project for a brand new building. However, for the sake of “usability”, the client would start to make all types of requests, such as “put the door on the left side of the building”, or “make windows that are a least 4 feet high”, followed by “put the main hall close to the meeting room”.

After a few dozen of these requests are made, the poor architect has nothing to do other than manage a bad design overall, which will most certainly compromise the original vision for the building.

Software and Architecture

Sure, architecture also has imposed limitations, but we cannot expect that clients will know the best architectural solutions for a building. On the other hand, common people feel that they are entitled to make requests on software design, especially when they are the ones paying for the project. For example, managers think they know what a software needs to do, even though they will not be the ones using it in most cases.

All this shows that there is a great weakness in software development per contract, where a client can impose restrictions and particular requests on how the software should work. It makes it very hard to come up with a solution that considers the core of the problem. This is another reason why custom made software is rarely good. It comes with so many attached strings that, at the end, it defeats its own purpose.

Similar Posts:

About the Author

Carlos Oliveira holds a PhD in Systems Engineering and Optimization from University of Florida. He works as a software engineer, with more than 10 years of experience in developing high performance, commercial and scientific applications in C++, Java, and Objective-C. His most Recent Book is Practical C++ Financial Programming.

One Response to “How is Your Software Designed?”

  1. iam name editing

    By popnnazhgan on Jun 20, 2012

Post a Comment