C C T B H P N

Lecture #23 - System Structure

Client-Server, Peer-To-Peer, Federations

Web Resourses:

Content:

This lecture is concerned with software structure. We will spend some of the lecture discussing remote execution. We will then discuss several well-known structural patterns and why you need to know about them, as time permits.
  1. The Syllabus describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  2. Projects:

    Project #4, Project4HelpF2018
    The links below provide helper code for Project #4 Project #3 Grades
  3. Code Analyzer Structure

  4. Repository - prelude to Software Structure

    Repository Concept:
    • Control current baseline
    • manage package dependencies where the root of a dependency tree may be:
      • Any component, e.g., System, Program, or Module
      • A "pseudo component", e.g., a parent of all orphans, or all leaves in dependency graph
      • A parent of a namespace.
      • May also be the parent of a category, e.g., reusable, GUI, library, ...
    • browse the current baseline
      • queries - show packages owned by some Root, either as a group, or as a sequence that can be browsed, one-at-time.
        • show collections of all Namespaces or all Systems
        • show all packages in Namespace or System or Program or Module
        • show subsets of the above in a time interval, from a specified set of authors, by date of last test, etc.
    • disclose state of current baseline
      • Code not passing all tests
      • Code not meeting code standards
      • Open check-ins
      • most volatile modules and packages
        • most volatile testing
        • most volatile check-in of new versions
    Critical Issues:
    • Concurrent file access
    • Ease of use
    • Flexibility
    Pluggable Policies:
    Concept: Make it easy to configure Repository to support Team's way of doing business.
    • Ownership
    • versioning
    • Check-in and Check-out
    Agents
    Concept: Make using repository significantly easier for human users.
    • Extracter - support dependency based extraction, only need to cite root file.
    • Viewer - support browsing repository, showing descriptions from metadata.
    • Dependency Analysis - build metadata from source code using type-based analysis.
    • Check-in checker - report open check-ins.
    • Test results notifier - report failed tests to all dependers.
  5. Software Structure

    Software Structure Research, pptx Software System Structure, pptx .Net Software Structure, docx Call Performance, docx Components, Loosely-coupled systems, Partitions, Delegation
    Mediator based Dispatcher:
    Mediator-based Communicators, Class Diagram, Object Diagram
    Active Objects
    This flexible design for server functionality is more than needed for Project #4. The world's most extensible software system, pptx Wikipedia - Dependency Injection
    Wikipedia - MVC
    MVC to Unit Test
    Wikipedia - N-Tier
    Wikipedia - Stateless Server
    Wikipedia - HTML Form
    Wikipedia - Asp.Net
    Wikipedia - Ajax