Software Architecture

    Sadhana Ghalsasi
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.
Software Elements
•   Programs
•   Classes
•   Packages
•   Modules
•   Programs
•   Functions
•   Methods
•   Components
•   Servers
•   Files
•   Libraries
•   Databases
•   Products
•   Workflows
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
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
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
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
What makes a “good architecture”

Software Architecture Intro

  • 1.
    Software Architecture Sadhana Ghalsasi
  • 2.
    Definition Software architecture isa 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.
  • 3.
    Software Elements • Programs • Classes • Packages • Modules • Programs • Functions • Methods • Components • Servers • Files • Libraries • Databases • Products • Workflows
  • 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 SoftwareStructure 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 Softwarestructure 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 andABC • 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
  • 9.
    What makes a“good architecture”