Ah.... software architecture. Very good question. There really isn't a clear definition, although there is a informal standard (yeah, these 2 words don't go well together). Software architecture can be defined as a design and blueprint of how the software components will work with each other, which objects are part of the software, how objects will interact with each other, and so on. There can be a high-level architecture which may include: Tier layers such as Database, application and UI. And there can be a low-level architecture which may include: Objects (classes) which are part of the software solution. Most good software architects design the entity relationships and classes after designing a good and clear functional design. A process in which I follow: 1) Design clear functional specifications which include detailed use cases of how each requirement will be implemented. (actually this is more of a job for a good technical analyst) 2) Design the component, state, process and class diagrams as detailed as possible. Basically the end result should be a clear blueprint of how the software should be developed. Therefore a developer would just do the "implementation" and the design to have already been done by the software architect, hence the developer becomes a "robot" following the instructions of the architect. I hope above helps.
Arsen