EXample: Incorporating Subsystems(After Replaced with subsystem interface RegisterForCoursesForm: Registration Controller: ICourse Catalog System: Schedule: Student 1:∥ create schedule 1:∥ get course offer 1.1: getCourseOfferings Student wishes to create a new schedule A list of the available 1.2: // display course offerings course offerings for this semester are displayed Ablank schedule is displayed for the Student 1.3: //display blank schedule to select offerings Select Offerings Submit Schedule
11 Example: Incorporating Subsystems (After) : RegisterForCoursesForm : RegistrationController : ICourseCatalogSystem : Schedule : Student 1: // create schedule 1.1: // get course offerings 1.1.1: getCourseOfferings 1.2: // display course offerings A list of the available course offerings for this semester are displayed Replaced with subsystem interface A blank schedule is displayed for the Student to select offerings Student wishes to create a new schedule 1.3: // display blank schedule Select Offerings Submit Schedule ref ref
EXample: Incorporating Subsystem Interfaces(VOPC Subsystem interface <<Interface>> I Course Catalog System Register ForCoursesForm (from External System Interfaces) <<control>> Registration Controller from Registration) get CourseOfferingso ∥ submit scheduled initialize l display course offerings ∥ display schedule0 /submit schedule ∥ save schedule ≤≤ entity>> ∥ save schedule0 ∥ create schedule //create schedule with offerings.1 ∥ get CourseOfferings0 urrentSehedule rom University Artifacts) select 4 primary and 2 alternate offerings semester ∥ display blank schedule0 registrant //submit l saved ≤≤ entity>> ∥ any conflicts?0 Student from University Artifacts studentID: int primary Courses ≤ <entity> ∥ addschedule0 CourseOffering ∥ getSchedule0 from University Artifacts) hasPrerequisiteso number ∥ passed0 endTime ∥ add student0 ∥newo ∥ setData0
12 Example: Incorporating Subsystem Interfaces (VOPC) ICourseCatalogSystem getCourseOfferings() initialize() (from External System Interfaces) <<Interface>> RegisterForCoursesForm // submit schedule() // display course offerings() // display schedule() // save schedule() // create schedule() // select 4 primary and 2 alternate offerings() // display blank schedule() (from Registration) <<boundary>> Student. - name - address - studentID : int // addSchedule() // getSchedule() // hasPrerequisites() // passed() (from University Artifacts) <<entity>> RegistrationController // submit schedule() // save schedule() // create schedule with offerings() // getCourseOfferings() (from Registration) <<control>> 0..1 0..1 registrant 1 1 Schedule semester // submit() // save() // any conflicts?() // new() (from University Artifacts) <<entity>> 0..* 1 0..1 0..1 CourseOffering number startTime endTime days // addStudent() // removeStudent() // new() // setData() (from University Artifacts) <<entity>> 0..* 0..4 primaryCourses 0..* 0..2 alternateCourses 0..* 1 Subsystem interface currentSchedule
Incorporating Architectural Mechanisms: Security Analysis Class to Architectural-Mechanism Map from Use-Case Analysis Analysis class Analysis Mechanism(s) Student Persistency, Security Schedule Persistency, Security CourseOffering Persistency, Legacy Interface Course Persistency, Legacy Interface RegistrationController Distribution
13 Analysis Class Analysis Mechanism(s) Student CourseOffering Course RegistrationController Persistency, Security Persistency, Legacy Interface Persistency, Legacy Interface Distribution Incorporating Architectural Mechanisms: Security Analysis Class to Architectural-Mechanism Map from Use-Case Analysis Schedule Persistency, Security
Incorporating architectural Mechanisms: Distribution Analysis Class to Architectural-Mechanism Map from Use-Case Analysis Analysis class Analysis Mechanism(s) Student Persistency, Security Schedule Persistency, Security CourseOffering Persistency, Legacy Interface Course Persistency, Legacy Interface RegistrationController Distribution
14 Analysis Class Analysis Mechanism(s) Student CourseOffering Course RegistrationController Persistency, Security Persistency, Legacy Interface Persistency, Legacy Interface Distribution Incorporating Architectural Mechanisms: Distribution Analysis Class to Architectural-Mechanism Map from Use-Case Analysis Schedule Persistency, Security
Example: Incorporating rmi Naming Interface> (from rmi) Distributed Registration Controller (from Registration) lookup Class Client getCurrent Schedule(forStudent: Student, forSemester: Semester): Schedule delete Current Scheduled submit Schedule <<bound Register ForCoursesForm getCourseOfferingso: CourseOfferingList (from Registration Passed class <<Interface> <<Entity> Remote Course Offering list Student ( from rmi from University Artifacts) ( from University Artifacts) registrant 0.n Distributed <<Control>> <<Entity> <<Interface>> Registration Controller current Schedule Class Schedule Serializable (from Registration) 0.1 0.1 from University Artifacts) UnicastRemoteobject (from server)
15 Example: Incorporating RMI currentSchedule registrant CourseOfferingList (from University Artifacts) Naming + lookup() (from rmi) RegisterForCoursesForm (from Registration) <<boundary>> Remote (from rmi) <<Interface>> RegistrationController (from Registration) <<Control>> Student (from University Artifacts) <<Entity>> UnicastRemoteObject (from server) Serializable (from io) <<Interface>> Schedule (from University Artifacts) <<Entity>> Distributed Class Client Distributed Class Passed Class IRegistrationController + getCurrentSchedule(forStudent : Student, forSemester : Semester) : Schedule + deleteCurrentSchedule() + submitSchedule() + saveSchedule() + getCourseOfferings() : CourseOfferingList (from Registration) <<Interface>> 1 1 0..1 0..1 0..1 0..n 0..1 1