This quarter is my Senior Design Capstone class. This means 11 weeks of intensive design of an application and education in project management aspects such as source control, issue tracking, requirements elicitation, analysis, and change control.
Sound boring? Well some of it is. I recognize how valuable every aspect of the project, is, but with only 11 weeks to develop an app (in languages and platforms that we don’t know, no less), it isn’t trivial to manage every aspect of the project. When we started the class, we were given a proposal and an initial draft of the requirements. From there, we were to modify the requirements based on a Q&A session with the client, and develop the application according the the requirements. This also entailed developing sequence and use-case diagrams, as well as tracking meeting minutes, build history, and lots of other information.
An unforeseen (by the professor) part of the project was the server API. Because the requirements given by the client required the server to be designed and built by the students, we decided to standardize the interface between application and server, to allow a “plug-and-play” compatibility between one team’s application and another’s server. A representative from each time came together to develop the standardized server API which has changed a bit throughout the quarter. The design of the server and application must comply as closely as possible with this design. So far, my team has noticed a few flaws with the API design, but we’re adhering as closely to it as possible.
It’s a game. It simulates stock markets, and allows the users to view information about the markets and stocks, and to buy and sell stock using virtual money to compete against other users for a largest increase in net worth.
We have a decent looking application (screenshots below) and a functional server. The application has meaningful, but fake, data, such as stocks like Google, Apple, and Amazon, with prices that started from their actual prices. The fluctuations in prices have happened according to some price alteration functions on our server. Prices change every 5 minutes. Users can view, buy, and sell stock. Quantity of bought and sold stock alters the price accordingly.
Additionally, when a user first uses the app, a new profile can be created, and the user can login. Login persists on the device until the user logs out. There’s a neat scrolling area with collapsible exchanges containing stocks, and a swipe-able area that rotates between a trend chart, a details view, and a buy/sell hub.
Another product of our work so far is an administrator page, where an admin can login, create/edit/delete stocks/exchanges and change some other settings as well. This was done using jQuery, mostly.
It’s been incredibly fun to program, and I’ve made a few good friends. Many thanks to my teammates Zack, Darren, and Brian. We’re developing the app under the MIT license, which means that we have full freedom to continue with our work, even after we hand over source code to the client at the end of the quarter. We (at least a few of us) intend to continue working and hopefully putting the app in the Marketplace.
There are a lot of optimizations and refactoring that we want to do, when we have more time (Again, the 11 week limit is severely limiting us. Next year, after the University transitions to semesters, this class will last an entire year). We want to multithread some parts of the application for increased speed, optimize and minimize the server calls, optimize sql queries, divide up php and mysql (there’s a lot of raw sql in the php – oh no!), and rewrite a lot of “hacky” code.
Well enough is enough. If you’ve made it this far, I applaud you, and thank you, for reading through. Here are some screenshots.