Beside requirements engineering software architecture is the second important foundation of a software system. The architecture heavily relies on the requirements and has to define an abstract view with a clear separation of concerns. It outlines the distribution of tasks to components and declares the interfaces betwen them. The design of the communication flow between those components bases on the use cases, so that there's a direct link from the requirements to the architecture artefacts.
Very often, especially in small starting projects, the software architecture is disregarded. The usage of JEE or .NET as a technological platform is viewed as enough. But it isn't. It's just a rough layout, a blueprint, which mostly defines the vertical layers of an application system. But that's not enough for the functional separation. And also very often systems aren't realizable independently and from the ground up. They have to fit into existing environments, managing interfaces to existing systems. Starting here without taking the time to look ahead will lead to quick results, but also to badly increasing problems when the complexity grows or the system has to be evolved and maintained over the years.
So there's allways a strong need for a software architecture. Clear goals have to be defined and priorized as well as also a clear proceeding is needed. A matrix helps to sort all requirements into functional (vertical) and technological (horizontal) aspects. The result are clear layers (persistency, model, business logic, orchestration, and user interface) and business domains (e.g. financial accounting, supply chain management, customer relationship management, controlling, or human resources). The matrix gives a first impression of possible components and libraries. Now it's possible to define groupings, dependencies, interfaces, and the communication between the components.
It depends on the project how deep this has to be broken down. But what is also needed are the major patterns for the realization. Those are SOA and EAI patterns, software architecture patterns, and the most important ones for the medium and small components. This helps to get a common language, a common understanding of the whole system. Well documented in a small handout (max. 50 to 100 pages) with easy to understand deployment, component, and class diagrams - maybe some activity or sequence diagrams for dynamic aspects - will help all team members right from the start.
Very often, especially in small starting projects, the software architecture is disregarded. The usage of JEE or .NET as a technological platform is viewed as enough. But it isn't. It's just a rough layout, a blueprint, which mostly defines the vertical layers of an application system. But that's not enough for the functional separation. And also very often systems aren't realizable independently and from the ground up. They have to fit into existing environments, managing interfaces to existing systems. Starting here without taking the time to look ahead will lead to quick results, but also to badly increasing problems when the complexity grows or the system has to be evolved and maintained over the years.
So there's allways a strong need for a software architecture. Clear goals have to be defined and priorized as well as also a clear proceeding is needed. A matrix helps to sort all requirements into functional (vertical) and technological (horizontal) aspects. The result are clear layers (persistency, model, business logic, orchestration, and user interface) and business domains (e.g. financial accounting, supply chain management, customer relationship management, controlling, or human resources). The matrix gives a first impression of possible components and libraries. Now it's possible to define groupings, dependencies, interfaces, and the communication between the components.
It depends on the project how deep this has to be broken down. But what is also needed are the major patterns for the realization. Those are SOA and EAI patterns, software architecture patterns, and the most important ones for the medium and small components. This helps to get a common language, a common understanding of the whole system. Well documented in a small handout (max. 50 to 100 pages) with easy to understand deployment, component, and class diagrams - maybe some activity or sequence diagrams for dynamic aspects - will help all team members right from the start.