Tuesday, June 22, 2010

Software Architecture

  1. Organization of the system
  2. With increasing size and complexity what is to be specified ?
    1. gross organization
    2. global control structure
    3. protocols for communication
    4. synchronization, and data access
    5. functionality of each design element
    6. physical distribution
    7. composition of each design element
    8. scaling and performance consideration
    9. design alternatives
  3. Abstraction, the techniques how they grow
    1. high level programming languages abstract in the form of
      1. evaluation of arithmetic expression in conditional evaluation for deciding looping and procedure call
      2. modules which have related procedures
      3. data structures
      4. separation of module specification from its implementation
    2. abstract data types, to find what level of detail is sufficient for the task at hand, for this we need to segregate
      1. representation and operators
      2. specifications (what is expected from the software system)
      3. user defined types (classes ?)
      4. modules containing the user defined types
      5. the invariants of data structure (asserting that the structure remain consistent)
      6. protection of data structure from modification by other than the valid methods, of valid ADT
      7. access to the data, what is visible to all, what is selectively visible, and what is not
    3. recognizing the organization of a system, and giving a name to it, like
      1. client server model
      2. distributed object oriented approach
      3. pipeline
      4. ISO OSI Reference model (layered network)
      5. NIST/ECMA Reference model (layered communication substrates)
      6. X window system (event triggering and call-back)
Reference : www.cs.cmu.edu

No comments: