The main objetive of our application is to manage a library.
Users will be able to pick a book, book a room, buy and eat in the cafeteria and see his/her profile information.
Administrators will be able to add new books, fine users and manage cafeteria supplies and menus.
Working Process (Youtrack):
We worked using SCRUM, an agile methodology where we defined user stories (needs) and we gave them a priority and an estimation time. We divided the project in three different sprints as shown below.
- Setup Maven Environment.
- Server Side Architecture.
- Basic GUI.
- DB Connection.
- Book Management.
- Picking up a book.
- Creating an account.
- Show book availability.
We started with some configuration problems in diffent OS but we managed to figure it out. We divided the work in a balanced way but we were in a hurry at the final days. We underestimated the time it would cost us starting with the project.
- Server Refination and depuration.
- Updating DB.
- Unit tests.
- Performance tests.
- Book a room.
- Reserve a book.
- Study room assignment.
- Deleting account.
- Show room availability.
This time we were working since the first days but, we left all the task in "to verify" and the burndown does not update until we moved the task to finish. Most of these tasks refer to tests so they were moved to finish when all the implementation was done. We learned that smaller tasks would give us a better approach of the work. We had some issues because real time was not updating for some of us.
- Internationalization.
- JavaDocs Documentation.
- Doxygen Implementation.
- GitHub Pages.
- GitHub Actions.
- New Server Unit Tests.
- New DB Unit Tests.
- Managing cafeteria supplies.
- Managing study rooms.
- Online order management.
- Checking online menu.
- Keeping DB inventory updated.
- Access to user history.
This time, as learned from previous sprints, we divided the work in more tasks so we could end them faster. We worked together to create new functionalities in the server and improved some GUIs. We also created tests for these new functionalities. Finally we documentated all the code and created this beautiful Readme.
- Project developed using Java Maven.
- MySQL as the DB.
- JUnit, Contiperf and VisualVM for tests.
- Javadocs, Doxygen and GitHub Pages for documentation.
- GitHub and Youtrack as VCS (Version Control Systems).
First, compile the whole code:
- mvn compile
Then, in three separate cmd windows, run:
- mvn jetty:run
- mvn exec:java -Pmanager
- mvn exec:java -Pclient
A glance at some of our windows.
Login Window: | Register Window: |
---|---|
Overall we worked great as a team, we found the strengths of each one and helped each other when needed. A project like this has given us a view of how software development works in real life. We used a lot of interesting developing tools that will be very useful in our career.