Industrial Training report

42
1 Chapter 01 1. Introduction to the Industry 1.1 Nature of business of the Industry My 6 month internship was carried out at Virtusa (Pvt) Ltd. Virtusa Corporation (NASDAQ: VRTU) is a global information technology (IT) services company providing IT consulting, technology and outsourcing services. Virtusa provide high-value IT services that enable their clients to enhance business performance, accelerate time-to-market, increase productivity and improve customer service through enhanced global delivery model, innovative software platforming approach and industry expertise. Virtusa has marked a leading position in the field worldwide serving Global 2000 companies and the leading software vendors in Communications & Technology, Banking & Financial Services, Insurance, Telecommunications, and Media, Information & Entertainment industries. They build and sustain application platforms for our clients that create competitive advantage. Virtusa was Founded in 1996 and headquartered in Massachusetts and have offices and technology centers throughout the United States, Europe and Asia. Virtusa has advanced technology centers in US, UK, Hungary, India and Sri Lanka and has employees around 8000. Virtusa is an industry leader with a solid track record of software solution delivery success as evidenced by highly referenceable and repeatable client base. . It is in the leadership in a wide range of IT disciplines such as software plat forming, business process management, data warehousing and business intelligence, enterprises content management, service oriented architecture and software testing. Virtusa considers people as their most valuable asset. Virtusa focus on state-of-the-art technologies and best-in-class infrastructure enable them to attract as well as retain world-class technology professionals who thrive to help their clients succeed. Virtusa’s people are acknowledged for their exceptional talent, passion, dedication, commitment, innovation and

Transcript of Industrial Training report

Page 1: Industrial Training report

1

Chapter 01

1. Introduction to the Industry

1.1 Nature of business of the Industry

My 6 month internship was carried out at Virtusa (Pvt) Ltd. Virtusa Corporation (NASDAQ:

VRTU) is a global information technology (IT) services company providing IT consulting,

technology and outsourcing services. Virtusa provide high-value IT services that enable their

clients to enhance business performance, accelerate time-to-market, increase productivity and

improve customer service through enhanced global delivery model, innovative software

platforming approach and industry expertise. Virtusa has marked a leading position in the field

worldwide serving Global 2000 companies and the leading software vendors in Communications

& Technology, Banking & Financial Services, Insurance, Telecommunications, and Media,

Information & Entertainment industries. They build and sustain application platforms for our

clients that create competitive advantage. Virtusa was Founded in 1996 and headquartered in

Massachusetts and have offices and technology centers throughout the United States, Europe and

Asia. Virtusa has advanced technology centers in US, UK, Hungary, India and Sri Lanka and has

employees around 8000.

Virtusa is an industry leader with a solid track record of software solution delivery success as

evidenced by highly referenceable and repeatable client base. . It is in the leadership in a wide

range of IT disciplines such as software plat forming, business process management, data

warehousing and business intelligence, enterprises content management, service oriented

architecture and software testing.

Virtusa considers people as their most valuable asset. Virtusa focus on state-of-the-art

technologies and best-in-class infrastructure enable them to attract as well as retain world-class

technology professionals who thrive to help their clients succeed. Virtusa’s people are

acknowledged for their exceptional talent, passion, dedication, commitment, innovation and

Page 2: Industrial Training report

2

creativity. They take great pride in providing thought leadership, building sophisticated cutting

edge solutions and creating client delight. From its inception, Virtusa have developed an

organizational culture based on a set of core values such as pursuit of excellence, integrity,

respect and leadership (PIRL). From the training periods at Orientation period, all the employees

are made to internalize those core values and diligently practicing them and it provides the key

factors for team members at Virtusa.

As it is mentioned in their website Virtusa, anticipate and understand their client's emerging

needs and work in close partnership to make their businesses stronger, valuable, more profitable

and more productive. Virtusa also offer them the capability of capturing market opportunities.

They work closely with client's leadership teams in order to gain better insights for providing the

best possible IT services and solutions to their business challenges. This enables Virtusa to

establish extremely close partnerships that foster continuous operational improvements and

better bottom-line results for their clients.

1.2 History of Virtusa

Even before my internship I was inspired by success stories of Entrepreneurship and it made me

read about history of Virtusa. In internship also once I got the opportunity to hear this success

story from Sanjeev Palihawadana – Senior Director and Delivery Head of Virtusa.

Virtusa was founded as ‘Software Solutions’ in 1997 by Kris Canekaratne and small group of

people in small place. The company was later renamed as ‘Technology Providers International’

and was involved in software development. In 1998, the company opened their head office

at Westborough, Massachusetts and the company was incorporated as Technology Providers Inc.

in the United States. In year 2000, Technology Providers International was renamed

‘eRUNWAY Inc.’ and offered eBusiness, Internet software development and systems

integration services. eRUNWAY was re-launched as ‘Virtusa Corporation’ on April 22, 2002.

The name Virtusa is derived from the Latin "virtus" meaning excellence. Virtusa went public on

August 3, 2007 by listing on the NASDAQ exchange. In 2009, Virtusa acquired InSource, a

technology consulting company with specialization in the Insurance and Healthcare industries.

Page 3: Industrial Training report

3

The following year, Virtusa acquired ALaS Consulting LLC, a Financial Services Consulting

Firm.

1.3 Vision and Mission

Virtusa Vision

To be the preferred partner of leading enterprises and visionary CIO’s who aspire to lead their

industries by adopting and deploying flexible technology platforms that enable their It

organizations to respond to changing business requirements providing support for their

enterprises’ most critical strategic requirements.

Virtusa Mission

Virtusa's mission was to provide next generation technology and innovation services to its

clients. The quest to push the technology envelope and to be at the forefront of industry trends

while working with leading product developers and enterprise customers is what enthuses and

motivates Virtusans , resulting in the company's ability to attract and retain the best talent.

Virtusa's exacting hiring standards ensure that Virtusans represent a select group of global high-

performers with a deep and extensive knowledge of emerging technologies and business domain

To be the partner of choice for corporations in creating competitive advantage through

technology excellence

To create the best conditions for professional success and quality of life for all Virtusans

