DefinitionSoftware architecture is a structure of structures, consisting of software elements, their externally observable characteristics and relationships among themIt is a result of technical, business and social influences.
Externally observable characteristicsRole ExpectationsManagement (Dev. Org.) Low cost, keeping people employedMarketing stakeholder Neat features, short time to market, low cost, parity with other competing productsEnd User Behavior, performance, security, scalability, reusabilityMaintenance organization ModifiabilityCustomer stakeholder Low cost, timely delivery, not changed very often
Relationships among themSoftware Structure Relations Useful forDecomposition Is a sub module of Resource allocation, project structuring and planning, configuration controlUses Requires the correct Engineering extensions, presence of subsetsLayered Uses the services of, Incremental development, provides abstraction to implementing systems on top of virtual machine portabilityClass An instance of, shares Producing rapid almost access methods of alike implementations from a templateClient-server Communicates with , Distributed operation, depends on separation of concerns, performance analysis, load
Relationships among themSoftware structure Relations Useful forProcess Runs concurrently with, Scheduling analysis, excludes, precedes etc performance analysisConcurrency Runs on same logical Identifying locations where thread threads can fork, join, be created or be joinedShared data Produces data, consumes Performance, data data integrity, modifiabilityDeployment Allocated to , migrates to Performance, availability, security analysisImplementation Stored in Configuration control, integration, test activitiesWork assignment Assigned to Project management, best use of expertise, management of commanily
Importance of SA• Communication among stakeholder• Early design decisions• Transferable abstraction of a system quality attributes, functional reqts
Software processes and ABC• Creating the business case for the software• Understanding the requirements• Creating or selecting the architecture• Documenting or communicating the architecture• Analyzing or evaluating the architecture• Implementing the system based on architecture• Ensuring the implementation conforms to the architecture