Question: assignment includes architecture, design, as well as coding and implementation. Given the following specification, design the overall architecture and APIs necessary to support this application.
assignment includes architecture, design, as well as coding and implementation.
Given the following specification, design the overall architecture and APIs necessary to support this application. You will be responsible for submitting architectural models, API specifications (e.g. interface definitions, swagger, or any other reasonable format such that a developer would be able to figure out how to code against your product's API). You will also need to implement the API methods and the functionality of the system.
Your architecture should include:
- a high level overview of the full system (with at least one diagram)
- a write-up describing any details that can't be presented in a diagram
- a discussion of how any components and connectors would be built and deployed
- a discussion of any communication protocols needed
- sample code for calling your application (pick a language and show you have thought through the API usage)
- justification for your architecture
- API specification from the client (developer) perspective
- any internal details necessary to explain how you have implemented the service itself (ie. design patterns)
- Implementation of your API methods and the code to implement the functionality.
Problem Specification
The application that we're creating is a simple image processor. The end user provides an image in some format (your API will need to take this into account somehow) and allows the user to perform combinations of the following operations:
- Flip horizontal and vertical
- Rotate +/- n degrees
- Convert to grayscale
- Resize
- Generate a thumbnail
- Rotate left
- Rotate right
The user can specify which operation or operations to perform on the image. Upon completion of the transform the user should have access to the resulting image file. Operations can be applied in an order specified by the caller.
The application should be designed to be cloud-hosted. Transformation pipelines should run quickly and the caller should not have to wait an unreasonable time. You should consider storage and security issues if you keep a copy of the source or resulting image "on the service". Your application does not need to be hosted in the cloud, just designed in such a way that it could be.
Assignment Notes
The above specification is left intentionally ambiguous and open-ended. I have done this to give you latitude in your approach, but also to see which questions you may need to ask of me before you can proceed. I will answer questions about whatthe software does; I will clarify non-functional requirements as questions are raised; and I will do one preliminary feedback review on your design (if you want). Q&A about requirements must be done on a thread in Teams Discussion channel, so everyone gets the same clarifications and information.
What You Must Deliver
- There will be one intermediate checkpoint, where you must submit some of the documents, or perhaps all of the documents with some in a draft state. See the assignment for details and due date.
- There is a final due date, where all documents, code, data, and any other materials must be submitted in their final state. See the assignment for details and due date.
- Optionally, you may present your project to the class and demonstrate your system. This earns extra credit. See below.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
