HeaderSIS.jpg

JCEman:Wiki Final Page

From IS480
Jump to navigation Jump to search


Project Progress Summary

Project Highlights

  • Entity-Attribute Value Database Design

Using the conventional database design, it was not easy for an administrator to add new attribute to existing bank products, as they have to create new column in the table whenever there is an additional attribute to the products. Citing an example would be, when an administrator wants to add a promotion attribute to the Savings product, a new column needs to be created. Over a period, the table will be filled with many null values in the existing data. Furthermore, these attributes are never fixed hence it is hard to define all the attributes pertinent to the bank product.

Our group chose to adopt a different database design that is Entity-to-Attribute. This design allows adding of new attribute without having to create new columns in the existing table. With the new design, administrator only needs to create a new row of attribute in the Bank Variable table (i.e. promotion attribute in the Bank Variable table) and add the data of the new variable in the product variable table.

Project Challenges

  • Data source

This is one of the biggest challenges of the project. Given the complexity and confidentiality of banking product information, our team could hardly collect sufficient data for the site to make it really helpful to users. We tried different methods from collecting data manually from the bank websites or from their leaflets, brochures to writing C# code to crawl a large amount of data from different websites. We tried our best to provide the our website with as much comprehensive and accurate data as we could before handing it over to our clients.

  • Fast Changing Nature of Banking Products