To be a socially conscious and responsible corporate citizen in all countries of operations

Page 4: Industrial Training report

4

1.4 Organizational Structure

1.4.1 Executive Officers

Kris Canekeratne Chairman and Chief Executive Officer

Thomas R. Holler Executive Vice President and Chief Operating Officer

Roger Keith Modder President,Asia and Executive Vice President for Global Services

Raj Rajgopal Executive Vice President of Business Development and Client

Services

Ranjan Kalia Senior Vice President, Chief Financial Officer, Treasurer and

Secretary.

Samir Dhir Executive Vice President, Chief Delivery Officer and Head of

India Operations

1.4.1 Board of Directors

Kris Canekeratne

Izhar Armony

Robert E. Davoli

Ronald T. Maheu

William K. O’Brien

Rowland T. Moriarty

Martin Trust

1.4.2 Senior Leadership team

Jim Francis Executive Vice President - Strategic Business Development

John Gillis Executive Vice President - Client Services and Business Development

Bob Graham Senior Vice President - Banking and Financial Services (Strategic Business Development)

Page 5: Industrial Training report

5

Chandika Mendis Senior Vice President and Global Head of Engineering

Frank Palermo

Senior Vice President - Global Technical Solutions Group

Harsha Kumar Senior Vice President - Outsourcing & Transformational Industry Solutions

Madu Ratnayake Senior Vice President and Head of Digital

Paul Tutun Senior Vice President - General Counsel and Assistant Secretary

Sameet Gupte

Senior Vice President and Managing Director, Europe

Srinivasan Jayaraman Senior Vice President and Managing Director: Middle East and Asia Pacific

Tim Wright

Senior Vice President - Global Head of Business Consulting

Vasan Srinivasan Senior Vice President - Banking and Financial Services,North America

Zlatan Lipovaca Senior Vice President and Global Head of SAP Practice

1.5 Virtusa values

Virtusa’s objective as mentioned in website is to create an environment where great people can

do their best work and find the path to realize their full potential. Virtusa values form the nucleus

of their corporate culture. Virtusa culture places great emphasis on teamwork, professional and

personal development and quality of life.

These values act as a foundation for evolving culture and are the basis of operational mode.

Virtusa values preserve the team environment and the founding spirit of the company. They are

Page 6: Industrial Training report

6

the source of our creative ingenuity and success. So, they empower each associate to be driven

by values, nurturing new ideas and fostering excellence.

1.5.1 Pursuit of Excellence

All Virtusans are expected contribute in high performance teamwork. Innovation, creativity and

discovery of the possible solutions are highly encouraged. In addition, to sustain in the rapidly

changing technological environment, the continuous learning and self-improvement is expected

from all Virtusans.

Demonstrate innovation, creativity and resourcefulness

Seek continuous self-improvement and constant learning

1.5.2 Integrity

The honesty and trustfulness is expected in all sort of interactions. Individuals and teams should

demonstrate a high degree of accountability. There cannot be hidden agenda and taking

responsibility for whatever done is anticipated.

Demonstrate genuine sincerity and personal honor

Establish realistic expectations and commitments

1.5.3 Respect

All Virtusans should respect the clients and fellow team members. They should make the clients

respect for Virtusa at every possible occasion by being “Trusted Advisors” to the clients. High

degree of collaboration among the team members is expected. Each should help others towards

solutions, and should not degrade others.

Treat clients and colleagues with genuine respect and value the intrinsic qualities of

each

Support team members , find solutions not fault

Page 7: Industrial Training report

7

1.5.4 Leadership

Virtusans are encouraged to take ownership on what they do. While being a leader to what

oneself does, he or she should encourage others to take leadership on what they do. Teamwork

and positive thinking is anticipated to accomplish difficult tasks. The success is expected to

assign to the team while taking personal responsibility at the failures.

The Lead by example, encourage others to take ownership.

Assign success to the team

The clarity of definition, richness and commitment to adhere this Vision, Mission and Code of

Conduct has been witnessed by the success of Virtusa today. With dynamic workforce providing

best-in-class operations across domains, Virtusa today is at the forefront of Information

Technology innovation. Virtusans are highly motivated, well-rounded individuals with

outstanding credentials, a strong record of professional accomplishments, and best-in-class

technology skills. They share their passion, innovation, ideas and energy with global teams to

solve our client’s most critical and challenging issues.

1.6 Different products / activities of the Industry

1.6.1 Services

Virtusa offers many types of IT services to its clients. These services target the efficiency,

effectiveness and continually improvement of IT applications and systems of the clients.

Business Process Management

Leverage Virtusa's BPM capabilities, business process testing and IT consulting services to

implement successful BPM programs in an organization.

Page 8: Industrial Training report

8

Customer Experience Management

With four fundamental business drivers (cost, collaboration, compliance & continuity) that

define overall success of Virtusa CEM strategy, They offer the key to a successful CEM

implementation.

Enterprise Information Management

Virtusa's DW/BI practice directly addresses diverse industry challenges by offering a holistic

business-result oriented approach to meet the complete information management need of

enterprises.

Independent Software Quality

Virtusa's testing services deliver high value business solutions by leveraging our in-depth

experience in test methodologies, automation frameworks, tools and processes.

Mobility

Virtusa's mobility practice spans the entire life cycle of an organization's mobility needs right

from strategy and consulting to mobility platform assurance by leveraging rich partner networks.

Cloud Offerings

Virtusa's cloud based offerings span the entire software spectrum from assessment to migration,

implementation and integration.

SAP Offerings

Virtusa offers a wide range of financial transformation services built on the SAP platform.

Virtusa's SAP offerings provide end-to-end solutions that cater to the unique needs of clients.

Enterprise IT Services

Virtusa provides a host of services to help organizations in developing robust, scalable solutions

that are designed for success.

Page 9: Industrial Training report

9

Business Consulting

Virtusa's consulting practice is adept at helping clients navigate change and achieve results

through technology and people.

Infrastructure Management

Virtusa’s Integrated IT Infrastructure Management Services (i3MS) enables businesses by

providing business ready nimble infrastructure and ensuring outcome links to needs of

