Requirements
Software Architecs must identify and know their scope and requirements, as they are responsible for the outcome. An approach for identifying them is checking quality characteristics, as mentioned in ISO 25010, within given requirement specifications. It is crucial to understand and name influencing factors to those requirements and identify and communicate solutions. Saying “no” or failure is not an option. Keep in mind that certain criteria negatively or positively influence each other. As software architecture starts early, e.g. as part of project initialization phase, any shoot from the hips will have hughe impact. Software architecture also remains longer than projects and must not correlate with the same aims, which makes telling fortunes via heuristic approaches a common discipline.
Influencing Factors
There are many factors, which must be understood and considered for software architecture, as organizations and their software systems normaly correlate:
“… organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations.”
Melvin Conway, 1968
The following general factors can be differentiated:
Organizational
Organization and Structure
- Organizational structure of the client
- Organizational structure of the project team
- Stakeholder
- Cooperations
- Usage of the produced software (internal or for sale)
Technical
- Hardwareinfrastructure
- SoftwareInfrastructure
- Programming Standards (e.g. Patterns)
- Operations
- Data structures
- Reference Architectures (e.g. System Types)
- Libraries, Frameworks and Components
Product Related
- Functional Requirements
Never forget to make implicite requirements explicite
Non-Functional Requirements (cfg. ISO 25010)
Ressources
- Timeline and deadlines
- Functional scope
- Release plan
- Budget
- Team members and their skills
- Methodology for analysis and blueprints
- Availability of runtime environments
Organizational Standards
- Application Programming Interface (API)
- Graphical User Interface (GUI)
- Technical Communication
- Programming Languages
Legal
- Liability
- Data privacy (e.g. GDPR in 05/2018)
- Obligation to produce proof
- International legal aspects