Banking product information keeps changing over time. Some products, namely Structured Deposits, even change every two weeks. Our task became challenging when we needed to come up with a solution that could accommodate the flexibility of such information. After spending considerable amount of time and effort, we decided to ease this pain point with a flexible database structure whereby we used the entity-attribute value model (Alp: pls put a link of CC's part about the DB here). With this design, the admin of the website can actually use admin functions to add in or modify banking products without having to directly change the database structure or information kept in the database when there are any changes.

  • User Interface Design

Drupal is a strong content management framework. However, UI design for it is not an easy task. A Drupal template is often quite blog-like; it consists of many panels and boxes which can hardly give users a nice look-and-feel. As a result, our team had to spend more time than expected to design website interface to better users' experience.

  • Functions Creep

Our clients and the team wanted this project to be unique to the Singapore market. Lots of ideas were brainstormed throughout the course of the project and very often, new idea of functions were developed. The client and our team had to come to a consensus about which functions were our priorities at certain time to ensure that we had enough time to complete the core functions before developing the add-ons. We did try hard to manage our schedule and project scope at the same time to fit in most of the requests to satisfy our clients.

Project Achievements

  • Technical knowledge

During the course of the project, our team had learnt about Drupal. We explored Drupal in order to fully utilized its built-in functions and additional functions/modules. At the same time, this allow us to know more about Drupal's strengths and weaknesses.

  • Finance knowledge

From being a novice without any finance background, our team had developed knowledge about retail banks' financial products and those banking terms used by the banks.

  • Managing client's requests

One of IS480's purpose is to allow students to interact with clients from the real working society, and know how to handle their requests. Truly, our team had gained a lot when it comes to handling client's change and additional requirements.

  • Team bonding

Through this project, the team has understood each other better in work as well as out of work. Together, we had fostered stronger bonds and are very good friends now.


Project Management

Project Scope

Scope

The scope our project is to use the data provide by our clients, online sources and other means and enhance them with the use of information tools which is the functions that we created. Information tools like search and compare and financial calculators.

To further add values to this data, we also included features like forums, write a review and information flagging into our site to get feedback from users and ensure data are factual and up-to-date. In addition, we hope to create and cultivate a strong community environment where users help users in purchase decisions, giving ezbanking a more holistic web environment in today's social network dominating era.

Lastly, on the business aspect of the website, we hope to liaise with banks to allow users to makes purchases directly through our website via our send request feature. Through the send request feature, user will make their enquiry on products to banks while our website would gain referral fee for any successful purchases.

Community users' functions

Custom-coded

  • Search and View Bank Products
  • Compare Bank Products
  • Send Bank Product Request
  • Flag Bank Product Inaccuracy
  • Add Reviews for Bank Products
  • Add Comments for Reviews
  • Financial Calculator
  • Risk Profile Assessment
  • View Product Categories and Banks
  • Bookmark Interested Products
  • Track New/Existing Products
  • Display Threads In Comparion Page by Product Keywords

Modified Drupal module

  • Regiter/Log in
  • View/Edit Profile
  • Forum

Admin users' functions

Custom-coded

  • Add Bank Product
  • Edit Bank Product
  • Validate Bank Product

Modified Drupal module

  • User Management

Bank personnel users' functions

Custom-coded

  • Download Bank Product CSV Template Generator
  • Generate Bank Product CSV Template
  • Upload Bank Product CSV or ZIP Files
  • View Customer's Referral
  • Generate Decryption Token


Project Schedule (Plan Vs Actual)

The methodology we are using is RUP whereby we go by iterations. We have 9 iterations in total and we numbered them from 0 to 8. In gerneral, most of our iterations are on time and there are not many changes between our planned and actual schedule. In order to achieve that, we actually sat down and planned our schedule carefully before we proceeded to the next iteration to keep our schedule always updated.

JCEman Iteration1.png           JCEman Iteration2.png          

JCEman Iteration3.png          JCEman Iteration4 edited.png          

JCEman Iteration5.png           JCEman Iteration6.png          

JCEman Iteration7.png           JCEman Iteration8.png          


Project Metrics

  • Time Metric

The metric was calculated by the number of hours each team member needed to spend per week on the project. Details of the point calculation and action plans are as follows:

JCEman TimeMetric1.png

JCEman TimeMetric2.png

JCEman TimeMetric3.png


  • Bug Metric

Bug metric measures the severity of bugs and numbers of the bugs in each iteration to determine the quality of our application and the action we should take. As we can see from the graph, from iteration 1 to 6,the bug metric score for every iteration falls under 10, which means we either use planned debugging time or fix during the buffer time only and we have a good control over the functions quality. Coming to the last iteration, the score suddenly jumps over 10 and we decided to stop development and resolve the bug immediately to improve our project quality. But it's understandable, as the last iteration comes with the whole system integration where most of the bugs maybe appear. In summary, we have successfully controlled our product quality.

Bug metric.PNG

Bug metric 1.PNG


Technical Complexity

  • EVA Database Design

Banking products are changing constantly regarding not only the value of its attributes but also the number of attributes they have. Therefore, if we stick to the standard database design whereby we have one table for each bank product, whenever there is a new product with a new attribute, we will have to either create one new table in the database or add new column to existing tables. In order to save admin users from that hassle, our website is using data from a flexible database with special design, the Entity-Attribute-Value model (EAV). With EVA, we do not need to change our database schema when a new product comes in thus eliminate the cost of having a database admin all the time.

New db.jpg

Coding Complexity

Although this EVA design makes our database flexible and easy to maintain, a trade-off of it is that our developers would have to deal with more complicated SQL queries. However, taking into consideration the great benefit that it can bring to the admin users, we decided to take on the challenge and materialize the idea. The complexity lies in the tricky part that we must render everything dynamically by iterating the whole list of attributes together with doing a lot of checking to achieve the desired information for displaying.

The following is a list of the complicated functions:

  • Bootstrap

For Bootstrap, we must really understand Drupal logic, its built-in methods and file structure to figure out how to upload the files. We made the upload field flexible in a way that it can take in CSV file as well as Zip file, validate them and response differently according to the file extension. In addition, various self-coded server-side validations have been implemented to handle the uploaded file and publish the data. Moreover, to make the formula dynamic for each product we get the formula of the product from the CSV and generate a PHP formula file for calculation function.”

  • Search and Comparision

Nguyen

  • Generate product CSV (using VBA)

Nguyen

  • Encrypt and decrypt referral

Eugene


Quality of product

By using Drupal CMS Framework and flexible EVA(Entity-Attribute-Value) database design, our end product has achieved powerful and comprehensive admin functions, whereby a administrator can easily manipulate the bank products and manage modules. Configuring and maintaining the website becomes an easy task for the administrator.In terms of functionality, we have 21 self-coded functions and 5 Drupal modified functions which offer a extensive user experience with the combination of user personalization, intuitive product filtering and social interactivity.


Deployment

Our website is deployed in our school server. Click ezBanking to view our website.

Testing

System Testing

System testing were conducted at the end of each iteration. The purpose of this test was to ensure that new functions that were integrated into the system were working and that it does not affect other functions that are already integrated. The test was conducted internally by team members.

UAT(Client)

Though we do let our client test our system regularly when we meet up with them, a UAT test with our clients was still conducted at the end of iteration 8. The purpose of this test is to let the clients have an overall feel of the product and allow then to provide further feedback. This is to ensure that what we have done had met their expectation.

UAT(External)

A UAT with potential users was conducted to ensure the usability,aesthetic, and functions met their expectation. Also, we hope that these potential users would provide us with valuable feedback and suggestion so that we could improve the site aligning towards their expectation. We aim to achieve a sample size of 20 people with a target audience age between 20-55, this is because we see them as potential users of our site.

Project Deliverables

Stage Specification Modules
Project Management Minutes Client, Supervisor, Team
Metrics Bug Metric, Time Metric
Requirements Story cards
Sitemap Site Map
Analysis Use case Use Case Diagram
Screenshots Screenshots
Design Webpages User Interface
Database ER Diagram, Logical Diagram
Testing Internal Testing Test Cases
User Acceptance Test UAT Survey, Results
Handover Manuals User tutorial, Developer manual, Setup manual


Reflection

Team Reflection

In conclusion of our project, here's our team's reflection.

  • Managing time well

Time management is one of the most crucial, but usually neglected issues in doing a project. Our team took serious considerations in this matter, and thus, we factored in more buffer time especially when for the week near to examinations. We learnt to split the tasks evenly to share the workload of each other. Our project manager would also keep track of the schedule constantly and remind us of the tasks to complete when the deadline was approaching.

  • Understanding and meeting the clients’ requirements

Our team tried to meet the clients at least twice per week to verify the requirements we discussed at the earlier stage. This helped us to follow closely to clients’ requirement and reduced time wastage too. This is real life experience where clients may not always stick to all the requirements originally discussed. We learnt to handle their changed and new requests within our deadline. We are happy that our clients are satisfied with our work.

  • Creating a dynamic, yet uncomplicated IT solution

When designing an IT solution to benefit our clients, our team had considered many different scenarios and factors especially our solution was a portal in the finance area. Banks, bank products and details are always changing and updating. Thus, we had to address this issue and create a dynamic database, yet simple-to-use portal to enhance usability. To create a strong and dynamic database, our team learnt to be more flexible and listen to suggestions from others and at the same time, fulfilling clients’ requests.

  • Risk Management

Our team took our bugs and schedule metric seriously, as this would affect the risk level. We also planned our mitigation strategy carefully for fear of jeopardizing our overall schedule if any risk happened. For instance, data was the most essential part in our whole project, as database played a big role in it. However, from the start of project, we were lacked of data, as clients did not have data to handover to us. Fortunately, we used our buffer time to self-search for data, to ensure testing to be carried out.

  • Teamwork experience

Throughout this whole journey of IS480, our team has been understanding and tolerant to each other. We learnt from each other like for those who are better in programming would share their knowledge with the rest. Some hiccups occurred along the way, but no major fights or disagreements that wreck the team spirit. Instead, challenges made us a stronger and bonded team.

Individual Reflection

  • Minh

After going through the entire "fyp process" starting from choosing the project, brainstorming, preparing the proposal to developing, packaging and delivering the final product, I found myself more competent in handling a project in terms of both soft skills and technical skills.

As a project manager, I got a chance to learn more about management techniques. The word "Management" is not just as simple as it sounds. Conversely, it is an essential art that one should try really hard to accomplish. Project management encompasses almost all aspects such as team management, project scope handling, client relationship management, conflict solving, etc. Dealing with these matters in fyp has helped in improving my project skills considerably.

As one of the developers for the site, I also learnt about a highly flexible content management framework - Drupal and a convenient language PHP. Drupal is increasingly receiving recognition and becoming more popular in the market thus I feel more confident when I could leverage myself with the knowledge of one more powerful framework.

  • Eugene

During the initial stage of learning Drupal, I had to do a lot of self-reading and coding. There was no one we could turn to when we were in doubt, since this is a FYP project and the onus is on us to read and understand Drupal. There were times that our team wanted to switch to another language that we are familiar with, thinking that it might be easier. Nevertheless, we decided to stick to our initial decision and begun reading more on Drupal EBooks. At last, the effort paid off and we were able to build modules from scratch. It was a huge achievement for me when I had written a module that actually works. And hence, I believed that as long as you have the determination, nothing is impossible.

At SMU, there are not many chances where you get to work with international students. Working with them had been a joyous moment, especially those nights that we had to stay over in school to get our part done.

All in all, I am delighted to have worked with my FYP team members and gained knowledge on Drupal.

  • Nguyen
  • Jesline

Being in a dynamic team, I learnt to communicate with teammates of different nationalities and working styles. This definitely requires lots of communication and coordination, as well as mutual understanding. Furthermore, when the team was proposing the project, we had to deal the whole project and proposal internationally since most of the teammates were in overseas. Even for this, we managed to overcome the obstacle. I am proud to be part of this team.

My technical knowledge has also improved as Drupal is a new content management software (CMS) to me, and at the start, I was struggling to understand and adapt to this software. This software provides many functions and modules that can help to ease the workload of the team, but the key is to master and understand the backend. One of the hardest parts in Drupal is to edit the existing codes in the modules if there is a need to change the theme according to the team’s decision.

Overall, IS480 gave me an enriching experience of handling clients’ requirements in the real working world. It was very challenging when we had to deal with client’s changing or adding additional requests. Fortunately, our team managed to fulfill client’s satifaction at the end of project. The journey of IS480 with my teammates has been remarkable and amazing.


  • Chen Cen

Life is a continuous learning process. How much you learn from it depends on your attitude and how much effort you put in. I definitely have many takeaways from this FYP project.

As the software architect, I lead the software development of project. Implementing the Drupal framework into our banking context is not an easy task. As Drupal is a truly complicated CMS framework and it's learning curve is quite steep, I did a lot of self learning and really tried hard to understand the complex framework. I also managed to master the PHP during the project. In addition, FYP project provides me with the chance to get more familiar with other useful languages such as JavaScript, Ajax, CSS. After these weeks, I realize that the best way to master something is through practice and the best way to understand how to code is through coding itself. The more you code, the more you try, the more you will get.

Since it’s a group project, knowing how to work well as a team is very important. I understand that in order to perform efficiently, we need to respect each other and communicate effectively. Along the way, we learned a lot from each other. The learning pace of each member is different; hence we do need to help each other along the way when facing problems.I really enjoyed the joyful time spent with all my teammates.

FYP provides us a good chance to challenge ourselves and sharpen our technical as well as soft skills.Our FYP project is done, but our learning process never ends!


  • Alphonsus

Before this project, I had never learned about Drupal and it being one of open source Content Management System (CMS). Through this project, I have acquired a new knowledge of this CMS tool and also improve on my knowledge of .php. It feel our project was quite fascinating as my team was able to demonstrate our skills learnt from different modules like CAT and EWS to complete this project. As the Business Analyst and liaison officer, I have learned more about bank products and the term used by the banks through online researches and guidance from our clients and ensuring that the team share a common understand on the terms and products we were using.

It was a interesting experience scheduling meetings with client initially when the team was separated due to internship commitments overseas. Thanks to technology, we were able to have team meetings online via skype and MSN. It was like going through global software project management module in our Final Year Project.

On a whole, it was a great 6 months experience working with my international friends as we share much laughter and fun while also enduring many grueling hours in completing this project.