COMP 4350: Software Engineering 2
CakeBytes is a small business specializing in baking cupcakes whose highest priority is a positive ordering experience and full customer satisfaction. Designed specifically for the company, CakeBytes Creator is a business solution app that allows the customers to manage their orders and personalize cupcakes in a fun and interactive way. Unlike most of the cupcake-ordering systems, CakeBytes Creator is simple and easy-to-use with its drag-and-drop interface that provides a real-time preview of their own cupcake designs.
We want to develop an app that would give customers the freedom to express their creativity by allowing them to create and design their own cupcakes. This app is different from other cupcake order web apps as the interface provides customers with a preview of what their cupcake would look like while interacting with the app. We believe that being able to visualize the final products, not only benefits the customer, but the cupcake business as well. By using CakeBytes Creator, customers can skip the inconvenience of booking an appointment, going to the shop, and explaining their cupcake design to the baker. This reduces the possibilities of miscommunication between the customer and the business, since both the customer and the designer have access to the design created by the customer.
We will consider this project a success if:
- Customer order time is reduced by at least 20%
- Amount of orders received by the business is increased by at least 15% during the first month of launching
- Customer satisfaction is increased by at least 15%
- Sales is increased by at least 15% during the first month of launching
Web Service Platform: Amazon Web Service (AWS)
We picked Amazon Web Service to host our API because it is a secure cloud service platform that can provide our group with resizable compute capacity and a wide range of supports.
React JS is a is a front-end library that is fast, scalable, and simple. Our group found React to be straightforward and easy to learn with a short learning curve in contrast to other libraries, such as Angular.
Mobile User Interface Framework: Flutter (Dart)
We chose Flutter for our mobile UI framework because it enables us to build a native app on Android as well as iOS from only one codebase. We considered React Native, but we found Flutter’s customizable widgets to be beautiful, durable, and easy to use.
Application Framework: Spring (Java)
We picked the Spring Framework because it supports every type of application development. We can develop our complete application utilizing Spring. On top of that, the Spring IoC container is more lightweight in comparison to EJB containers. In addition, everyone in our group has a certain level of experience using Java.
MongoDB is an open-source and document-oriented NoSQL database with the simple query language. Originally, we considered MySQL, but since we may be dealing with large unstructured data, MongoDB will be more suitable.
IDE: Sublime Text 3
We chose Sublime Text due to its fast application speed and excellent stability. Most importantly, Sublime is particularly beginner-friendly. Initially, we considered Atom but ruled out the possibility. Atom is somewhat new opposed to Sublime Text and it has restricted Git plugin.
s a user, I want to be able to:
|Customize/design my own cupcake||High|
|Add my custom cupcake to my order||High|
|Pay for my order||High|
|View my order||High|
|Edit/update my order||High|
|Have a record of my past orders||High|
|Pick from pre-customized cupcakes to order||Medium|
|Save my cupcake designs||Medium|
|Reorder any of my saved designs||Medium|
Backend: Java + Spring
Database: NoSQL (MongoDB)
Mobile Frontend: Flutter (Dart)
The project in this course will be the development of a large-scale software system by a team of students. You will work in a group of approximately eight developers throughout the term to build the system. The software you create will include a server accessed by both web and native mobile clients. It must incorporate the basic elements of persistent storage, user interface, and logic. You will have the opportunity to choose some of the technologies you will use, choices that you will be expected to justify. Those choices will have long-term consequences.