Wednesday, September 18, 2013

Bit of project experience


E Health -Laboratory

We were developing an e health system for hospitals in general where several groups take part in various tasks. There were three main verticals laboratory, pharmacy and OPD. There were research groups on usability, telecommunication etc and another group to develop framework and integrate the system. Since outcome of all the groups are going to be integrated ultimately as one product we were supposed to keep in touch with each other and follow common standards.


Architecture: SOA + MVC

As you know the architecture is the major factor for the success of a project. Combination of SOA (Service Oriented Architecture) and MVC (Model View Control) created a super architecture for our project. We used SOA instead of the Model part of the MVC. Therefore this architecture highly supports interoperability, flexibility, maintainability and scalability. 

We created front end using PHP. We used Code Igniter framework which is based on MVC architecture for that. We use MYSQL as DBMS. We connect front end and back end using restful web services. For that we used JSON and Java Hibernate.


Software and technologies we used:


Net Beans 7.2 (PHP)
Code Igniter
eclipse-jee-juno-SR2 (JAVA)
JBOSS Hibernate for java framework
Restful web services


Do s and Don't s


  • Though you are following agile software developing methodology where everyone is responsible for every task it is better to assign members for specific roles 
    • database admin for each group and another one for entire project
      • contribute to the integration of the entire database, maintain consistency with changing requirements and create and maintain unique standards and naming conventions for database tables, columns ,etc                         
    • one for take care of coding standards 
      • construct a common agreement and  make sure all the groups are following same naming conventions, same patterns and code structures, etc
  • Follow unique or well known standards
    • It helps a lot when it comes to maintain the project. When everything is up to standards any outsider can understand the coding within less time and less effort.
      • For database you can use a data catalog where each table and column is described in detail. (what is the purpose of each table/column why such a data type is used)
      • While following coding standards, put enough number of comments in the coding whenever it is necessary and use meaningful names for variables so that later anyone can understand it.
  • Better communication leads to success
    • Always have a better communication among groups, group members, with supervisors and client. It is a major factor for success or a failure of a project
    • Have frequent meetings with your supervisor and client. Make sure they get frequent updates about the current status of your project. Try to collect their feedback s much earlier so that you can avoid disaster situations at the later part of the project as well as it reduces the risk of failure
    • Use effective and quick communication methods. Though face to face communication is the best way when it is not possible use other means. 
    • You can use a face book page for entire group to share messages and a group blog. It is very practical 
  • Use tools 

  • It is better to have code camps once in a while where all the groups get together
    • It is really productive if all the groups gather in one room and have a sort of hackothon for may be 2-3 days. Timing is again important. Better time may be soon after exams where every member is free to put their best effort to the project. 
    • It helps to solve lot of issues and incompatibilities among groups very efficiently and effectively
    • It helps to keep up with other groups. If two groups use different code for the same task you can select the better one and make it as the standard one so that it helps to develop a better project as well as to keep the consistency. If a group in your project is already using a code that you want, no need to re invent it just use it.
    • It also gives a privilege to share knowledge and experience among groups and increase mutual understanding and friendship. 
  • It is really nice to name a common location for all the groups to come and work when they are free
    • It encourages better communication among groups
    • Otherwise each group works here and there and it will waste time to decide where to get together each time
  • Don't wait till the later stage of the project to integrate the ER while individual groups working  on their own ER
    • It is always better to as soon as you finished with your individual group ERs after requirement gathering, integrate the ERs and create a common ER for the entire project before start coding based on the individual group ER. If not, at a later stage you will have to change your entire coding etc which is both wasting of time and effort
  • Don't wait till the later stage to get feedback from the client/end users although they may not clear about what they really want
    • At the later stage when they see the product they may need lot of changes. If we can get their feedback from the early stages by using prototype etc we can develop a product which satisfies them more
  • It's better to have a proper research on what end users actually need, their preferences and what they don't like in details before starting the project.
  • Stress management
    • When working together it is normal to have arguments, disputes etc and specially near deadlines everyone get stressed so it is always better to be patient and avoid such situations.  Not only learning new technologies, learning to deal with different types of people is also an essential part in a project. It is better to allocate a little time to have some fun as a group once in a while. It helps to develop team spirit, increase mutual understanding and helps to develop a good environment to work.

hope it will be useful for your projects in the future...

No comments:

Post a Comment