diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..79d2811 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# compiled output +/dist +/node_modules + +# Monitoring and Logs +logs +newrelic.js +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# OS +.DS_Store + +# Tests +/coverage +/.nyc_output + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json \ No newline at end of file diff --git a/LAB_INSTRUCTIONS.md b/LAB_INSTRUCTIONS.md new file mode 100644 index 0000000..0c716ef --- /dev/null +++ b/LAB_INSTRUCTIONS.md @@ -0,0 +1,78 @@ +# Lab Instructions + +# Step 0: Create a GitHub account +1. If you don't have a GitHub account already, [create one](https://github.com/join). If you do, **record the name of your handle in your lab report** and **record a link to one repository you either follow or star**. +2. If you don't already have _git_ installed on your development machine, [do so](https://git-scm.com/downloads). +3. Install a text editor or some sort of application for local development. Lately, I'm partial to [Visual Studio Code](https://code.visualstudio.com/) and my instructions assume it's use, but you're welcome to diviate. _Each one should choose their own sword, etc. etc._ + +# Step 1: Fork this repository and create your lab report file +1. After logging in, navigate to the [root](https://github.com/trevordbunch/cis411_lab2_arch) of this repository. +2. Fork this repository to your personal GitHub account (hint: read the page). +3. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. +4. Open the terminal or command line interface on your development machine, navigate to your chosen working directory, and execute the following command: ```git clone [YOUR COPIED GITHUB CLONE REFERENCE]```. +5. Navigate to that directory ```cd cis411_lab2_arch```. +6. Create a lab report mardown file (ex. ```cp labreports/LAB_Template.md labreports/LAB_[GITHUB USERNAME].md``` ). +7. Add your lab report ```git add *``` +8. Add the file to your branch ```git commit -a -m "your commit message"```. +9. Push the change to GitHub ```git push -u origin main```. +10. As you make additional changes to the lab report, commit and push your changes. + +**Note:** you are free to work with classmates on this assignment. _Good architecture is born out of collaboration - not reclusive mad-scientist behavior._ However, if you work with colleagues: + +1. You must specifically note your collaborators by name at the top of your report. +2. You may not completely copy each others work (diagrams and descriptions, even if your solutions are identical). + +# Step 2: Analyze the Proposal +Review the proposal for the [Serve Central](assets/ServeCentral.pdf) project. Let's imagine that the project has been granted (relatively) unlimited resources if they can deliver a version 1 release in 120 days. As a result, the team decides to implement an MVC architecture for its version 1 release, delivering functionality through a [responsive web application](https://en.wikipedia.org/wiki/Responsive_web_design). + +Summarize Serve Central in 1-2 sentences for those who have not been able to review the slide deck. + +## Step 2.1 Document Use Cases +Consider the target audiences for Serve Central (volunteers and service agencies), define one use case for each of those audiences. + +Dennis, Wixom and Roth (2014) have a full chapter (4) on writing use cases. You are welcome to use an alternative format (there are plenty of alternative templates out there), but please ensure that you include the following elements: Title, Description / Steps, Primary Actor, Preconditions, & Postconditions. A sample is included in the [assets folder](assets/UseCase_Sample.md). + +## Step 2.2 Define the MVC Components +Build a [table](https://www.tablesgenerator.com/markdown_tables) of at least **four models, views, and controllers** needed to produce this project based on the business requirements you do not need to research any technology solutions for this steps. Here's a hint: +- Models typically reflect your data entities +- Views typically mirror your pages or screens +- Controllers govern system performed actions + +## Step 2.3 Diagram a Use Case in Architectural Terms +Generate and [embed](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#images) at least one diagram of the interaction between an Actor from the Use Cases, and one set of Model(s), View(s), and Controller(s) from the proposed architecture, including all the related / necessary services (ex: data storage and retrieval, web servers, container tech, etc.) + +_Note: You are free to use any diagraming tool and framework that you want as long as it clearly communicates the concept. I typically use a UML System Use Case or [UML Sequence Diagram](https://www.uml-diagrams.org/index-examples.html). If you do not have a preferred diagramming tool: [draw.io](http://draw.io) or [lucidchart](http://lucidchart.com) are good cloud-based options._ + +# Step 3: Architecture Enhancement +After an initial release and a few months of operation, Serve Central encounters a tremendous growth opportunity to extend their service and provide a volunteer recruitment and management interface to __four__ of the primary volunteer entities in the United States. As such, a reevaluation of the architecture is required, one that allows: + +1. Thirdparty services to both input and retrieve data from the Serve Central model/datastore. (For instance, receiving volunteer opportunities from United Way chapters across the country.) +2. Building organization-specific interfaces on top of the Serve Central business and data logic. (For instance, allowing the registration services of Serve Central to be embedded in the website of local churches, [ah-la Stripe embedding](https://stripe.com/payments/elements).) + +To support these objectives: +1. What architectural patterns (either of those presented in class on based on your own research) are appropriate? Justify your response, highlighting your presumed benefits / capabilties of your chosen architecture(s) **as well as as least one potential issue / adverse consequence** of your choice. +2. Using your preferred diagramming tool, generate a diagram of the new Serve Central architecture that supports these two new requirements. + +# Step 4: Scaling an Architecture +18 months into the future, Serve Central is experiencing profound growth in the use of the service with more than 100k daily, active users and nearly 1M event registrations per month. As a result, the [Gates Foundation](https://www.gatesfoundation.org/) has funded a project to build and launch a mobile application aimed at encouraging peer-to-peer volunteer opportunity promotion and organization. + +In addition to building a new mobile application interface, the grant requires that the project prepare for the following future needs: + +1. Consuming bursts of 10k+ new volunteer opportunities per hour with a latency of less than 15 seconds between submitting an opportunity and it's availability in the registration service. +2. Supporting a volunteer and event data store that will quickly exceed 50TB of data +3. Allowing authorized parties to issue queries that traverse the TB's of data stored in your datastore(s). +4. Enabling researchers to examine patterns of volunteer opportunities as a way of determining future grant investments. + +What archictural pattern(s) will you employ to support each of these needs? What will the benefits and consequences be? Why are changes needed at all? Justify your answers. + +# Step 5: Submitting a Pull Request +Once you've completed your report markdown, reviewed your markdown formatting, and have committed all your changes to your (primary) main branch, initiate a Pull Request in GitHub to submit your Lab Report. +1. Navigate to the root of your forked repository (ex. https://github.com/YOURHANDLE/cis411_lab2_arch). +2. Click the _New pull request_ button. +3. Choose the base fork _tangollama/cis411_lab0_ is the target and that your fully updated _main_ branch is the source. +4. Enter a title and description for the Pull Request (PR), **referencing at least one other student in the content via their GitHub handle**, and submit the PR. +5. Submit that URL to canvas as your lab report work. + +# Extra Credit +1. Create and embed a comprehensive diagram of your final architecture (i.e. one that meets all the requirements of this lab, including Step 4). +2. Augment/improve the assignment. Suggest meaningful changes in the assignment and highlight those changes in the extra credit portion of your lab report. \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a950a83 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Trevor Bunch and Joel Worrall + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 3cdca03..dd39512 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,45 @@ -# cis411_lab1 -Review a handful of architectural scenarios and provide a justified, convincing report of solutions. +# CIS 411 Lab 2: Architecture Selection +This is the Requirements Lab for CIS 411: Systems Analysis and Design for [Messiah University](http://messiah.edu) + +The purpose of this lab is to engage students in the considering the purpose, value, and unique differentiation of system architectural patterns. # Doing the Lab -- Here's the [link to the lab instructions](labreports/LAB_INSTRUCTIONS.md). -- Here's the [link to the lab template](labreports/LAB.md). -Go forth and follow the instructions! +## 1. Pre-Requisites +1. GitHub account +2. Git is installed on your development machine. +3. Text editor or other integrated development environment (IDE) for modifying code. + +## 2. Lab Description +> Software Architecture: A sufficiently detailed design plan / blueprint (often expressed in working code / prototype / demo) for an end-to-end software / technology solution to a business problem that contains some ultimate human benefit/impact. +Software Architects have to where a number of different hats. They must have +1. a command of the business domain, +2. a design-sense for solutions that humans can use, +3. the technical chops to understand what platforms and products to use, and +4. practical knowledge on how to deliver software. + +In this lab, you are going to review a proposed architecture for an application called **Serve Central**. They have proposed a Model-View-Controller (MVC) architecture, and you are going to do the first round of analysis on their proposal by documenting use cases and identifying the architectural components. + +Fortunately, the team has done a fantastic job, so you will be asked to reassess your designs for two different business opportunities. + +Detailed instructions are [here](LAB_INSTRUCTIONS.md), and you are expected to compile your findings into a labreport following this [template](labreports/LAB_TEMPLATE.md). + +## 3. Submissions +You are expected to create a lab report as a markdown file under the labreports directory using the **LAB_[GITHUB Handle].md** naming convention in your forked repository. After you have reviewed your work, then you should submit a `Pull Request` to this repository with your lab report and any accompanying images/files (e.g., required diagrams). Add the `Pull Request` URL into the courseroom LMS (Canvas) for grading. + +# Resources +Lab Specific Help (since this may be your first GitHub experience or writing requirements, we have some additional resources for you :) ). +- [Detailed instructions](LAB_INSTRUCTIONS.md). +- [Lab template](labreports/LAB_Template.md) +- [Serve Central Proposal](assets/ServeCentral.pdf) +- [Architecture Lecture Slides](assets/04p1_SolutionArchitectures.pdf) +- [Sample Use Case](assets/UseCase_Sample.md) + +Understanding Markdown Syntax +- [Markdown Guide](https://www.markdownguide.org/) +- [Github Flavored Markdown](https://github.github.com/gfm/) +- [Table to Markdown tool](https://tabletomarkdown.com/convert-spreadsheet-to-markdown/) +# License +This content is provided under the `MIT` [license](LICENSE). +# Credits +Special thanks to Joel Worrall, aka [tangollama](https://github.com/tangollama), for co-developing this course and writing the original version of this lab [https://github.com/tangollama/cis411_lab1](https://github.com/tangollama/cis411_lab1). \ No newline at end of file diff --git a/assets/04p1_SolutionArchitectures.pdf b/assets/04p1_SolutionArchitectures.pdf new file mode 100644 index 0000000..3843243 Binary files /dev/null and b/assets/04p1_SolutionArchitectures.pdf differ diff --git a/assets/ServeCentral.pdf b/assets/ServeCentral.pdf new file mode 100644 index 0000000..0261a9e Binary files /dev/null and b/assets/ServeCentral.pdf differ diff --git a/assets/UseCase_Sample.md b/assets/UseCase_Sample.md new file mode 100644 index 0000000..1e951fa --- /dev/null +++ b/assets/UseCase_Sample.md @@ -0,0 +1,8 @@ +| Use Case #1 | | +|---|---| +| Title | User Registration - Volunteer | +| Description | **As a potential ServeCentral user, I want to register for an account, so that I can find volunteer opportunities in my area.** | +| Steps | 1. An individual navigates to the ServeCentral webpage, and clicks `Register as Volunteer`.
2. The individual completes an initial registration form (Full Name, email address, password, password confirmation, acknowledgement of terms of service).
3. The registration form will validate the following conditions: valid email address, password matches password confirmation, and terms of service is checked.
4. After confirmation that the account is created, the user is redirected to the home page in a logged in state and a banner reminder that they need to activate their account. | +| Primary Actor | Volunteer | +| Preconditions | None | +| Postconditions | 1. The User has a provisional account associated with their email address.
2. receives email confirmation to activate their account.
| \ No newline at end of file diff --git a/labreports/3.2 Lab2.png b/labreports/3.2 Lab2.png new file mode 100644 index 0000000..5568137 Binary files /dev/null and b/labreports/3.2 Lab2.png differ diff --git a/labreports/LAB.md b/labreports/LAB.md deleted file mode 100644 index 879cda2..0000000 --- a/labreports/LAB.md +++ /dev/null @@ -1,78 +0,0 @@ -# Lab Report Template for CIS411_Lab1 -Course: Messiah College CIS 411, Fall 2018 -Instructors: [Joel Worrall](https://github.com/tangollama) & [Trevor Bunch](https://github.com/trevordbunch) -Name: YOUR NAME -GitHub: [YOUR_HANDLE](https://github.com/YOUR_HANDLE) -(if appropriate) Collaborators: [Names of colleagues you worked with on this assignment] - - -# Step 0: Reviewing Architectural Patterns -See the [lecture / discussion](https://docs.google.com/presentation/d/1nUcy63FWPFYO3OJmERJpMjEtdaFtaIBbuUkpmNRVRas/edit#slide=id.g45345bd5ea_0_136) from CIS 411. You'll need to be familiar with the content from this lecture to complete this assignment. - -Note: you are free to work with classmates on this assignment. _Good architecture is born out of collaboration - not reclusive mad-scientist behavior._ However, if you work with colleagues: - -1. You must specifically note your collaborators by name at the top of your report. -2. You may not completely copy each others work (diagrams and descriptions, even if your solutions are identical). - -# Step 1: MVC Architecture -Review the proposals for the Serve Central project. Let's imagine that the project has been granted (relatively) unlimited resources if they can deliver a version 1 release in 120 days. As a result, the team decides to implement an MVC architecture for its version 1 release, delivering functionality through a [responsive web application](https://en.wikipedia.org/wiki/Responsive_web_design). - -Based on the [this](https://docs.google.com/presentation/d/1UnU0xU0wF1l8pAB8trtLpdM0yuskx66jTFJzd64nsjU/edit#slide=id.g439b9c6866_2_53) and [this](https://docs.google.com/presentation/d/1-VZfAFoBVr6ijNepKAtRA7JoAQsV2Jlbf2l1WPDMhI0/edit) presentation: - -1) Document two use cases of your choosing - -| Use Case #1 | | -|---|---| -| Title | | -| Description / Steps | | -| Primary Actor | | -| Preconditions | | -| Postconditions | | - -| Use Case #2 | | -|---|---| -| Title | | -| Description / Steps | | -| Primary Actor | | -| Preconditions | | -| Postconditions | | - - -2) Highlight a [table](https://www.tablesgenerator.com/markdown_tables) of at least **four models, views, and controllers** needed to produce this project. - -| Model | View | Controller | -|---|---|---| -| | | | -| | | | -| | | | -| | | | - -3) Generate and [embed](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#images) at least one diagram of the interaction between an Actor from the Use Cases, and one set of Model(s), View(s), and Controller(s) from the proposed architecture, including all the related / necessary services (ex: data storage and retrieval, web servers, container tech, etc.) - -_Note: You are free to use any diagraming tool and framework that you want as long as it clearly communicates the concept. I typically use a UML System Use Case or [UML Sequence Diagram](https://www.uml-diagrams.org/index-examples.html). If you do not have a preferred diagramming tool: [draw.io](http://draw.io) or [lucidchart](http://lucidchart.com) are good cloud-based options._ - -# Step 2: Enhancing an Architecture -After an initial release and a few months of operation, Serve Central encounters a tremendous growth opportunity to extend their service and provide a volunteer recuitment and management interface to __four__ of the primary volunteer entities in the United States. As such, a reevaluation of the architecture is required, one that allows: - -1. Thirdparty services to both input and retrieve data from the Serve Central model/datastore. (For instance, receiving volunteer opportunities from United Way chapters across the country.) -2. Building organization-specific interfaces on top of the Serve Central business and data logic. (For instance, allowing the registration services of Serve Central to be embedded in the website of local churches, [ah-la Stripe embedding](https://stripe.com/payments/elements).) - -To support these objectives: -1. What architectural patterns (either of those presented in class on based on your own research) are appropriate? Justify your response, highlighting your presumed benefits / capabilties of your chosen architecture(s) **as well as as least one potential issue / adverse consequence** of your choice. -2. Using your preferred diagramming tool, generate a diagram of the new Serve Central architecture that supports these two new requirements. - -# Step 3: Scaling an Architecture -18 months into the future, Serve Central is experiencing profound growth in the use of the service with more than 100k daily, active users and nearly 1M event registrations per month. As a result, the [Gates Foundation](https://www.gatesfoundation.org/) has funded a project to build and launch a mobile application aimed at encouraging peer-to-peer volunteer opportunity promotion and organization. - -In addition to building a new mobile application interface, the grant requires that the project prepare for the following future needs: - -1. Consuming bursts of 10k+ new volunteer opportunities per hour with a latency of less than 15 seconds between submitting an opportunity and it's availability in the registration service. -2. Supporting a volunteer and event data store that will quickly exceed 50TB of data -3. Allowing authorized parties to issue queries that traverse the TB's of data stored in your datastore(s). -4. Enabling researchers to examine patterns of volunteer opportunities as a way of determining future grant investments. - -What archictural pattern(s) will you employee to support each of these needs? What will the benefits and consequences be? Why are changes needed at all? Justify your answers. - -# Extra Credit -1. Create and embed a comprehensive diagram of your final architecture (i.e. one that meets all the requirements of this lab, including Step 3). -2. Augment/improve the assignment. Suggest meaningful changes in the assignment and highlight those changes in the extra credit portion of your lab report. \ No newline at end of file diff --git a/labreports/LAB_INSTRUCTIONS.md b/labreports/LAB_INSTRUCTIONS.md deleted file mode 100644 index e948675..0000000 --- a/labreports/LAB_INSTRUCTIONS.md +++ /dev/null @@ -1,35 +0,0 @@ -# CIS 411 Lab 1: Architectural Review -The purpose of this lab is to engage students in the considering the purpose, value, and unique differentiation of system architectural patterns. - -## Submitting work -Lab reports will be submitted by generating a markdown file in the labreports directory under the naming convention: **LAB_[GITHUB HANDLE].md**, and submitting a Pull Request to this repository that include your lab report as well as any accompanying images/files (there are diagrams required in the lab content). The link to that Pull Request must be submitted to Canvas as a - -* Throughout these instructions, you'll find that **items marked in bold text** reference content you are to submit in your lab report. -* For the purposes of clear communication, you may base your lab report off of the template found in [LAB.md](LAB.md), but you're also free, welcome, and encouraged to get more creative. -* If you are unfamiliar with markdown, I recommend checking [1000 places on the Interwebs](http://lmgtfy.com/?q=learn+markdown) that will help you close that gap. - -# Step 0: Create a GitHub account++ -1. If you don't have a GitHub account already, [create one](https://github.com/join). If you do, **record the name of your handle in your lab report** and **record a link to one repository you either follow or star**. -2. If you don't already have _git_ installed on your development machine, [do so](https://git-scm.com/downloads). -3. Install a text editor or some sort of application for local development. Lately, I'm partial to [Visual Studio Code](https://code.visualstudio.com/) and my instructions assume it's use, but you're welcome to diviate. _Each one should choose their own sword, etc. etc._ -4. To run the project in Step 2, you'll need to have [node.js](https://nodejs.org/en/download/) and [npm](https://docs.npmjs.com/cli/install) installed. - -# Step 1: Fork this repository and create your lab report file -1. After logging in, navigate to the [root](https://github.com/tangollama/cis411_lab1) of this repository. -2. Fork this repository to your personal GitHub account (hint: read the page). -3. Navigate to your forked repository in your GitHub account and copy the reference to your repository in from the button. -4. Open the terminal or command line interface on your development machine, navigate to your chosen working directory, and execute the following command: ```git clone [YOUR COPIED GITHUB CLONE REFERENCE]```. -5. Navigate to that directory ```cd cis411_lab1```. -6. Create a lab report mardown file (ex. ```cp labreports/LAB.md labreports/LAB_[GITHUB USERNAME].md``` ). -7. Add your lab report ```git add *``` -8. Add the file to your branch ```git commit -a -m "your commit message"```. -9. Push the change to GitHub ```git push -u origin master```. -10. As you make additional changes to the lab report, commit and push your changes. - -# Step 2: Submitting a Pull Request -Once you've completed your report markdown, and have committed all your changes to your (primary) master branch, initiate a Pull Request in GitHub to submit your Lab Report. -1. Navigate to the root of your forked repository (ex. https://github.com/YOURHANDLE/cis411_lab1). -2. Click the _New pull request_ button. -3. Choose the base fork _tangollama/cis411_lab0_ is the target and that your fully updated _master_ branch is the source. -4. Enter a title and description for the Pull Request (PR), **referencing at least one other student in the content via their GitHub handle**, and submit the PR. -5. Submit that URL to canvas as your lab report work. \ No newline at end of file diff --git a/labreports/LAB_Template.md b/labreports/LAB_Template.md new file mode 100644 index 0000000..6123c5b --- /dev/null +++ b/labreports/LAB_Template.md @@ -0,0 +1,61 @@ +# Lab Report: Continuous Integration +___ +**Course:** CIS 411, Spring 2021 +**Instructor(s):** [Trevor Bunch](https://github.com/trevordbunch) +**Name:** Your Name +**GitHub Handle:** Your GitHub Handle +**Repository:** Your Forked Repository +**Collaborators:** +___ + +# Step 1: Confirm Lab Setup +- [ ] I have forked the repository and created my lab report +- [ ] I have reviewed the [lecture / discsussion](../assets/04p1_SolutionArchitectures.pdf) on architecture patterns. +- [ ] If I'm collaborating on this project, I have included their handles on the report and confirm that my report is informed, but not copied from my collaborators. + +# Step 2: Analyze the Proposal +Serve Central ... ENTER A BASIC SYSTEM INTRODUCTION HERE (1-2 Sentences). + +## Step 2.1 Representative Use Cases + +| Use Case #1 | | +|---|---| +| Title | | +| Description / Steps | | +| Primary Actor | | +| Preconditions | | +| Postconditions | | + +| Use Case #2 | | +|---|---| +| Title | | +| Description / Steps | | +| Primary Actor | | +| Preconditions | | +| Postconditions | | + +## Step 2.2 Define the MVC Components + +| Model | View | Controller | +|---|---|---| +| | | | +| | | | +| | | | +| | | | + +## Step 2.3 Diagram a Use Case in Architectural Terms +INSERT IMAGE HERE with a Description. + +# Step 3: Enhancing an Architecture + +## Step 3.1 Architecture Change Proposal +INSERT Architectural change proposal here, and how it meets the two new requirements. Explain both the benefits and draw backs of your proposal. + +## Step 3.2 Revised Architecture Diagram +INSERT IMAGE HERE with a Description. + +# Step 4: Scaling an Architecture +INSERT Architectural change proposal here, and how it meets the four new requirements. Explain both the benefits and draw backs of your proposal. If the changes are significant, then you need to explain why the changes are necessary versus a nice-to-have enhancement. + +# Extra Credit +If you opt to do extra credit, then include it here. \ No newline at end of file diff --git a/labreports/LAB_eliguy5474.md b/labreports/LAB_eliguy5474.md new file mode 100644 index 0000000..c31bbea --- /dev/null +++ b/labreports/LAB_eliguy5474.md @@ -0,0 +1,63 @@ +# Lab Report: Continuous Integration +___ +**Course:** CIS 411, Spring 2021 +**Instructor(s):** [Trevor Bunch](https://github.com/trevordbunch) +**Name:** Elijah Murray +**GitHub Handle:** eliguy5474 +**Repository:** https://github.com/eliguy5474?tab=repositories +**Collaborators:** NONE +___ + +# Step 1: Confirm Lab Setup +- [Y] I have forked the repository and created my lab report +- [Y] I have reviewed the [lecture / discsussion](../assets/04p1_SolutionArchitectures.pdf) on architecture patterns. +- [Y] If I'm collaborating on this project, I have included their handles on the report and confirm that my report is informed, but not copied from my collaborators. + +# Step 2: Analyze the Proposal +ServeCentral is an app for information about events in your area. It is also an app for volunteers to sign up to help out at the events that agencies have posted. + +## Step 2.1 Representative Use Cases + +| Use Case #1 | | +|---|---| +| Title | Finding a volunteer position - Volunteer | +| Description / Steps | As a new ServeCentral user, a volunteer is looking for a volunteer oppertunity in their area.
1. The user navigates on the ServeCentral webpage, and searches around on the map page.
2. The user then finds an oppertunity that pleases them.
3. The user then clicks on the event to sign up for it inputting their information.
4. The user is then directed to a thank you page with more details about the event.| +| Primary Actor | Volunteer | +| Preconditions | None | +| Postconditions | 1. The user found a volunteer oppertunity and signed up for it.
2. The user also receives more information about the event after signing up. | + +| Use Case #2 | | +|---|---| +| Title | Creating an event on ServeCentral - service agencies | +| Description / Steps | An agency is trying to uplaod an event on ServeCentral and is looking for more voulenteers.
1. The service agency would click the events tab on the app, located on the bottom right.
2. The agency will then be able to create and post an event for volunteers can sign up for. | +| Primary Actor | Service agency | +| Preconditions | None | +| Postconditions |1. The event is now published for volunteers to sign up for. | + +## Step 2.2 Define the MVC Components + +| Model | View | Controller | +|----------|---|---| +| Profile |Profile page |showProfileController | +| Event Locator Map | Events locator | showLocatorController | +| Event Information | Event information | showEventInfoController | +| Create Event | Create event | showCreateController | + +## Step 2.3 Diagram a Use Case in Architectural Terms +![UseCase](3.2%20Lab2.png) + +# Step 3: Enhancing an Architecture + +## Step 3.1 Architecture Change Proposal +The most fitting architectural pattern that helps meet these two new requirements is the load balancing architecture model. It supports the new requirements in providing way to deal with the traffic that the third-party services will bring. It will also deal with the load of data that is being brought in as well. The second requirement can be supported with the load balancing architecture for the web interface can be embedded in aother website and still ab able to send the user input and information to the ServeCenter servers'. A potiental issue / adverse consequence could be maintaining the load balancing which can be expensive to keep the databases and web servers snyced. + + + +## Step 3.2 Revised Architecture Diagram +![RevisedArchitecture](Revised_Architecture%20(1).png) + +# Step 4: Scaling an Architecture +The Load Balancing architecture will be a good way to go to support the needs of the company as it will help support the traffic of the users. There will be a good amount of databases that will be needed for the queries from the users. On top of that, we there will be the backend servers to help with the traffic with the users and the servers. The architecture will be good for the mobile app as well. The one drawback I see is the price of the infrastructure as it'll cost a lot for fast communication for the systems. + +# Extra Credit +If you opt to do extra credit, then include it here. \ No newline at end of file diff --git a/labreports/Revised_Architecture (1).png b/labreports/Revised_Architecture (1).png new file mode 100644 index 0000000..8128981 Binary files /dev/null and b/labreports/Revised_Architecture (1).png differ