enterprises.

1.6.2 Industries of Service

Aerospace / Defense

Virtusa have been a strong partner delivering reusable ECM solutions to Aerospace/Defense

clients. Virtusa with its unique combination of domain expertise, operational excellence, and

innovative technologies has delivered high-value business transformation and IT services for its

clients in the Aerospace/Defense industry.Virtusa global team provides solutions to meet specific

business needs of clients to gain competitive advantage, optimize and manage costs, improve

time to market and thereby increase overall efficiency and productivity.

Banking and Financial Services

Virtusa possesses deep domain knowledge, experience in Banking & Financial Services and

technology realm by working with Fortune 500 financial institutions and industry-leading

software vendors. Virtusa helps Banking & Financial Services firms transform business

processes, rationalize product portfolios, modernize operations into a cost-effective, strategize

business assets, comply with regulations, managing risks and maximize customer satisfaction.

Their Platforming methodology, blended with Global Delivery Model and proven processes

build comprehensive IT solutions that help financial institutions address business needs, in order

to achieve positive and measurable return-on-investment

Page 10: Industrial Training report

10

Education

Virtusa’s Education segment helps institutions thrive in an open and rapidly changing world.

They strive to help clients make the transition from the industrial age of learning to the digital

age through a portfolio of technology solutions, developed in collaboration with their global

client education community.

We cater to the diverse needs of education by leveraging our functional and technical expertise

across a range of industry segments including: Education, Training & Assessment, Professional

Learning, Educational Publishing.

Energy & Utilities

Energy and utility companies are continuously striving to optimize their business performance

through better technology and business strategy and to remain competitive through cost

containment, safety and compliance. Utility organizations are increasingly looking to manage

processes for better business outcomes adhering to critical regulatory compliances.

Healthcare

Virtusa's mission is to contribute to clients' success by delivering C3ORE Solutions that provide

significant and sustainable value. Virtusa’s solutions and services enable clients – Health Plans,

Providers, Service Providers, and Software Vendors within the Healthcare sector – transform

their business by optimizing operations to gain efficiencies, and expanding their target audiences

by providing a distinctive millennial and consumer engaging experience.

Hospitality & Travel

The industry is investing heavily in innovative solutions that will improve customer retention

rates and drive business revenues. Virtusa understands the need for quick, seamless customer

interactions and the importance of establishing an effective feedback mechanism to stay

competitive in the Hospitality and Travel industry. Virtusa’s hospitality and travel practice offers

business solutions and consulting that will have an impact on client experience, with a focus on

domain-led services through technology excellence.

Page 11: Industrial Training report

11

Independent Software Vendors

Virtusa has partnered with leading Independent Software Vendors (ISVs) to address key

challenges by developing and delivering over 4000 commercial grade software product releases.

Insurance

Virtusa’s complex transformational projects to Insurance firms leverage their deep domain

expertise and technology capabilities to deliver focused business value. They bring solution

expertise in industry specific areas, including business process re-engineering, rule and product

engine configurations, pricing, automation, risk modeling & portfolio management, and business

transformation in the areas of claims, underwriting, and distribution management.

Information Services

Virtusa provides innovative technology solutions for value added and personalized content to

help Information Service Providers meet the growing demands of their end customers. Virtusa’s

vision is to accelerate client’s goals by providing cutting edge technology services to help gather,

store, manage and distribute content effectively and efficiently to its customers. Virtusa industry

solutions are designed to help clients overcome challenges in leveraging their information assets

for better decision making.

Manufacturing

Virtusa leverages its rich domain and consulting expertise to enable organizations to re-invent

their business models without compromising product quality and regulatory norms. Virtusa helps

global manufacturers take advantage of these opportunities while minimizing business risks by

blending our rich domain consulting expertise and platform technology heritage to enable

organizations to re-invent their business models without compromising product quality and

compromising regulatory norms. Virtusa's technology enabled business solutions cater to

organizations across the manufacturing spectrum.

Media and Entertainment

Virtusa’s unique technological capabilities and our rich consulting experience allow to enable

organizations for the rapid shift to multi-channel distribution models.

Page 12: Industrial Training report

12

Rapid shift to multi-channel distribution models including digital platforms in an effort to

provide enhanced, personalized and relevant customer experiences

Cloud-based, cost-effective solutions to deliver services more efficiently over new and

evolving platforms

Addition of reliable revenue streams through content monetization strategies built on

sophisticated campaign management solutions

Telecommunications

Virtusa has always been at the forefront in providing innovative solutions for the

Communications industry. As an IT service provider, Virtusa with a strong base in

Telecommunications services is driven by innovation and thought leadership. With their proven,

comprehensive suite of solutions for in the critical areas of consulting, technology and

outsourcing, advanced development methodologies and cost-effective delivery locations, they

partner with Communication providers to maximize assets, unleash growth, and transform to

succeed.

1.7 Corporate social Responsibility activities towards Sri Lankan

society

Rather just engaging in business Virtusa also engages in CSR activities which concerns the

society and environment. The following activities are few examples of Virtusa’s CSR activities.

As a responsible employer the company itself provides great job opportunities for Sri Lankan

industry.

Campus reach-The main objective of this program is to improve collaboration between

industry and academia. Under this Virtusa does seminars, workshops, develops course

materials to institutes and supports in sponsorships. Especially the industrial placements

Page 13: Industrial Training report

13

provided by the Virtusa are great service as they provide the opportunity to about roughly

50 interns within a year.

Digital reach-Virtusa always tries to build digital literacy within community. It will help

to improve peoples’ quality of life. Usually they go to rural schools and do various

programs to school children.

Page 14: Industrial Training report

14

Chapter 02

2. Training Experience

2.1. Introduction

My Internship at Virtusa started on the 5th of May 2014 and I joined as an Intern of technology

with thirteen other trainees from our batch. After we signed the agreement of training with a

briefing on the contract and the rule and regulations we have to comply within the company, our

internship commenced with a mandatory induction program for all new employees. We were

engaged in this orientation program with several other newly joined employees. This was

conducted by Training and development division of Virtusa and it ensured us a smooth transition

