2. Definition
Software architecture is a structure of
structures, consisting of software elements,
their externally observable characteristics and
relationships among them
It is a result of technical, business and social
influences.
4. Externally observable characteristics
Role Expectations
Management (Dev. Org.) Low cost, keeping people employed
Marketing stakeholder Neat features, short time to market, low
cost, parity with other competing
products
End User Behavior, performance, security,
scalability, reusability
Maintenance organization Modifiability
Customer stakeholder Low cost, timely delivery, not changed
very often
5. Relationships among them
Software Structure Relations Useful for
Decomposition Is a sub module of Resource allocation,
project structuring and
planning, configuration
control
Uses Requires the correct Engineering extensions,
presence of subsets
Layered Uses the services of, Incremental development,
provides abstraction to implementing systems on
top of virtual machine
portability
Class An instance of, shares Producing rapid almost
access methods of alike implementations from
a template
Client-server Communicates with , Distributed operation,
depends on separation of concerns,
performance analysis, load
6. Relationships among them
Software structure Relations Useful for
Process Runs concurrently with, Scheduling analysis,
excludes, precedes etc performance analysis
Concurrency Runs on same logical Identifying locations where
thread threads can fork, join, be
created or be joined
Shared data Produces data, consumes Performance, data
data integrity, modifiability
Deployment Allocated to , migrates to Performance, availability,
security analysis
Implementation Stored in Configuration control,
integration, test activities
Work assignment Assigned to Project management, best
use of expertise,
management of commanily
7. Importance of SA
• Communication among stakeholder
• Early design decisions
• Transferable abstraction of a system
quality attributes, functional reqts
8. 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