Skip to content

Architectural Design

Madeline Kahn edited this page Mar 26, 2024 · 4 revisions

Architecture Drivers

Note: Constraints and requirements herein were applicable to the CSSE374 project.

Design Purpose

Project cycle

We first are doing architecture design as part of the process of creating a initial prototype.

Greenfield / brownfield system

It is a greenfield system, as there is no code in the system yet. (There is a library to be used, but that is not considered part of the system.)

Novel domain / mature domain

It is a mature domain, since there are many linters that already exist which we may reference as examples when deciding how to design our system.

Quality Attributes

Listed with highest priority first:

  • Usability: Feedback – Errors and warnings generated by the linter are displayed to the user immediately upon conclusion of the linting process.
  • Performance: Latency – Errors and warnings are displayed less than 10 seconds after starting the program.
  • Usability: Learnability – A new user can configure and use the software within 15 minutes.

Primary Functionality

The user starts the program by passing a path to a directory containing Java .class files, and a path to a settings JSON file. The linter is executed, and errors and warnings found from the Java classes are printed to the console.

Architectural Concerns

  1. General concerns
    • Establishing the overall system structure
    • Organization of the base
  2. Specific concerns
    • Ensuring extensibility (for new checks)
    • Understanding of the ASM API
    • Adaptation of ASM components
    • Exception management
  3. Internal requirements
    • Per team member:
      • One cursory style check
      • One principle check
      • One pattern check

Constraints

  • Technical constraints
    • Written in Java 11
    • Using ASM
  • Non-technical constraints
    • Due 2024-02-19
    • Time management by the 3 developers

Reference Architecture

Rich Client Application