to the company culture and its values.

We had an induction session where we gained a thorough understanding about company, its

divisions, hierarchy, and company culture. Then we did self leaning and was engaged in sessions

and completed examinations which were considered as mandatory for a newbie. And those

Examinations and self learning helped us to gain knowledge on company policies and ethics

company adhere to considering Health and Safety , intellectual property. Intellectual Property

which covered the Virtusa intellectual property process, software licensing, intellectual property

violation threats, copy right policies, patents and the method of including the copyright notes in

the code. We self studied and completed the Information Security certification. Under this we

learned about the information, information security assets, threats and vulnerabilities related to

the internal security. Then it was the GIP certification. Global Innovation process (GIP) is a light

weight software engineering process which combines the best practices of RUP, Agile, CMMI

and years of training undertaken by Virtusa. With the completion of the GIP certification all the

mandatory certifications were completed. I could complete all certifications and exams at first

attempt successfully after gaining required knowledge.

Page 15: Industrial Training report

15

We participated for a Human resource session which included the history of Virtusa on how it

was established and currently where the ATC are established and the PIRL values which are

Pursuit of excellence, integrity, respect and leadership. For the resource management session we

were briefed about how the resource allocation process works and how the resources are

managed within the company. And also we were taught how to access the Velocity Human

Resource Management Service tool (VHRMS).This allowed us to access the training materials

and also about how to apply for leave and view our attendance details. And we were given

guidance on other Virtusa internal applications of V+, Vingo , Vtube and Yammer.

2.2 GTO ERA- Insight

The project I was allocated for my six month internship period was ERA- Insight. It is a GTO

(Global Technology Office ) project of Virtusa. GTO is the place where most of Research and

development work of virtusa is taking place.

2.2.1 Introduction.

ERA- Insight : Improving Effectiveness of the Software Delivery Organization

Poor code quality and low developer productivity are some of the critical challenges plaguing

today's CTOs as they manage software development initiatives. While the need to improve

Page 16: Industrial Training report

16

software quality is right on top of IT managers' agendas, most face challenges in identifying

specific quality issues. Another key concern is the predictability of outsourced software delivery.

Virtusa's long association with Independent Software Vendors has given us unique insights into

delivering high-quality software using governance tools to incent and manage improvements in

code quality, reuse and productivity.

Virtusa's proprietary ERA Insight tool:

Comprehensive code quality and reuse governance solution.

Assists clients in monitoring enterprise-wide software quality and reuse across code bases

and institutes remediation plans to improve development efficiencies.

Provides dashboard visibility on a variety of code quality and reuse metrics across code

bases in the organization

Provides drill-down across multiple parameters such as code bases and technologies into

specific details of each metric allowing root cause analysis of code quality issues

Lowers overall cost of application development and maintenance

Improves code efficiency

Enhances employee productivity through systemic improvements in code quality

Key features include:

o Extensive dashboard and drill-down capabilities

o Wide variety of code metrics

o Govern reuse

o Wide technology support

o Manages code quality defects

o Powerful change code analysis

o Geared for enterprise usage

Service offerings include:

o ERA Insight managed service

o Code quality governance using ERA Insight

o Snapshot code assessments using ERA Insight

Page 17: Industrial Training report

17

This project is headed by Mr. Padman Reginold and tech lead is Mr. Raj Azhar Ali. And I was

allocated to this team with three other colleagues of my batch , Nadeera Kodithuwakku, Dilani

Alwis and Iresh Thilakarathne.

2.2.2. PostgreSQL Dataloading

The first task I was allocated was PostgreSQL dataloading and it was an individual task. It was

supposed to migrate existing dataloading process with MsSQL to PostgreSQL. PostgreSQL,

often simply "Postgres", is an object-relational database management system (ORDBMS) with

an emphasis on extensibility and standards-compliance. As a database server, its primary

function is to store data, securely and supporting best practices, and retrieve it later, as requested

by other software applications, be it those on the same computer or those running on another

computer across a network (including the Internet). It can handle workloads ranging from small

single-machine applications to large Internet-facing applications with many concurrent users.

PostgreSQL implements the majority of the SQL:2011 standard and is ACID-compliant

and transactional (including most DDL statements) avoiding locking issues using multiversion

concurrency control (MVCC), provides immunity to dirty reads and full serializability. Postgres

handles complex SQL queries using many indexing methods that are not available in other

databases and has updateable views and materialized views, triggers, foreign keys and supports

functions and stored procedures. And it supports cross platform development as well.

So the motivation behind migration was having advanced free open source DBMS that could be

replaced with MsSQL server which is currently used by ERA-Insight. ERA-Insight being a

proprietary product, migration could help to reduce their production cost and maintenance cost.

Page 18: Industrial Training report

18

Most of the features provided by Postgres are much similar to MsSQL. But still there were

several remarkable differences. So to startoff I had to study on postgreSQL and as well as on

prevailing Database and Dataloading procedure.

My Reporting Manager assigned was Mr. Eranda Lakshan Karannagoda and he was guiding me

and supervising throughout this process. He gave me a descriptive knowledge transfer session on

current dataloading process of ERA-Insight. This process was initiated by a intern before me and

he/she had done the table schemas with PostgreSQL. Therefore I took the backup of that

database restored in local postgres server and started referring.

Also I had to setup the environment with Apache tomcat configuration. And also built bot ,

submission processors and web services with ant build tool.

2.2.2.1 Insight bot

Insight bot is an automated task handler used in dataloading process. It comprises ow its own

database of H2 database. Insight bot will be doing set of tasks assigned. After the submission

processor initiate the dataloading process, Insight bot copy the contents already in the database

into csv(comma separated files). This was done by export_prod_snapshot_query_out bat files. I

had to convert these bat files to support postgres.

Example:

REM Database properties (manually set before deploy)

cmd.exe /c chcp 1252

SET PGHOST=localhost

SET PGDATABASE=InsightDB

SET PGUSER=postgres

SET PGPASSWORD=***********

REM Get first command line argument as ERA_Module_Id

SET ERA_Module_Id=%1

REM Get second command line argument as OUTDIR

