JCEman:Wiki Final Page
- 1 Project Progress Summary
- 2 Project Management
- 3 Quality of product
- 4 Project Deliverables
- 5 Reflection
Project Progress Summary
- SVN Tortoise
During early development of the ezBanking system, our group had tried using SVN tortoise to integrate codes done by different team members. It was particularly hard when we had to integrate Drupal modules. Changes made on individual computers were not reflected in the SVN updated version, primarily because changes done to Drupal settings were saved to Drupal’s database and without syncing this database, no changes could be seen. Hence, we realized that even if we had sync the databases with SVN, there would be over-writing of databases and this would usually cause conflicts to modules that were earlier built.
To resolve the integration problem, our group requested for a school server. Hence, whenever there are new modules, it would be added straight to the server. This would eliminate any conflicts as changes made to Drupal settings will not affect anyone’s part. The server would be backed up on a weekly basis, so in case the system crashes; there would be a backup version of the latest integration.
- 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.
- 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. 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.
- 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.
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
- 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
Admin users' functions
- Add Bank Product
- Edit Bank Product
- Validate Bank Product
Modified Drupal module
- User Management
Bank personnel users' functions
- 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.
- Time Metric
- 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.
- 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 conventional 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.
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:
Writing the bootstrap requires good understanding of Drupal's built-in methods and its file structure as to how uploading of files work in Drupal. Not only that, we had to make the uploading of file flexible, so that it could accommodate uploading of different file types like CSV and Zip format containing multiple CSV files. Server-side validation had to be implemented to handle the data in the CSV files ensuring that it conforms to the attribute types declared in the database before it could be published on the ezBanking system. 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.
- Generate product CSV (using VBA)
In order for banks to the adhere to the naming convention of the product attributes declared in the database, a CSV template with an interface is created with the use of VBA.
The bank downloads the CSV template from ezBanking system, where it would prompt the user on the name of the attributes that were already declared in the database. This would ensure that bank users conform to the naming convention of the product attributes.
- Encrypt and decrypt referral
Due to the confidentiality agreement of the bank, administrator of the ezBanking system is not allowed to know any information that were sent from the customer to the bank.
When a customer sends a bank product referral to the respective bank, information about the product would be encrypted into cipher text and stored in the database. This would prevent administrator from knowing what products have been sent to the bank. When the respective bank wants to retrieve the referral from the system, information send by the customer would be decrypted into plain text and they could download the list of product request in excel format and saved it on their computer.
Both the encryption and decryption are done using RSA encryption. The administrator would use the public key assigned to the bank to encrypt customer’s product request, while the bank administrator would use their private key to decrypt the customer’s product request. In order for the bank to retrieve their private key, they have to use generate security token module, to generate a random private key to be kept by the bank and the following public key would be stored in the database.
Key generation for RSA algorithm:
1.Choose two distinct prime numbers p and q.
- For security purposes, the integers p and q should be chosen uniformly at random and should be of similar bit-length.
2.Compute n = pq.
- n is used as the modulus for both the public and private keys
4.Choose an integer e relatively prime to φ
5.Determine d such that e*d =1 mod φ
The public key consists of the modulus n and the public (or encryption) exponent e.
The private key consists of the private (or decryption) exponent d which must be kept secret by the bank.
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.
Our website is deployed in our school server. Click ezBanking to view our website.
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.
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.
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 Management||Minutes||Client, Supervisor, Team|
|Metrics||Bug Metric, Time Metric|
|Requirements||Story cards||Story Cards|
|Analysis||Use case||Use Case Diagram|
|Database||ER Diagram, Logical Diagram|
|Testing||Internal Testing||Test Cases|
|User Acceptance Test||UAT Survey, Results|
|Codes||Source code handled to client|
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 once every two weeks 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.
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.
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, our team spent couple of nights staying over in school to get our part done. This team spirit and commitment have made this project a success.
All in all, I am delighted to have worked with my FYP team members and gained knowledge on Drupal.
For me, FYP journey has become one of the most memorable time in SMU. I did have a chance to challenge myself with different things that will definitely happen in the future and now I was lucky enough to experience beforehand.
I learnt from FYP how prudently we should think before we promise to deliver something in software development process. In the case of FYP, since our clients are quite flexible and their ideas are more towards instructive than compulsory, there were many times that I felt excited by their suggestions and kept agreeing to add more functions to the project. However, in the end, it turned out that we really had to struggle to finish some additional functions within one semester's working time. Now I do value the significance of project planning and client negotiation as it will enable me to handle a project better in the future.
In addition, it is also rewarding for me to group with friends of different nationalities with various working styles. We did have conflicts at times but the most important thing is how we maintain team dynamic by setting aside ourselves, listening intently to others and adapting to each other. I did not know my FYP team members long before that, but through working, now I have a sense of being very close to them. Thanks to FYP, I did not only get more knowledge, but also good friends and nice memories.
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.
Before this project, I had never learned about any Content Management Systems much less to say Drupal. Through this project, I have acquired a new knowledge of this CMS tool and also improve on my knowledge of .php. I also got to know about AHAH which was I was quite happy about when i implement it into one of my functions. In my opinion, I feel our project was quite interesting as we were given a lot of space to express our creativity in creating the website.
I have learned more about bank products and the term used by the banks through online researches and guidance from our clients. I had to ensure that the team shares a common understand on the terms and products we were using before proceeding with the project. It was also an 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 timely team meetings online via skype and MSN. It was like experiencing a 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.
Chen Cen Reflection:
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.
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 gives 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!
Mr. Shannon Aw
"EzBanking has a very flexible database design that allows adding of new banking products without having to worry about the data for each product. This database design could be re-used to develop different kinds of online catalogues. I have been interested to see how the team progressed to actually implement their solutions. It is a nice experience to work with the team since they alway took our requirements seriously and tried their best to meet our needs. I really appreciate their working attitude."
Mr. Alan Lim
"The team has managed to build up a useful site for different kinds of users. I particularly like their admin tools which are quite powerful in helping us to manage banking product information later on dynamically. Their solution is quite unique in the market now among all banking product websites. I think the site's functions will be sufficient to ease the pain of community users when choosing the most suitable products as well as admin users when performing their tasks. Good job, JCEman!"