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
- For repository we used red mine. You can use
- bit bucket https://bitbucket.org/
- red mine http://www.redmine.org/
(which we used)
- For bug tracking we used bugzilla but mantis which we
used for another project may be a better choice too. You can use
- bugzilla http://www.bugzilla.org/
- mantis http://www.mantisbt.org/
- you can also try assembla https://www.assembla.com/home
- 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