SET MODULE_SPECIFIC_DIR=%2

SET OUTDIR=%MODULE_SPECIFIC_DIR%\ProdSnapShot

Page 19: Industrial Training report

19

MKDIR %OUTDIR%

echo "outdir show!"

echo %OUTDIR%

SET TEMP_CSV_FILE=%OUTDIR%\temp.csv

SET CSV_FILE=%OUTDIR%\A1.csv

ECHO.

ECHO Creating %CSV_FILE%...

ECHO A1_Id^|External_Id^|Name > %CSV_FILE%

psql -h %PGHOST% -U %PGUSER% -d %PGDATABASE% -c "COPY (SELECT

A1_Id,External_Id,Name FROM A1 WHERE A1.A1_Id IN (SELECT

Code_Unit.A1_Id FROM Code_Unit WHERE Code_Unit.ERA_Module_Id =

%ERA_Module_Id%)) to '%TEMP_CSV_FILE%' WITH DELIMITER '|' "

Likewise I converted script of export_prod_row_count bat files and completed initial process of

dataloading with Insight bot within few weeks.

2.2.2.2 H2 Database

Then I worked on H2 database in Insight bot. This has prod tables and feed tables created by

insight bot processing. Now in the migration process I had to convert these H2 database table

schemas and dataloading scripts and mappers to suit postgres.

H2 is a relational database management system written in Java. It can be embedded in Java

applications or run in the client-server mode. The disk footprint (size of the jar file) is about 1.5

MB. It is possible to create both in-memory tables, as well as disk-based tables. Tables can be

persistent or temporary. Index types are hash table and tree for in-memory tables, and b-tree for

disk-based tables. All data manipulation operations are transactional. Table level locking

and multiversion concurrency control are implemented. The 2-phase commit protocol is

supported as well, but no standard API for distributed transactions is implemented.

Feed tables contain the data of new record from set of reports generated by Analayzer. And the

prod tables contain the existing data table details in database.

Page 20: Industrial Training report

20

Figure: H2 database with feed and prod tables

2.2.2.3 Submission Processor

Submission processor is playing a vital role in dataloading process. After the prod tables and

delta tables are created, Submission processor creates delta csvs of the tables. I created

Page 21: Industrial Training report

21

load_delta_csv.sql and delta_load.sql files for submission processor to create delta and load delta

into temp tables in Insight database.

Example: Create A1 delta tables.

-- Insert A1

COPY z_a1_ins

FROM '#DELTA_CSV_LOCATION#/DELTA_A1_INS.csv'

DELIMITER '|'

CSV HEADER;

-- Trim the exteranl ids

UPDATE z_a1_ins

SET external_id = LTRIM(RTRIM(external_id));

UPDATE z_a1_ins

SET hash =encode(digest(z_a1_ins.external_id,'sha1'),'hex')::bytea;

After the scripts and configurations was done successfully dataloading process changed its status

to 155. Which means it has completed stage 1 in dataloading process.

2.2.2.4 PostgreSQL functions.

Then I was required to convert set of MsSQL stored procedures which were used in dataloading

procedure to postgres. In postgres stored procedures are replaced by postgres functions. I studied

on the differences and rewrote all scripts in Pgplsql which is the SQL procedural language used

in postgres functions.

Some basic differences are:

In MSSQL, a stored procedure is a pre-compiled set of sql commands.

A stored procedure:

- can have many input and output paramters

- can be used to modify database tables/structures/data

- are not normally used inside insert/update/delete/select statements

Page 22: Industrial Training report

22

User defined functions in postgres come in several flavors. Depending on the type of function

written, functions:

- can have multiple input parameters, but only return a single value (i.e. string concatenation)

- can accept a set as an input, return a single value (i.e. FindLargestPig(ListOfPigs) )

- return a table (i.e. select * from ExplodeString("this is a list of words") )

- can be used in select/insert/update/delete statements

- CANNOT be used to modify database tables/structures/data

Accordingly I wrote the scripts of Summarize_Display_Data_Master_Module,

Summarize_Display_Data_Module,Summarize_Defect_Display_Data,Update_Project_Jobs_Stat

us,Summarize_Display_Custom_Project_Dev_metrics,re_populate_snapshot_churn_data_for_er

a_module, Truncate_temp_tables_and_audit_actions etc.

2.2.2.5 MyBatis Mappers for postgres

MyBatis is a first class persistence framework with support for custom SQL, stored procedures

and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of

parameters and retrieval of results. MyBatis can use simple XML or Annotations for

configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to

database records.

I had to write these Mybatis mappers to support newly written postgres functions.

The Mapper XML files have only a few first class elements (in the order that they should be

defined):

cache – Configuration of the cache for a given namespace.

cache-ref – Reference to a cache configuration from another namespace.

resultMap – The most complicated and powerful element that describes how to load your

objects from the database result sets.

sql – A reusable chunk of SQL that can be referenced by other statements.

insert – A mapped INSERT statement.

update – A mapped UPDATE statement.

delete – A mapped DELETE statement.

select – A mapped SELECT statement.

Page 23: Industrial Training report

23

Example: Job_Queue_Updater_Mapper.xml for Update_Project_Jobs_Status.sql function.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper

namespace="com.virtusa.gto.report.mapper.JobQueueUpdaterMapper">

<update id="updateProjectJobStatus" parameterType="map">

UPDATE

project_level_job SET status = #{status},

statusmessage = (SELECT job_status.job_status FROM job_status

WHERE job_status.job_status_id = #{status}::Integer)

WHERE Id = #{jobId};

</update>

<update id="updateProcessingStartTime" parameterType="map">

UPDATE

project_level_job SET processingstarttime = now()

WHERE id = #{projectJobId};

</update>

<update id="updateProcessingEndTime" parameterType="map">

UPDATE

project_level_job SET processingendtime = now()

WHERE Id = #{projectJobId};

</update>

<update id="callUpdateProjectJobsStatus" parameterType='Map'

statementType="CALLABLE">

{ CALL

update_project_jobs_status(

#{value,

mode=IN,jdbcType=INTEGER})}

</update>

</mapper>

