For the first phase of our project development, we excluded the connectivity of our SNS to other SNS. However based on our project vision, this is defined in our plan.
By use of Facebook API, we would like to bridge our SNS to Facebook allowing students to find their Facebook friends in SOTON Student Connect system. Also, we would like SOTON Student Connect users to be able to post their activities in our system in Facebook system.
We would like to connect our system to Twitter allowing users to interact more with their friends.
We also want to connect our system to some other RSS and news server in order to import relevant news for users.
If we had enough permission from the University of Southampton, we could connect our system to resources of university such as iSolution or SUSSED. In this Mashup, we could also import notes of all modules to academic section of our website providing an area for user to put their own personal notes on course materials and allowing other students to see those notes and interact more. At first, this was our vision. However we noticed that this is not possible.
First of all, we considered MVC architecture in our system. View layer is separated from logic layer and we have a complete separate POJO classes to model the domain. Furthermore we have a database controller in order to connect to the database.
For our database, we decided to choose MySQL Server as it is both easy and powerful database server. It integrates well with Java, our programming language, and performs very well on web-based systems.
We choose Java for our programming language. The reason of choice is that we have portability defined in our non-functional requirements so we did not want our system to be depended to an operating system. Java has a lot of resources and as the team members were familiar with Java, we did not have any problem in this aspect.
As specified in the project schedule, I implemented the Search module and Public Profile Module:
Search Module: This module is very crucial to our domain as the users can find their friends via this module. This module is in its first cycle and hence it only supports limited features. However the goal of this module is the user will enter a search query which might be anything related to our domain. The system gets the search input and will retrieve all the related entries in the database and shows them in a central space. This can be anything such as other users, accommodation, field of study, study threads, groups and events, and others.
Public Profile Module: Public profile module is in its first cycle and also supports limited features. The user clicks on another user’s public profile page link which he finds by searching, navigating, or that user is in his friend list. After that the system will show the public profile page of that user.
Although these two modules should improved in order to meet our requirements, in this stage, they seem to be sufficient. So, I will just finalize that and apply them to the whole system and I will start working on other modules. Later in the project cycle, I can come back and add other features.
Furthermore, all the pages have been improved. For instance, all the codes that were required in all pages, have been moved to another public page and in those pages that I need them, I included that public page.
As specified in the project schedule, I worked on Accommodation Module and it is now finished.
This module needs more work. Specifically, I have to add ranking and photo abilities later.
This module is able to:
By entering into this module, the user is able to see a list containing all the accommodation of the University of Southampton and their address.
Then, they can choose either to see more photos, ranks, or reviews. They first two options have not implemented yet and I will work more on them later.
The review section is finished. The user is able to read all the reviews of accommodation.
At the moment, and mainly because of time limitation, the user is unable to edit or add anything and he is only able to read information. For instance, in this module, the user is able to read reviews or accommodation detail information. I decided to first focus on reading of materials and then add editing and writing section to all modules. For now, we do have sample data in our database.
But what’s good about this approach?
This approach will help us to design and implement the system very rapidly and then show it to our users and get updates and feedbacks. Furthermore we can ask their opinions throughout the work. This approach seems to be more rapid and we can design and implement the system quickly. After we get the final approval of users, I will add the editing and add features so they are able to modify information.
Now about the next module. I would like to work on search section and viewing friends profile as these two seems to be the most important thing in a successful social site. I have to think about whether the system is going to have two different kinds of profile (one for the user himself, and the other one which could be like a public profile). If I go with the second approach, later in the project life cycle, I can add security module easier. For instance I can have a trust module in which the public profile would be dynamic to different friends and people.
The implementation phase has been initiated a few days ago and I am following our use case and database schema in order to develop our social networking web-based application. These days, I have worked on profile module and was able to implement the following sections. One good thing about this system is flexibility, adaptability, and scalability. Whenever a change is necessary, or there is a need to add something else, the system is really flexible.
For now, a simple login mechanism has been implemented. The user will provide her username, password, and university email address in order to login into the system.
Almost all sections of this module have been implemented:
Friend Section: User is able to see all his friends, and when they form a friendship.
Accommodation Section: System notify the user where he currently lives.
Previous Education Section: User is able to see his previous educations.
Currently Education Section: User is able to see his current field of study and all his modules.
Friend Request Section: This section notify the user about friend requests he has and also the requests he has sent to others.
Message Section: This section shows all the messages that the user has
Tricky ones (Hardest ones)
Event Section: This section notify the user about the events he is going to participate, and all the events that he has been invited to.
Group Section: System will notify user about all the groups he has created and all the members of that specific groups, all the groups that the user is in, and all the groups he has been invited to.
Thread Section: This might be the trickiest one in this module. System will notify the user about all the module threads he has created, all the answers other people have posted for his question, and all the threads that user has participated in.
I am going to focus more on other modules. The next module will be accommodation.
These modules and their sections are basic and play like notification. However as the fundamentals have been implemented, the rest will be easier.
Through the implementation of profile module, I asked my friends’ opinion and I considered their opinion as well. Fortunately, due to earlier considerations (the database, the use case, the code and etc), it was so easy and flexible to consider their opinions and there was no need to change something. It was like add more features to a module.
We have a long way to go, however we truly think this system is able to help the University of Southampton and the students in their social and educational life.
Now that we have our final version of database and it is in MySQL Server Database, we can start coding. We decided to choose Java Enterprise Edition and implement a web-based system with JSP and Servlet. We will also use different libraries and tag code as necessary which we will note later.
The implementation will be followed base on a roadmap which we will upload it shortly. The first section of this roadmap is user registration. As we noted earlier, there will be no normal registry form like other websites because the user will login into her account by her university email address and a chosen password. However, after she logins into the system, and only for the first time, she has the opportunity to enter her personal information into the system. This registry process consists of nine steps which helps her in the process. After the system acquires the information, the user will be redirected to her own personal page in which she can see her profile and personal information.
This nine step process has been implemented and works fine in acquiring information (with some minor difficulties which will be solved later).
We investigate about the domain and our use case diagram and we come up with a general schema of our database which we published the result and the schema in previous posts. We decided to choose MySQL Server database as our main database. The main reasons are following:
However, we are concerned about followings which MySQL Server seems to have short-commings:
We generate all the SQL codes necessary to have our database and import them in the MySQL Database Server. We consider all the primary keys and data types as well. However there are some improvements that we can consider them later, such as:
One of the tables which are responsible for storing user personal data has way too many columns and all the focus are on this table which is like a main table with a lot of links. Later in the way, we can divide this table into two tables. Half of columns will go with table 1 and the rest will be stored in the second table. We could also mirror the table and store records in more than one table ordered alphabetically.
We do not consider index in our SQL code which might be essential later for the sake of performance and search speed. Later, it would be a good idea to add index to all tables.
In this phase, we are going to be more concerned about the implementation of the project.
From project analysis, we understand about UML diagrams. Use Case Diagrams help us to capture all the requirements and assure that we are going to implement all the features and needs. Furthermore Class Diagram and Sequence Diagram will help us in implementation. All the UML diagram will be uploaded in the website as soon as possible.
We also analyse the database domain. The database schema gives us a general view to the database and all the tables that we are going to implement.
We also have three prototypes which base on our survey and interview, we are going to design one of them. All the questionnaire, interviews and survey and their result will be uploaded in the website.