University of Moratuwa Faculty of Information Technology
University of Moratuwa Faculty of Information Technology
University of Moratuwa Faculty of Information Technology
Submitted by
Name: H.T.M. Gamage
Reg.No: 064031F
Submission Date: 20th of April 2009
Training Period
From 29th November 2009 to 18th April 2009
Training Establishment
hSenid Software International (Pvt.) Ltd.
hSenid Mobile Solutions
46/12, 1st Floor, Sayuru Sevana,
Nawam Mawatha.
Colombo 02.
INDUSTRIAL TRAINING REPORT
Preface
This report documents the knowledge and experience I have gained through my industrial
training program at hSenid Mobile Solutions. It will contain three main chapters as follows;
Throughout my industrial training program I have achieved several milestones and targets,
and it has been a challenging working environment at hSenid, where I got the initial
impressions on how to use IT to change my life style.
Acknowledgements
I hereby use this opportunity to thank everybody who helped me directly and indirectly of
successful completion of my industrial training at hSenid.
Further I would like to thank my faculty; all academic and non academic staff made our
industrial training program a success. I would like to thank Prof. Dileeka Disas; Dean,
Faculty of Information Technology. And also I would like to express my utmost gratitude and
sincere to Dr. Ajith Madurapperuma and Mr. Leelanga D. Senevirathne for taking initial
actions in organizing this placement for me. And also I would like to thank the department
heads and the entire staff members who worked hard to make this training success.
I would like to thank Mr. Dinesh Saparamadu; CEO of hSenid Software International, for not
only making this opportunity available for our students, but also for being there with us
regularly, sharing his many experiences, checking up on our progress and in general playing a
very active role in our internship. I must also thank Mr. Tolga Mahlke; Senior HR Manager
for his endeavors towards making our internship an all-round learning experience, as well as
Mrs. Gayani Gunasekara, Ms. Nadya Thisera, Ms. Thilanka Kodithuwakku, and other
members of the HR team who supported us throughout our stay.
Also our special thanks goes to the Project teams which I was involved who gave us superb
guidance and support in developing my skills. The Special thanks go to Mr. Dumidu
Nayanamithra; Operations Manager who closely worked with me during my internship
program and Mr. Harsha Sanjeewa; Senior Technical Officer who gave several ways to self-
learning and growth that improved my technical skills great deal during my internship
program. Also special thanks go to the Mr. Harshana Wickramasinghe; System Administrator
who helped to get most of the issues to be solved. Also special thanks go to Mr. Binuka
Chandima: who has been my Project Manager for the projects I have contributed during my
internship training. Finally I thank everybody who made my training a success.
Finally my big thank should go to my parents and other family members for helping me and
supporting me to succeed in this event. There are other people that I was unable to mention
by their names. So Im really grateful you for all your support and help.
Table of Contents
Preface ........................................................................................................................................ i
Acknowledgements .................................................................................................................. iii
Table of Contents ......................................................................................................................v
List of Figures .......................................................................................................................... vi
List of Tables ............................................................................................................................ vi
Chapter 01 - Introduction to Training Establishment.................................................................1
Chapter 02 - Training Experience ............................................................................................15
Chapter 03 Conclusion ..........................................................................................................34
Appendix A hSenid Organization Structure..........................................................................38
Appendix B XPlanner, Bugzilla ............................................................................................39
Bibliography .............................................................................................................................40
Abbreviations ...........................................................................................................................41
List of Tables
hSenid Software International (Pvt.) Ltd. is a software development company with offices in
United States, Singapore, India and R&D centers in Sri Lanka & Malaysia. It was founded in
1997 with the aim of supplying high quality software products and services to its customers
worldwide.
The first interesting thing about hSenid Software International is how it got its name. hSenid
is the reverse of name D-I-N-E-S-h, the name of hSenid stands for the CEO of hSenid, the
man who started it all and widely known entrepreneur, Mr. Dinesh Saparamadu.
hSenid Software International (Pvt.) Ltd; hereafter and in general in this report referred to
simply as hSenid; has grown to become a leading organization in the software industry in Sri
Lanka and has begun its operation globally. From its beginning it has expanded its customer
base to the international level. It continues along its goal of providing quality software
solutions to all its customers currently operates in five countries worldwide.
hSenid is an Application and Service provider for the Telecom, Financial and Enterprise
markets. We specialize in Human Resource Applications and Mobile Applications and are
also widely recognized for its reliable offshore/outsourcing capabilities.
With a staff of over 250 skilled engineers worldwide, hSenid offers the best solutions for
businesses worldwide. hSenid clients include Lucent Technologies, M1(Singapore),
Todo1(Florida, USA), DST (Brunei), Tigo(Sri Lanka), Sampath Bank (Sri Lanka),
Valista(Ireland), major Financial Institutions, Airlines, Telecoms, and Insurance Companies.
hSenid build its culture deep rooted in hSenid Core values Quality, Accountability,
Personal Growth and Discipline.
Company Values
A favorite sentence of the CEO is; One can become a hSenid Employee, but to become a
hSenidian, one must follow and live up to hSenid Way The obvious question that would then
arise is who is exactly a hSenidian? hSenid proudly boasts of the culture of the company.
The hSenid culture is described in following six sentenses;
Once again, a strong emphasis is placed within the company to nurture these values, and as
trainees, this values and their importance was a recurring theme in out induction. Even at
general staff meetings, examples of people acting out these values were presented and
applauded. This great value orientation in hSenid is I believe one of their greatest strengths
and something that should be continued and encouraged.
This section describes the main divisions of hSenid, which can be used express what hSenid
means and its main functions. hSenid operates mainly under four divisions each covering a
different domain. All four divisions are described shortly here, exploring what each division
is all about, what functions they add to the overall organization as well taking a look at some
of the major product milestones and outstanding achievements of each of them.
My Internship at hSenid was intended to be here and I had lot of experience in this lovely
office environment. I got to know some hot technologies and also started to work on them.
hSenid Mobile offers mobile solutions in different functional aspects such as;
Productivity Suite Solutions
Enterprise & Telecommunication
Financial Functionality
Messaging Solutions
Entertainment Solutions
This HR solution functionality of hSenid has resulted in the creation of several award
winning solutions by the company;
HRM Enterprise - Solution brings together the best tools to fulfill all HR needs.
mTimeTracker - 2nd runner up at the National Best Quality Software Awards 2002, BCS
ePayroll 2000 - 2nd runner up at the National Best Quality Software Awards 2000, BCS
HRM 2000 - 1st runner up award at the Best Quality Software Awards 1999, BCS
A division of hSenid, where takes a different aspect from the software development and
service feature. It leads into 3D animation and graphic design as a new division. MITZ studio
was initiated in 2003 and currently is a successful venture into providing organizations with
high quality computer graphic designing and animation services. The functions that MITZ
studio adds onto hSenid are: 3D Visuals, Architectural Visualization, 3D Animation and
Video Editing.
First Ill begin with a brief look at hSenid from an overall perspective and see how it is
functionally structured as a whole, without going into detail of the different subsections, the
people and their roles. This will be followed up with a more detailed look into how hSenid
Mobile is built up.
Given bellow is the top-level brief outline of the organizational structure of hSenid Software
International from a functional perspective. The diagram is kept simple on purpose where I
will not describe in deep of the structure. Below this level of management lies in general
several major team based structures headed by Project Leaders and Team Leaders (this is
mainly in technical divisions). It then goes on to encompass the engineering level, support
staff, and of course the staff of non-technical nature such as marketing executives. (See
Appendix A for more details)
All the software engineering division and the Quality Assurance division managed under the
Operational Manager which is known as engineering team. There is a separate division called
support division, which is responsible to system integrations, Network administration, and
other support tasks related to hardware. Presale division is responsible for interact with the
customer throughout the project. Normal project development team consists of Project
Manager, Architect, and Pre Sales engineer, Tech Lead, Dev Lead, Developers and QA. Later
stages of the project Technical writers also join to the team.
Also there is a team which brings new sales to the company which is called the sales division.
Further there is another division which brands the product standards, the documents which
are related to the customer and some marketing which is called the Branding and
Communication division. Also there is another team who cares all for the employees are the
Human Resource team.
Then the company is grouped by projects. Every project has a project manager under whom
the developers, testers and quality assurance personnel work. Project manager is the
responsible personnel for the software products. He is responsible for the delivery of the final
product according to the negotiated time.
When I was studying the software development process of hSenid during my stay, the
concept of XP lying within the process was clear as the four above mentioned values are also
mentioned as part of the official SD guide for hSenid Mobile. I also saw several XP practices
being deployed in the everyday project work that I went through. Examples of this are, stand
up meetings daily, measuring project velocity, dividing the projects into iterations and
making small releases more often.
time allocated and keeping records of developer status as well as overall project
status.
BugZilla Bugzilla is a "Defect Tracking System" or "Bug-Tracking System"
available throgh company intranet that is used to report and keep track of bugs in a
system. It allows users to login and report any bugs found through for example the
testing phase of a project. It also allows easy searching of bugs and reporting
functions. Throughout our job portal project, this tool was used for keeping a record
of bugs in projects.
SVN Subversion (SVN) is the version control system that we used in the
development work on the projects at hSenidMobile (this has come to replace the use
of CVS). It is an invaluable tool for our needs as we had around 10 developers all
working on the same project and it was very important to have this tool to control the
versions and keep track of changes.
Design
hSenid uses customized version of the eXtreme Programming as the development core
process of the organization. Test driven developments, Collective ownership of the work,
flexible hours of work, Iterative development are the main features of the core process. Along
with that every project team is having stand-up meetings in every working day of the
company. In a stand-up meeting, every member of the team should update the team regarding
their own tasks. For tracking the progress of ongoing projects, hSenid uses an extreme
programming project management tool called XPlanner which also helps the team
members to keep their work in line.
1.7.2 Weaknesses
High employee turnaround. In the IT industry, a higher rate of employee turnaround is
common and from what I have experienced at hSenid, this is present in this company
as well.
Though there is a strong trend within the company to develop their employees (and I
have personally seen the HR teams put a lot of effort into this with many staff
development efforts as well as surveys to ensure that people in the organization are
satisfied), the attitude towards some of these efforts is not as enthusiastic as it should
be. For the most part, some employees do not take these efforts seriously and consider
some of the surveys for example, as a waste of time. Of course, with my short
H.T.M. GAMAGE - 064031F 13
INDUSTRIAL TRAINING REPORT
experience in the company, I am not fully qualified to say whether this problem is
solely based on the employees attitudes or whether a part of the problem is that these
HR ventures are not well followed up to a good effect.
Possible Constraint:
One possible problem towards this goal is the attitude of some people. As I mentioned earlier,
something I have seen in some employees and trainees that they do not possess a great
enthusiasm for such ventures into communication building, teamwork etc and instead focus
more on the day to day work they have. And also the work load seems to get higher and dev
team might not get opportunity to focus on other activities most of the time. If we can get
more team based activities and increase events such as team outings, I believe this can make
a difference.
Though I was little bit familiarized with the Linux operating system I got a machine which is
using Fedora which I was not that much familiarized with that operating system. But I did lot
of effort to setup my working environment for development. I installed the required software
such as Apache Ant (a Java-based build tool. In theory, it is kind of like Make, but without
Make's wrinkles), Java (Object Oriented Programming Language), Tomcat (Apache Tomcat
is the servlet container that is used in the official Reference Implementation for the Java
Servlet and Java Server Pages technologies) and Intellij IDEA (The most intelligent Java IDE
with refactoring support). The main problem which I face is installing Java, Ant, and Tomcat.
All these need to be configured in Fedora. It is basically a file which is called bash_profile.
So configuring this file made my experience more in the operating system and some new
thing I learnt during setting up the development environment.
Further I had training sessions on particular tools which are being used in the company.
These are tools used in every project. First I had training on the XPlanner tool. XPlanner is a
project planning and tracking tool for eXtreme Programming (XP) teams. It is not just only a
project planning tool, but it is also to track the work being done through0 out the project and
also to make the projects to be done efficiently in future. This session was done by a Project
Leader. The Next session I had was in Subversion (SVN) which is an open source tool used
for version control management. This means team development coding is managed in a
central repository.
Also I had session on the tools which are being used in development. The sessions were on
Log4j, ANT, Core JAVA and JUNIT. The Log4j is a Java-based logging utility, which is
used to enable logging at runtime without modifying the application binary. The Next tool is
Ant which is used to build java based projects. Also I had a session on the tool which is used
for testing the developed code. The tool was JUNIT. The tool enables to develop test based
development. The next technical session which I had is the tool IVY. Ivy is a popular
dependency manager focusing on flexibility and simplicity. Also we had sessions on Tomcat
and Servlets. Tomcat is a web container, or application server which is used for deployment.
Also I learnt the concepts of JSP (Java Server Pages (JSP) technology enables Web
developers and designers to rapidly develop and easily maintain, information-rich, dynamic
Web pages that leverage existing business systems) and Servelets (Servelets are Java objects
that are compiled and stored persistently in the server side).
Other these technical sessions I had session like the coding conventions used in the company.
The programming style used in a particular program may be derived from the coding
standards or code conventions of a company or other computing organization. Also there was
a session from the Quality Assurance team on a tool which is used called Bugzilla. Bugzilla
is a Web-based general-purpose bug tracker tool. This tool makes managing bugs and enables
software engineers and QA engineers collaboration much effective. Also we had a quite a
lengthy session on MySQL, which really helped to extend our knowledge on database
management systems.
The training program conducted for us in an additional hour each day at a fixed time that we
were informed in previous day. The training program conducted for two weeks. The program
was really helpful for my knowledge but I had to parallel learn some other new things
regarding iPhone application development at the same time. I found it really challenging and
exciting to work on two completely different areas at the same time.
In addition to training program, there had been the company orientation program where I got
a real Idea about the company and its department wide functioning. The orientation started of
with the Human Resource Department giving us more about the rules and regulations of
hSenid. Furthermore the session continued with the following Departments such as
Communication and Branding, Quality Assurance, Support, Sales and Marketing. The
Orientation gave us the idea about the hSenid development cycle. And finally, we all new
comers had an interesting discussion with CEO, which made me think of a hSenidian rather
than just another trainee software engineer.
Most of my internship experience was based on this beginning, which I found really tough
and hard initially. As I was informed about I will have to learn myself to become an iPhone
developer, I had serious questions on my mind. But I had able to successfully answer them
within my training period to myself with the help of guidance given by my supervisor. I
started from learning iPhone and its features and also the history of Apple and iPhone made
me think this as a great opportunity to develop applications for a very powerful device. And
at the same time I started learning about Objective-C, the language used to program for
Cocoa Touch devices and Mac. Here are some quick introduction to Apple, iPhone and
Objective-C.
2.4.1. Apple
Apple Inc. is an American corporation which designs and manufactures consumer electronics
and software products. The company's best-known hardware products include Macintosh or
Mac computers, the iPod and iPhone. And apple software includes the Mac OS X operating
system, the iTunes media browser, the iLife suite of multimedia and creativity software, and
also some great apple software for iPhone like Weather, Stocks, Mail, Safari, Photos, etc.
Apple's co-founder Steve Jobs have done a great job for the invention of these great tools
Mac and iPhone. I will describe iPhone and its capabilities in the next section.
2.4.2 iPhone
In the first year of the iPhones existence, Apple sold 6 million of them; brought the thing to
70 countries; and inspired an industry of misbegotten iPhone lookalikes from other
companies. By the end of Year One, you could type iPhone into Google and get 229 million
hits. Its over 336 million today. Amazing how such device became popular in short time. But
you wouldn't be surprised once you know how powerful this device is, its like a small multi-
touch computer on your hand with 128MB of ram and 8GB or 16GB of memory and a great
touch interface with support for multiple orientations and accelerometers.
Now theres a new iPhone, the iPhone 3G. More importantly, theres a new version of the
iPhones software, called iPhone 2.0. And then theres the iPhone App Store, which offers
thousands of add-on programs written by individuals, software companies, and everything in
between. The App Store is about to hit one billion downloads at the time I write this report,
and I am sure it will pass the one billion mark within no more than few days. This is huge.
Remember how mystified everyone was when Apple called its music player the iPod
instead of, say, iMusic or iSongs or something? The reason was that Apple had much bigger
plans for the iPodphotos, videos, documents, and so on. Maybe they should have saved
that name for the iPhone. And we will be having new iPhone 3.0 still in its beta supports
Yes, the iPhone is still an iPod. And its still the best Internet phone youve ever seen. It
shows fully formatted email (with attachments, thank you) and displays entire Web pages
with fonts and design intact. Its still tricked out with a tilt sensor, proximity sensor, light
sensor, Wi-Fi, Bluetooth, and that amazing multi-touch screen.
Therefore, its still a calendar, address book, calculator, alarm clock, stopwatch, stock
tracker, traffic reporter, RSS reader, and weather forecaster. It even stands in for a flashlight
and, with the screen off, a pocket mirror. But now, thanks to the App Store, the iPhone is a
fast, wicked fun pocket computer. All those free or cheap programs can turn it into a medical
reference, musical keyboard, time tracker, remote control, voice recorder, tip calculator, e-
book reader, and so on. And whoa, those games! Hundreds of them, with smooth 3-D
graphics and tilt control.
All of this sends the iPhones utility and power through the roof. Calling it a phone is
practically an insult.
2.4.3 Objective-C
Objective-C is defined as a small but powerful set of extensions to the standard ANSI C
language. The Objective-C language is a simple computer language designed to enable
iPhone OS comprises the operating system and technologies you use to create applications
for iPhone and iPod touch devices. The technologies in iPhone OS provide everything you
need to create advanced applications that respond to touch events and display high-quality
graphics. In addition to the basic application infrastructure, iPhone OS gives you access to
Multi-Touch events, the hardware accelerometers, and other device features that make it easy
to create advanced and innovative applications.
The iPhone SDK includes iPhone OS, the Xcode tools, and access to the documentation,
sample code, and resources you need to develop iPhone applications. Xcode provides the
development environment you use to create your application code, compile it, run it, and
debug it. Because Xcode is fully integrated with iPhone OS, developing iPhone applications
with it is easy.
The implementation of iPhone OS can be viewed as a set of layers, which are shown in
Figure 2.1. At the lower layers of the system are the fundamental services on which all
applications rely, while higher-level layers contain more sophisticated services and
technologies.
The Cocoa Touch layer is one of the most important layers in iPhone OS. It comprises the
UIKit and Foundation frameworks (UIKit.framework and Foundation.framework), which
provide the basic tools and infrastructure you need to implement graphical, event-driven
applications in iPhone OS. It also includesseveral other frameworks that provide key services
for accessing device features, such as the users contacts. We work mostly with this layer
when developing iPhone applications with Apple SDK.s
After getting familiarized with the Objective-C basics and its features I have started reading
Apple recommended resources for iPhone application development. 'iPhone OS
Programming Guide' is the first ebook Apple recommend to start with for any new iPhone
developer. I went through all the videos given at Apple iPhone developer site to improve
myself and get used to words and phrases used specifically for iPhone development. Soon, I
found I could learn a lot from these Apple resources as well as from mailing lists and forums
dedicated for iPhone development. I continued to read other important iPhone development
resources on 'View Controller programming Guide', 'Interface Builder user guide', 'iPhone
Human Interface Guidelines' fully before starting the actual development with Apple Mac.
All these things tightly bound to my mind soon I started to use them practically.
I needed to connect to the Mac computer using VNC Viewer every time I do any iPhone
application development. As I have already mentioned, iPhone SDK includes iPhone OS, the
Xcode tools, and access to the documentation, sample code, and resources need to develop
iPhone applications. It also includes iPhone Simulator to run and see your application before
installing it on device and Instruments tool for testing performance of iPhone application.
Xcode is the IDE used for iPhone or Mac application development. Before I start with Xcode,
I took little time to get familiar with the Apple Mac OS X operating system, which I am
going to use for iPhone application development. It has a great graphics interface and Linux
terminal to run your favorite shell commands, easy searching and much more features. I
started Xcode and found it really confusing to use initially, I felt the same when I logged into
the Mac OS X operating system. First I started looking at its menus and buttons and their tool
tips to get familiar with the user interface.
Then I started to implement a 'HelloWorld' application to get things going. It took me nearly
two hours but still I couldn't do completely what I really wanted, then I thought its better
running some working application to start with. So I have downloaded some Apple sample
applications and went through them to learn how they have implemented. And I got to know
its very important to have a sound knowledge on Interface Builder to easily create iPhone
application views and link them with controller classes and interface builder methods.
Interface Builder is an application that comes with iPhone SDK for designing and testing user
interfaces for iPhone and iPod devices. After this work I was confident in successfully finish
implementing my first iPhone application on HelloWorld. :) Then I started creating
applications to see how to implement navigation controllers, tab bar controllers, how to use
different iPhone user interface elements before I will be given to implement a real iPhone
application. And also I implement small applications to see the auto rotation of iPhone views,
to track swaps and drags on iPhone screen and much more during this stage. After this initial
period my first task was to research and implement an XMPP iPhone chat client
development. Then I have added iPhone specific relevant frameworks to the project and done
several changes to make the code able to be compiled and linked as an iPhone application.
After these steps I started implementing view and controller layers for the iPhone XMPP chat
client application. First I want to check the back-end code, there for my initial task was to
implement a login screen for iPhone and use it to login to ejabberd XMPP server using
iPhone Simulator. Once I have finished this, I could successfully login to an XMPP server,
and after this we decided to allow users to enter their account input information at Settings
screen instead of my application home screen. This required to add a settings bundle to the
application. Then I have created a Roster Controller class to handle contact updates after
logged in to xmpp server. The controller class has delegate methods to handle updates
coming to xmppframework XMPPClient class. In order to display list of loaded contacts on
iPhone screen it required to study about handling table views, its delegate and protocol class
methods. I have designed the contacts view using Interface Builder and linked its IBOutlets
and IBActions. Received IBAction methods were implemented in the Roster Controller class.
XMPPClient class and RosterController class has relevant objects in InterfaceBuilder linked
appropriately. All these IB stuff spread in the MainWindow XIB file, which is kind of a
resource file.
At the end of this my next main task was to implement chatting for contacts. To implement
chatting I have added ChatWindowManager and ChatController classes in addition to the
chat view designed using Interface Builder. The IB stuff for this is separated and kept in
ChatWindow.XIB file. When user taps a contact in the contacts view, it gets the reference to
chat window manager common instance and creates or gives relevant chat controller instance
with its view. After this, I had very few work to finish a simple XMPP Client for iPhone.
I was able to finish my work on implementing an XMPP chat client for iPhone with all basic
features, including loading/adding and removing contacts, accept/reject requests, send and
receive chat messages. I have implemented several features within a week after chat
implementation, including adding / removing contacts, accept / reject requests, and also
respond to swipe gestures and view current started chats in a tabbed view. I had to implement
a custom scroll view sub class to have swipe gestures on chat views. Swipe is a fast sweeping
blow on iPhone touch screen, in respond to that view should change or move accordingly.
Also I have implemented a separate request controller to handle accept reject requests coming
to the chat.
At the end of this application, I had pretty much confident about me to develop a high quality
iPhone application to be published at Apple AppStore.
H.T.M. GAMAGE - 064031F 26
INDUSTRIAL TRAINING REPORT
expid int PK| name varchar typeid int PK| name varchar expid int PK| note varchar| date real| amount real| type varchar
Expense tracker application allows iPhone users to note down their daily expenses under
preferred profiles, further under any user defined categories/expense types. The application
development includes two main modules namely, expense module and report module without
implementation of user interfaces. I have started from implementing model classes for the
expenses module as planned. Expense, Type and Profile are three model classes for the
application with getters and setters and other methods. Properties are implemented in typical
Objective-C manner as synthesized properties. And also I have implemented main UIs for the
application using Interface Builder, to start with.
Then I had some tough development time, I needed the help of iPhone development forums
help badly to come across some issues. I have initially designed the UI flow for the expense
tracker application as well as I already did a research about current expense tracker
applications, specifically focused to iPhone. Then I have implemented the UI flow with dump
data and controller classes within two days. After that we had a discussion on changes and
scheduled the application time line. I have started the development according to the schedule.
I did a study about SQLite, a software library that implements a transactional SQL database
engine, which can be used in iPhone to store data of applications. Then I have implemented
table structure as we have already planned and controller classes to deal with model to add
new expenses under profiles and categories. Then I finished controller implementation for
managing expenses. At the end of the expenses module, application could allow users to
simply store their expenses under profiles and categories as they prefer with iPhone
navigation, also allowed to manage all these expenses, modify / delete.
In order to work with reporting module drawing charts; I have studied Quartz 2D
technology, which is used to draw 2D graphs and charts in iPhone applications. Initially, I
have implemented some test charts and used the code to draw a good looking pie-chart for the
expenses recorded with the application; graph displays expenses in a pie-chart with
categorized total. It uses total of each category and grand total queried from database to draw
the content. And then I have implemented a summary view for the Expense Tracker
application, which displays latest expense record, earliest record, highest & lowest expense
and also grand total of expenses. I have implemented a controller class to handle the
summary view, which retrieves data queried from database.
Then I worked with several application changes to Expense Tracker app, in order to improve
the usability of the application. It included some button positioning and spelling checking.
Then, we needed to implement a report of expenses happened in a table like format. While
we were discussing implementation possibilities, we decided to use a UIWebView to display
H.T.M. GAMAGE - 064031F 28
INDUSTRIAL TRAINING REPORT
an html table format report within our application. Therefore, I have studied about
UIWebView and how to use it with in an iPhone native application. And also I wanted to
refer documentation several times to find how a locally created html file could be viewed
within a UIWebView object. And also I needed to get familiar with iPhone web dev a little to
provide an iPhone optimized html page to the UIWebView.
After that we planned to add a budget for the Expense Tracker application and I have worked
with it for the rest of the week. I have changed the add profile controller class so that it can
additionally handle adding a budget. Then also summary had to alter to display current
available budget or exceeded amount, in addition to the user interface changes to introduce a
budget add for the application.
At the end of implementation, I started application testing with iPhone and iPod devices.
Next, I had to study and test my application with real devices. It was not easy as testing J2ME
applications. I have registered as an iPhone developer in Apple iPhone developer program. I
have joined as a team member of iPhone developer portal for hSenid Software International.
Also I have faced several issues when trying to make and install application on real devices.
In order to test iPhone SDK applications, we need to go through below high level steps.
Create Developer Certificate, download and install it on local key chain.
Create provisioning profile with developers, device IDs and application ID added.
Install provisioning profile on device and then install signed binary executable using
organizer.
At the end of my initial testing, I have released the application for QA and updated SVN on
it. I did a knowledge transfer to QA person on iPhone common application features and
iPhone Human Interface Guidelines. Then I have learnt how to use Bugzilla to report and
update on bug fixes and its progress. I initially started with smallest bugs so that I know I
have some progress on my work and then slowly started fixing major and critical bugs.
At the end of all main development, I was asked to do several modifications to the
application, nevertheless some of them did not match with Apple iPhone Human Interface
Guidelines. Most interesting new feature I have implemented was allowing users to email the
generated report with iPhone. After the completion, we delayed the application submission to
the AppStore via iTunes Connect until we get team agent access to the account.
After getting access to the account, I have created the distribution binary and submitted the
application to the Apple review. It required to complete a set of actions to be published for
review. We proposed a name for the application called 'hExpense'. The application will be
available to iPhone users to be downloaded from App Store with Tier 1 pricing.
While doing iPhone application development, I worked with some J2ME application user
interface developments. Once I joined hSenidMobile, I have already had some sound
knowledge on J2ME development. Our second year industrial project was to implement
multi-player mobile game over Bluetooth, which had given me experience on J2ME
application development. We focus on providing a common user interface that would work
with all java enabled phones, which looks elegant and attractive. The best tool to provide this
kind of UIs was to use J2ME Polish API. I would give a quick introduction to both of these
and share my experience on UI development for J2ME devices.
2.6.1 J2ME
Java Platform, Micro Edition (Java ME) provides a robust, flexible environment for
applications running on mobile and other embedded devices - mobile phones, personal digital
assistants (PDAs), TV set-top boxes, and printers. Java ME includes flexible user interfaces,
robust security, built-in network protocols, and support for networked and offline
applications that can be downloaded dynamically. Applications based on Java ME are
portable across many devices, yet leverage each device's native capabilities.
J2ME Polish is a suite of tools and technologies aimed at mobile developers and companies
within the mobile space.
A UI toolkit that is highly flexible and that can be designed outside of the
application's source code
A toolset for porting mobile application to different handsets and different technology
platforms.
Technology for accessing server side content and communicating with remote parties.
A persistence solution that allows loading and saving complex data with a single line
of code.
And more importantly, its opensource, you have code with you at any time and it has a huge
community working around it.
mRecharge is a J2ME client for mobile recharge and mBanking is a J2ME client for mobile
banking. All these J2ME applications are part of hSenidMobile's mChoice suite. My task was
to implement user interface module for these two applications. Both these applications have a
main focus to easy localization and common final jar file that work with large number of
phones without any modification with an attractive interface. It is obvious that we would
need the J2ME Polish API and its powerful styling and build framework to achieve this goal.
I have studied further about J2ME polish api to come up with screens for these two
applications. The mRecharge application Uis included fund transfer, check balance, check
account history, and change PIN. In addition to splash screen, progress screen and main
menu. The mBanking client included developing screens for all the mobile banking
functionalities. The mBanking client built for English translation as well as Portuguese
translation as well. And in addition to user interface development, I have finished a
README file for these applications.
Monday Morning Meetings a meeting held every Monday for all the employees to
get the updates of all the projects as well as to increase communication.
Outings / Movie nights hSenid always focuses on the informal aspect of the
employment to keep the employees motivated, and therefore there were regular
outings, sports days and movie nights to keep our minds off the work.
Working Hours - Monday to Friday in one of the slots as follows: 8.00 a.m. to 5.00
P.M, 8.30 a.m. to 5.30 P.M, 9.00 a.m. to 6.00 p.m. or 9.30 a.m. to 6.30 p.m. Saturday
is not an official working day for hSenid. However, Saturdays are reserved for any
training programs and workshops, which we may be organizing from time to time.
Sometimes, We even had to work certain weekends and beyond the timeslots to cover
up deadlines.
Security Policy hSenid may monitor all our activities either on the computer on the
network or in general to ensure that we are not wasting company resources.
Code of Conduct and Dress Code hSenid has its own set of ethics on how
employees should behave, and this covers a wide range from being on time, using the
proper dress code both for office and meetings, taking leave and meeting deadlines.
Chapter 03 Conclusion
experience on iPhone application development and how to use Apple documentations and
forums to get over on critical situations in development. The application is capable of giving
users the ability to login to any jabber server including Google Talk, add contacts, chat with
friends, and remove contacts and all basic IM client functionalities. But it did not include
group chatting.
After that my goal was to develop an iPhone expense tracker application to be published at
Apple AppStore. The objective of this application was to implement a comprehensive yet
easy to use system built for businesses travelers, and other iPhone users to keep constant
track of their business expenditure while on the move. While achieving a successful
implementation of this application I was given a set of targets beforehand. I went through all
these initial targets to finally come up with an iPhone application to track expenses of iPhone
users. Final application included features; adding expenses under trips / projects, managing
and editing expenses, generating multi-touch enabled reports, emailing generated expense
reports from iPhone. The application is submitted to be published at Apple AppStore and
currently its under review by Apple. Its called 'hExpense' and will be available to download
at AppStore to download by iPhone users.
In addition to iPhone application development during my internship period, I have also
implemented J2ME user interface modules for a Mobile Recharge client and Mobile Banking
client. All these J2ME applications are part of hSenidMobile's mChoice suite. I have studied
and used J2ME polish API and its powerful build framework to implement user interface
module. The modules were implemented using all powerful features in J2ME Polish API
including attractive styling, localization, easy customization.
And more importantly, I got some great experience working with highly talented people
around working around me and giving guidance on achieving huge goals during my
internship, which sometimes I thought I would have failed if I tried them on my own. We had
fun time, movie nights, parties organized by HR team to inspire us and bring us all together.
The training program helped me a lot to build my confidence to become a professional in IT
industry and it helped me to improve my soft skills as well as inter-personal and
communication skills as well. In conclusion, I would say it had been a great time in my
university life working as an undergraduate trainee at hSenidMobile staying with highly
talented people around me and getting initial experience on the field we are going to be in
future.
One minor aspect I guess they could improve upon is if they themselves visited all the
training places during training. This way they would get a firsthand view of things and may
find ways to improve upon it. In my opinion, if this could be avoided it would be a perfect
program for all undergraduate trainees for their future in industry.
This appendix includes screens of Project planning tool XPlanner and bug tracking
tool Bugzilla used at hSenidMobile. Both these tools are opensource tools used by
most of the software engineering companies.
Bibliography
Abbreviations