2.2.2.6 Errors and Exception Handling

Throughout the process of dataloading migration I came across many errors and exceptions in

the process. I had to read out the process terminal and identify the exception and handle it and

eliminate errors accordingly. Some of the errors were Numeric value out of range, Column count

Page 24: Industrial Training report

24

does not match, Data conversion error handling ; converting ‘t’ , defect_Id not present in the

table defect, dependencies unmet errors.

2.2.2.7 Conclusion

I was able to complete my task of migrate the dataloading process to new Insight Database of

postgres successfully for any given set of reports from analyzer. I could perform the task within

given time period under supervision and advice from my Reporting Manager Mr. Karannagoda.

It was a good experience for me to seek the depths of database technologies and use them

efficiently. And also I did the testing for use case scenarios before checkin the scripts and the

backup of new database to Team foundation Server used by ERA-Insight.

2.2.3 Review Board- Code Review Tool for ERA-Insight

The second task assigned was a requirement came from Senior Architect Mr. Padman Reginold

on a code reviewing tool for ERA-Insight. As ERA-Insight is a tool concerning adhering into

best practices in coding it was required to have a code review tool facilitating the current manual

process effectively. Therefore first I was required to study on available open source solutions and

come up with a feasible, efficient solution to deploy. Integrate and develop to customize.

After studying on several available solutions and discussions with teach lead and other team

mates Review Board was the solution suggested. Thereafter I was required to do a proof of

concept (POC) on Review Board.

Review Board is a powerful web-based code review tool that offers developers an easy way to

handle code reviews licensed under the MIT license. It scales well from small projects to large

companies and offers a variety of tools to take much of the stress and time out of the code review

process. Review Board is written in the Python programming language and makes use of the

Django web framework. For this I started developing on Ubuntu server since Review Board did

not support Windows for development.

Page 25: Industrial Training report

25

2.2.3.1 Review Board Deployment

Setting up a Server

I chose to use Apache2 with mod_python, as advised by the Review Board team. Apparently

there are some issues with running it as fastcgi. To get an apache install capable of serving

python pages.

sudo apt-get install apache2

sudo apt-get install libapache2-mod-python

sudo a2enmod python

Setting up storage

MySQL and the python bindings for MySQL

sudo apt-get install mysql-server

sudo apt-get install python-mysqldb

For faster responses, we are going to install memcache and its python bindings

sudo apt-get install memcached

sudo apt-get install memcached-dev

sudo apt-get install python-memcache

create a database and a database user for Review Board

mysql –u root -p

mysql> create database reviewboard;

mysql> create user 'rb'@'localhost' identified by 'rb_password';

mysql> grant all on reviewboard.* to 'rb'@'localhost';

Page 26: Industrial Training report

26

Setting up Subversion and Git

sudo apt-get install patch

sudo apt-get install subversion

sudo apt-get install python-svn

sudo apt-get install python-git

Getting Review Board

Reviewboard is installed using easy_install. For that have to install setup tools

sudo apt-get install python-setuptools

sudo easy_install reviewboard

Create Site

Reviewboard site is created for the deployment

sudo rb-site install /var/www/reviewboard

Configuring your site

First need to allow the apache server to manage uploads directory with:

sudo chown -R www-data /var/www/reviewboard/htdocs/media/uploaded

Copy the site configuration into apache and enable

sudo cp /var/www/reviewboard/conf/apache-modpython.conf

/etc/apache2/sites-available/reviewboard

sudo a2ensite reviewboard

sudo /etc/init.d/apache2 restart

It's time to fire up the browser and head to http://server_address/rb and log in with the

administrator credentials provided in site deployment.

Page 27: Industrial Training report

27

2.2.3.2 Git repository Setup

The source control manager used by ERA-Insight is Team Foundation Server. So I faced the

problem of integrating Review Board since it did not support TFS. I discussed the issue and then

we came up with the solution of setting up a Git repository as a long term requirement of ERA-

Insight moving to Git.

Accordingly I setup a git repository which servers over Git:// protocol in ubuntu server using

gitweb , git-core and apache2. And after that anyone could successfully access this repository

locally using a git client.

Figure: Git repository access from a local machine and clone a project from git server

2.2.3.3 Git-TF

Then I used Git-TF bridge to access source control of TFS for git.

Git-TF is a set of cross-platform, command line tools that facilitate sharing of changes between

Microsoft Team Foundation Server, Visual Studio Online and Git. Latest release: Git-TF 2.0.3.1

Download and Extract the contents of git-tf-2.0.3.20131219.zip to a folder on local machine, i.e.

Add the path where the extracted Git-TF (i.e. C:\git-tf) to PATH environment variable.

C:\git-tf on Windows, or /user/git-tf on Mac/Linux.

Page 28: Industrial Training report

28

Add the path where java.exe is installed (i.e. C:\Program Files (x86)\Java\jre7\bin) to PATH

environment variable.

Check the commands in git repository

$ git tf configure http://myserver:8080/tfs/mycollection

$/TeamProjectA/Main

$ git tf pull --rebase

$ git checkout master

$ git commit -a -m "merge commit"

$ git tf checkin

$ git push

To cache username and password for the repository, can set these in your .git/config:

$ git config git-tf.server.username myusername

$ git config git-tf.server.password mypassword

Page 29: Industrial Training report

29

Here is the .git/config file after configuration

Git tf pull Instance – fetching changes from TFS repository

Git tf checking instance – checking changes done in git repository to TFS repository

Figure: Git-tf process model

Page 30: Industrial Training report

30

2.2.2.4 RB Tools

After successful integration I used RB tools to create diffs and review requests.

RBTools is a set of client tools to use with Review Board.

The recommended command-line interface is the rbt tool. This tool runs on Windows, Linux,

and MacOS X, and allows executing a number of useful sub-commands. rbt has the following

usage:

$ rbt [--version] <command> [options] [<args>]

Installing RBTools

Once Python and Setuptools are installed, you can install RBTools just by typing:

$ easy_install -U RBTools

There are many ways to configure rbt in order to associate a Review Board server with a

repository. The ideal setup is to configure a repository to point to a Review Board server, so that

