Software Architecture

ZeaLake offers advice and assistance in software architecture.  We have many years of experience in distributed applications, web applications and real time control software, on platforms such as C++, Java, .NET, web and embedded.  The actual service will depend on the client’s needs and could range from a few hours of discussion to a long and deep engagement in fleshing out the optimal architecture for your new product or system.

Software architecture is made up partly by the central structure of the software, partly by the technology platform that makes up the foundation of the solution.  The choice of architecture impacts the long-term “shelf life” of a software solution.  It is important to decide a rational and robust architecture in the beginning of a development project, but also to adjust the architecture to new needs and changes in the software’s environment during its lifetime.

When deciding a new software architecture or a change to an existing one, a number of aspects must be considered:

Performance:  A software system must give snappy response in order to create a pleasant user experience. Usage scenarios and load patterns can provide the basis for creating an architecture that enables critical parts of the software to run fast and scale to the needed load.

Degrees of freedom:  When constructing a building, one must be able to easily replace the furniture, while changing the draining system does not have to be quite as easy. Similarly in a software system, some parts must be easy to change during the lifetime of the software, while other parts can be allowed to be more integrated. An analysis of these “degrees of freedom” will give important input to deciding the software architecture.

Maintenance:  The longer a software system can be kept operating, the longer it provides value to the organization. Architecture is a decisive aspect for the ease of changing and adding new features and integrations needed during the software’s lifetime.

Durability:  On a similar vein, the architecture should be based on a technology platform assessed to be functioning in many years to come.

Cost/benefit:  Finally, a software architecture should not be more complex than absolutely necessary. A simple architecture that meets your objectives will make the software less expensive to develop and maintain.