Welcome


 

Products

Business to Business

Enterprise Application Integration

Application to Application

Networking

Computer Systems & Software

Consulting

News

About us

 

 


Designing Software Architecture

"In architecture, as in other arts, two considerations must be constantly kept in view; namely, the intention, and the matter used to express that intention: but the intention is founded on a conviction that the matter wrought will fully suit the purpose; he, therefore, who is not familiar with both branches of the art, has no pretension to the title of the architect. An architect should be ingenious, and apt in the acquisition of knowledge. Deficient in either of these qualities, he cannot be a perfect master. He should be a good writer, a skilful draftsman, versed in geometry and optics, expert at figures, acquainted with history, informed on the principles of natural and moral philosophy, somewhat of a musician, not ignorant of the sciences both of law and physic, nor of the motions, laws, and relations to each other, of the heavenly bodies." Vitruvius, circa 25 BC

While Vitruvius was writing about design and construction of buildings, the same can still be said of computer software architects. The designer must hold a conviction that the requirements are complete and fully meet the purpose. In order for a customer to be assured, the architect should be one who exhibits a number of characteristics as described above. An architect must be able to express the design clearly and properly in words and pictures in order that others can share in this knowledge. This includes drawings, charts and other diagrams necessary to represent the form. While erudition of geometry may not be strictly necessary in all fields that computers are applied to, a knowledge of mathematics will come in handy in almost all cases. And while Vitruvius was speaking of optics in the sense of lighting, we can equally apply the same to the design and layout of provided to the user - colour, spacing, organisation - the look and feel.

The fact that all good architects need to be able to balance the costs against need is unchanged in the last 2000 years, whether for software or otherwise. And simply put, they must be able to add not only dollars but create realistic estimations of the number and type of components involved and the time needed to provide them.

Unless acquainted with history, that is, knowledge of their own and other's experiences over time, they will not be familiar with the correct use of various algorithms, models and designs. Batch processing still has it place in this modern world of real-time, concurrent, multi-threaded processing. The trick is to know where and when.

Moral philosophy is a trait too often derided or ignored, but the need for trust and faithful dealing are as necessary today as at any other time. Software should not be about ego nor arrogance. And avarice should not be driver for the architect, looking to 'fill his coffers' and occupying his thoughts. Rather an architect of good character should be concentrating on the task at hand for this customer, with the appropriate gravity and respect.

Natural philosophy (or what we know as physics) is again not necessary in every computer application, but the traits it requires for analysing a problem, gathering empirical evidence, postulating a theory and proving it are worthy for anyone in this business. There is so much to be gained too by the study of others in these areas, and a good architect should be able to refer to these experts with ease. So to the architect should be able to understand the 'natural forces' that apply to a system when running: where are the strengths, where will the pressure come, what other forces are acting upon the system as a whole or a junction as a point.

Music assists the architect in appreciation that while science can describe all notes as a set of vibrations at certain rates, the musician understands the composition of these notes can move the very soul of the listener - something science is yet explain. This deeper appreciation of the 'righteousness' of certain combinations of components can lead to applications that 'play' better.

The understanding of law is fundamental so as to appreciate those rules on privacy, contracts, 'shrink-wrap' terms & condition, non-disclosure agreements, worker entitlements, occupational health & safety issues and escrow. For many of these cases, the good architect will want them drawn with special care to avoid future problems. To understand the 'physic' or the environment is necessary to understand not only how an application is to be used, but the systems supporting the application, both physical and logical. And finally, the laws of motion and the laws of the heavenly bodies relate to time. What events occur when, which ones are significant, how long will it take are questions that will help us predict future behaviour. The good architect knows these things and uses them to advantage.

So while for some it may seem unaccountable that a software architect should have such knowledge from such a variety of learning, at Vanguard we believe that the best harmony is achieved by having a whole circle of learning, each agreeing with the other, continually expanding.

 


Send mail to web@vcs.com.au with questions or comments about this web site.
Copyright © 2002 Vanguard Computer Services Pty Ltd
Last modified: June 18, 2008