users can use rbt out of the box, but there are other methods available.

Repository Configuration

All repository types support a .reviewboardrc file, which is the recommended way to configure

your repository. Through here, you can specify the URL to your Review Board server, the

repository name, and provide some helpful defaults.

$ rbt setup-repo

Enter the Review Board server URL: http://reviewboard.domain.com

Username:

Password:

REVIEWBOARD_URL = "http://reviewboard.domain.com "

Page 31: Industrial Training report

31

REPOSITORY = "Name"

$ git add .reviewboardrc

$ git commit -m "review board configuration file" .reviewboardrc

By default, RBTools will try to determine the repository path and pass that to Review Board.

This won’t always work in all setups, particularly when different people are checking out the

repository with different URLs.

You can use the REPOSITORY setting to specify the name of the repository to use.

Here is the created .reviewboardrc file

Git Properties

Repository information can be set in a reviewboard.url property on the Git tree. Users may need

to do this themselves on their own Git tree.

To set the property on a Git tree, type:

$ git config reviewboard.url http://reviewboard.example.com

Custom User Configuration

You can provide your own defaults for RBTools by creating a .reviewboardrc file in your HOME

directory (usually /home/username on Linux)

You might use this to automatically open your browser when posting a review request (by setting

OPEN_BROWSER = True), or to disable your HTTP proxy (ENABLE_PROXY = False), for

example.

Page 32: Industrial Training report

32

Use RBTools

Post

rbt post simplifies both creating and updating review requests. It can look at your source

directory, generate a diff, and upload it to a new or existing review request on an associated

Review Board server.

$ rbt post [options] [revisions]

Post all uncommitted changes in working copy and open new review request:

$ rbt post HEAD

Post diff file and open new review request:

$rbt post --diff-filename=testdiff.diff

Create diff upon revision range and open new review request:

$ rbt post r1 r2 --svn-show-copies-as-adds=n

Post all uncommited changes in working copy and exchange diff in review request #3:

$ rbt post -r 3

Create diff of specific files and open new review request:

$ rbt post file1.php file2.php

This is how particular review request has arrived on Review Board

Page 33: Industrial Training report

33

Figure : Creating a review request on a diff

2.2.2.5 Automating rbt post

I could do the POC successfully and then there came up several requirements to enhance the

code review process of Review Board. Main requirement was to automate the process of creating

diffs and publishing review requests without the user being involved in the process doing

commands on the terminal. So I researched and automated the rbt post on user’s behalf using

linux scripts, git hooks and rbt commands.

This works through a combination of a special Review Board user and the --submit-as option.

$ rbt post --username=SPECIAL_USER --password=PASSWORD --submit-

as=ANOTHER_USER

Sample git hook for rbt post automate

#!/bin/sh

echo "post-commit started"

#rbt post HEAD

echo "post-commit finished"

So once commit is done it automatically starts creating a review request for particular commit.

Page 34: Industrial Training report

34

A number of options to rbt post can be set by default in .reviewboardrc. These can go either in

the repository’s or the user’s .reviewboardrc file.

The options include:

BRANCH (--branch)

DEBUG (-d)

ENABLE_PROXY (--disable-proxy)

GUESS_DESCRIPTION (--guess-description)

GUESS_FIELDS (-g)

GUESS_SUMMARY (--guess-summary)

MARKDOWN (--markdown)

OPEN_BROWSER (-o)

P4_CLIENT (--p4-client)

P4_PASSWD (--p4-passwd)

P4_PORT (--p4-port)

PARENT_BRANCH (--parent)

PASSWORD (--password)

PUBLISH (-p)

REPOSITORY_TYPE (--repository-type)

SUBMIT_AS (--submit-as)

TARGET_GROUPS (--target-groups)

TARGET_PEOPLE (--target-people)

TRACKING_BRANCH (--tracking-branch)

USERNAME (--username)

Page 35: Industrial Training report

35

Then I created remote_repo_script.sh and submit-post-review.sh and post-receive-hook together

for more automating both git tf pull and rbt post processes together.

2.2.2.6 Use post-review

Post review is another solution I researched on for rbt post process. It is also a supportive tool for

creating diffs and review request. Post-review is a command line tool for Windows, Linux and

MacOS X that simplifies both creating and updating review requests. It can look at your source

directory, generate a diff, and upload it to a new or existing review request on an associated

Review Board server. This is the stable previous version of RBtools and still can be used based

on requirement of the purpose.

Install post-review

$ apt-get install python-setuptools

$ sudo easy_install RBTools

The easiest way to make sure your pointing at the right Reviewboard instance is the

.reviewboardrc file in your home directory. You only need to add one line to that file, which is:

REVIEWBOARD_URL = "https://path.to.your.instance"

If you are working with multiple instances that map to different repos, you can set the

Reviewboard instance for the specific repo as well:

git config reviewboard.url https://path.to.your.instance

Reviewing a Branch

Once your branch is ready to be merged back into your project, you want to get it reviewed. You

can send a review equivalent to “this branch diffed against master” like so:

post-review --guess-summary --guess-description

Page 36: Industrial Training report

36

Reviewing one commit

Instance when only having one commit to review. In theory this should probably be done on a

bugfix branch. There are other good use cases for only reviewing the latest commit as well. It’s

done like so:

post-review --guess-summary --guess-description --parent=HEAD^

Reviewing arbitrary number of commits

It’s also possible to review any number of previous commits. It looks a lot like the previous

command:

post-review -o --guess-summary --guess-description --parent=HEAD~4 #To

review last 4 commits.

Page 37: Industrial Training report

37

Figure : Diff Viewer

2.2.2.7 Active Directory

Then I configured Active Directory to Review Board to enable users to login with their existing

credentials used at Virtusa.

Active Directory (AD) is a directory service that Microsoft developed for Windows

domain networks and is included in most Windows Server operating systems as a set of

processes and services.

Page 38: Industrial Training report

38

An AD domain controller authenticates and authorizes all users and computers in a Windows

domain type network assigning and enforcing security policies for all computers and installing or

updating software. For example, when a user logs into a computer that is part of a Windows

domain, Active Directory checks the submitted password and determines whether the user is

a system administrator or normal user.

Active Directory makes use of Lightweight Directory Access Protocol (LDAP) versions 2 and 3,

Microsoft's version of Kerberos, and DNS.

2.2.2.7 Conclusion

I did most of the enhancements as requested in the last few weeks of my internship and then

created user manuals and documentations for setup and configuration for future use by the team.

I did two demonstrations on the Review Board procedure and reviewing mechanism to team

members and to the person who was assigned the task to carry forward Mr. Ishan Ambanwela.

Throughout the second task Mr. Ishan Ambanwela and Mr. Vicknesh Subramaniam helped a lot

guided me. And also several times Senio architect Mr. Padman Reginold and Tech lead Mr. Raj

Azhar Ali supervised me and checked and added requirements as required. So it was a good

experience for me to work on a open source tool, ubuntu operating systems and participate in a

product development from its requirement gathering phase. Also the opportunity I got in working

with architects and understand how they view the requirements and handle technologies was

great and priceless.

Page 39: Industrial Training report

39

Chapter 03

3. Discussion and Conclusion

3.1 Training Experience

3.1.1 Technical Experience

The industrial training that I went through within the last few months brought in new

technologies and expanded my knowledge in the IT industry. I got the opportunity to put known

concepts in to practice in real projects and to learn new concepts through applying them. Meeting

with deadlines, keeping the code quality, trying various approaches to determine the best method

and finally completing the project with success were experiences that gained throughout the

training period.

Also during the training I learnt that it is always good to try new things like learn new

technologies and languages rather than only sticking to the things I know best. Also even if you

think your good in something there is always something new that you haven’t learnt

before.During these months I used technologies pgplsql, Python, Django web framework, Linux

shell scripting which I was not familiar before. Also I got the opportunity of self studying and

apply the technologies appropriately.

In addition, to the technologies I worked with since I had to work in the Virtusa Operating

system which is a Ubuntu based Linux operating system I got the exposure to the open source

environment as well. And also I got the exposure to SDLC , agile methodologies with tasks

assigned for me. I also got the opportunity to learn new technologies through Virtusa tech talks,

meetups and knowledge sharing sessions we had in our team weekly. Also I got the opportunity

of learn and being adhere to best coding practices since our product ERA-Insight was

emphasizing on code quality and being ERA-compliant all the time.

Page 40: Industrial Training report

40

3.1.2Non-Technical Experience

Blending with the Corporate Culture

The friendly and warm environment received from the Virtusa and our team is unbelievable.

Despite being an intern we could enjoy almost all the facilities and benefits a normal employee

enjoys. In the training period I could gain the real life experience of software engineer as

responsibilities were assigned. And everyone in the team treated us with no difference and we

could work with them hand in hand, discuss issues, give suggestions anytime. That was a really

good experience for us to step in to corporate world with much confidence.

I got the opportunity to join the organizing committee of Virtusa Big data meetup and contribute

to make it a success. We joined the ERA-Insight cricket fiesta and spent a whole day with much

fun and joy with the team mates. In team we were working with such a team spirit and

everybody treated everyone with much respect and care. So that working was not stressful and I

enjoyed my work and I think that is the reason I could complete my tasks successfully within

time limits. During the training periods we were lucky to participate in treats organized by our

team members for celebrating their birthdays, promotions. We were fortunate to witness the

moment of ERA-Insight being awarded at NSBQA 2014 and to share the moments with joy. We

are proud to have being a part of a award winning team and have contributed a award deserved

product.

Training and Knowledge Enhancement

Software engineering is a field which is so dynamic and new technologies are coming to the

industry. So especially a IT person should be able to gain the up-to-date knowledge.

Virtusa organizes comprehensive set of training sessions, tech talks regarding new technologies.

Also we had knowledge sharing sessions in our team weekly so that members can share what

they know and what they excellence in to others.

Page 41: Industrial Training report

41

Presentations

We had ERA-Insight presentation sessions in team for interns to improve their soft skills. In my

turn I did a presentation on “Sustainable Tourism” and team commented to good things I showed

in my presentation skills and also suggested me several areas where I should consider and

improve on.

Also I had to do presentations and demonstration on the project background knowledge that I

researched on and after that POC. It was a good opportunity to improve my soft skills as well as

knowledge. It also improved my creative skills when arranging the presentations.

Also we were engaged in a full day session of presentation skills building workshop done bt

Training and Development division where I got the opportunity to improve my presentation

skills more with their guidance and suggestions.

Interacting with experts

Within the training period I got the interaction of many respected expertise who are leaders of

Virtusa who steer it towards success. The HR team gave us this opportunity through monthly

meetings with leaders at Virtusa. We were really inspired on their individual stories of success

and as well as success story of Virtusa.

The friendly nature of them while help us in technical matters were amazing to be considered. I

got the guidance of well experienced technical people such who are with the designation of

senior technology consultants, technology consultants, senior engineers, software engineers and

associate software engineers.

Roles played by University, NAITA and Virtusa

When the overall training program is considered the National Apprentice and Industrial Training

Authority (NAITA) and Training Division of the University of Moratuwa have done a great job

to make this training a successful one. The guidance and help they provided throughout the

Page 42: Industrial Training report

42

placement is remarkable. It was a honor and great pleasure for us the presence of Dr.

Lochandaka Ranathunga and Ms. Ashika Fernando on graduation ceremony at Virtusa. We

believe that we maintained the faculty standards and showcased values at our working place, So

that the recognition we had will thrive for our next junior batches as well.

3.2 Conclusion

During my training period I have got a good technical knowledge regarding Information

Technology. The concepts, theories learned in university were used in real life projects. And

most importantly I learnt how to pickup things fast and practice. I understood how software

engineering process and project management happen in the industry. I got knowledge regarding

many non-technical matters such as how corporate culture works. I could improve my

interpersonal and soft skills as well while being involved in the activities, doing presentations.

During the 26 weeks in the industry I am very satisfied with the overall training I went through.

The experience I gained throughout this period has been a great time period that has brought

much value to my IT career