Software Companies: 1) Product Based Company

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29
At a glance
Powered by AI
The key takeaways are about different types of companies in IT like product based, service based and outsourcing companies and their differences. It also talks about types of projects and roles in a project.

The different types of companies discussed are product based companies, service based companies and outsourcing companies. It highlights the differences between them in terms of work focus, packages, interview process etc.

The different types of projects discussed are scratch development projects, maintenance projects and migration projects. It explains what each type of project involves.

Software companies:

1) Product based company: product based company we will develop project/product their ideas
and they will sell then to customer

EX: Microsoft, IBM, Samsung, oracle, dell etc...

In product Based companies Interview process will be little bit difficult and packages will be very
high

--> They will conduct Interview rounds on below concepts;

A) Data Structures
B) Algorithm
c) Design patterns
D) System Design
E) Problem Solving
f) Coding test etc...
-->packages structure in product based companies

Years of ecp *5

2) Service based companies: service based companies will develop projects according to client
required

EX:tcs,Infy,Wipro,Accenture ,Deloittle,CGI,CTS,CG etc..

--> Inservice based company’s packages will be less when compare with product based will be
fewer packages

->In Service Based Companies, They will concentrate on latest technologies in interview rounds.
A) Spring boot.

b) Rest API

c) Micro services

D) Angular/rest

e) Tools (Jenkins, Docker, Jira, AWS etc...)

--> Service Based companies package

No of years Exp*2.5
3) Outsourcing companies
--> There companies will recruit the peoples and will send to client.

(payrole) (client)

HCL--------Microsoft.

======================================================================

what is a project?
-->collection of software programs is call one project

-->softwar project is the complete procedure of software development from requirement to


testing and maintening and carried according to macking type of projects in It industry:

1) Scratch development projects

2) Maintenance project

3) Migration projects

1) Scratch development projects:

-------------------------------

The projects which are developing from very beginning are called as scratch development projects.

2) Maintenance project:

-------------------------

-->One software project is released into market, we should be managing and monitoring that
application for long run such kind of projects are call maintenance project

-->in support we will have below type of work

a) Change request: changing existing functionality to application

b) Enhancements: add new function

c) Bug fixing: fixing the problems in the code is call bug fixed

3) Migration projects:

---------------------

Changing the project from one tech to other techs is call migration projects

Main frames-->java
Types of Domain

================

1) Functional domain

2) Technical Domain

-->Functional domain represents business area of our projects

A) Banking

B) Insurance

c) Telecom

D) Healthcare

e) Retail etc...

-->technical domain represents what technologies we are using to develop project

A) Java

b).Net

C) Python etc...

Types of teams

----------------

..>in project development mainly we can see 2 types of teams

A) Onshore team

b) Offshore team

-->the team which is working in client location is called onshore team.

--->the team which are not working in client location is called offshore.

-->Both off sure and onshore we will have below teams

A) Functional team

b) Dev team

C) Testing team

D) Divots team

e) Cloud team
--->onshore and offshore team members will communicate through bridge calls.

Role Chat In IT industry:

---------------------------

Real-time Tools
- Maven
- JIRA (Project Management)
- SVN, GIT, Bit bucket
- Log4j
- Log Monitoring (Putty, WinScp, Splunk)
- JUnit
- Mocking (Easy Mock, Power Mock, Wire Mock)
- Jacocco (code coverage)
- SonarQube (code review)
- JMETER (performance testing)
- POSTMAN & SOAP UI (API testing)
- Swagger (API documentation)
- MAT (Memory Analyzer Tool)
- Jenkins (CI & CD)
- Docker (Containerization)
- AWS

Build tools: maven

Version Control Tools


 Multiple developers will be involved in project development.
 Developers will be working form different locations problems with team.

How to integrate all the developers’ source code?

 How to monitor changes happened to source code?


 to resolve above to problem we can use version control toll
 Ex: SVN, GIT HUB and Bit Bucket etc...

Project Management tools:


 AS multiple resources(peoples) will be working in the project we need to manage work
accordingly
 we should have a track of what are the tasks given by client, which are completed, which are
in process and which are not yet started
 We should have a track of who is working on what task
 We have a track of bugs identifies by testers.
 All the work related to project we can manage using project management tools

Ex: JIRA
Logging:
 Logging is the process of storing application execution and application exception details to a
file/console.
 Using log message we can track the root cause of the bug.
 to generate log messages we have some tools like below
 EX: Log4J, Log4J2, Logback and Log stash etc...
 to see the log messages we will use below tools
A) Putty
b) WinScp

c) Splunk (High Demand)

Unit testing tools:

 it is the process of testing unit amount of work


 By using unit testing we can identify bugs available and we can provide bug deer code
 To perform unit testing for java application we will use J-unit.
 AS part of unit testing we will use Mock objects

EX: Mosquito, Easy mock, Power Mock, Wire Mock etc....

Performance testing tool:


 When we develop and application we should check application response time and
application stability.
 To implement perform testing for the application we will use JMETER tool.
 continuous Integration & Continues Delivering(CI&CD)
 multiple developers will be making changes to source code on daily basis
 whenever changes made to source , we should deploy latest code to server(Build & deploy)
 To automate build and deployment process will use CI & CD tools

EX: Jenkins

Code Review Tools:


 Code review is the process of verify the developers code
 Using code review we can verity coding standards followed to not
 To perform code review we will use 'SonarQube' tool
Real-time tools introduction
1) Build tools (Maven, Gradle)
2) Version control tools (SVN, Git Hub and Bit Bucket)
3) Project Management tools (JIRA)
4) Logging tools (Log4j, Log4J2, Logback and Log stash)
5) Log monitoring tools (Putty, WinScp and Splunk)
6) Unit testing tools (Junit)
7) Mocking tools (Easy Mock, Power Mock, Wire Mock and Mockito)
8) Code Coverage Tools( Jacocco )
9) Code review tools (PMD, SonarQube)
10) CI & CD tools (Jenkins)
11) Performance Testing tool (JMETER)
12) Memory Analyzer Tool (MAT)
13) Containerization (Docker)
14) Messaging Queue (JMS, ActiveMQ, Rabbit MQ and Apache Kafka)
15) Reports tools ( Apache POI api, I text Puff)
16) Ape Testing tools (POSTMAN, Soap UI and Swagger UI)

Application development process:


o Create project folder structure
o Download required jar files
o Add jar files to build path
o Develop components
o Develop Unit test logics using Junit
o Compile project
o Execute Junits for unit testing
o Package our application
o Deploy our application
o As part of application development build & deployment process is mandatory
o To automate build and deployment process build tools are available in the market

Ex: Ant, Maven and Gradle

Apache maven
It is a build tool which is used to simply application build process.

Maven’s Objectives

Maven’s primary goal is to allow a developer to comprehend the complete state of a development
effort in the shortest period of time. In order to attain this goal, Maven deals with several areas of
concern:
 Making the build process easy
 Providing a uniform build system
 Providing quality project information
 Encouraging better development practices

-> For every maven project we will have pom.xml file

-> POM stands for Project Object Model. In this file we will configure all the dependencies required
for our projects.

Maven Environment Setup

-> Download maven software from below location

https://maven.apache.org/download.cgi

-> Extract the maven zip file

-> Add MAVEN_HOME in System Variables

MAVEN_HOME = C:\apache-maven-3.6.0

-> Add Maven PATH in System variables

PATH = C:\apache-maven-3.6.0\bin

-> After completion of the above steps execute below command to verify maven setup

-> Open cmd

-> Execute mvn -v

-> It should print maven version

Note: If maven version printing in the console, that means our setup, is successful.

> Maven is a build tool given by Apache org.

-> Maven is used to automate application build process

-> Maven provided archetypes to create the project

-> Archetype represents type of project

Quick-start-archetype: Maven Standalone application

Web-archetype: Maven web application


Note: Maven supports more than 1500 archetypes

Note: In IDE, by default Maven plug-in will be available.

Maven project folder structure

01-Maven-App

- src/main/java ===> Business classes we will write here

- src/test/java ===> Junit classes we will write here

- Maven Dependencies ==> Dependencies(jars) will be displayed here

- target ===> .class files will be generated here

- pom.xml ===> It is maven config file

-> We can get maven dependencies from mvnrepository.com

-> Maven will take care of transitive dependencies

Maven Repositories
1) Central Repository

2) Remote Repository

3) Local Repository

-> Central Repository maintaining by Apache Org

-> Remote Repositories will be maintained by private companies

-> If we use maven, then in our local machine maven repository will be created that is called Local
repository.
-> What is pom.xml?

-> When we create maven project, it contains pom.xml file. In that file we are going to configure
Maven dependencies.

Note: Maven dependencies we can search in mvnrepository.com

-> When we add dependency in pom.xml file, first maven will search for that dependency in local
repository. If it is available then maven will add that dependency to project build path. If
dependency is not available in local repository, then it will be downloaded from Central Repository
and will add into local repository.

How to work with Remote Repository?

o Every company will maintain their own repository for application development.
o To work with remote repository, company will provide setting.xml file
o We should add that settings.xml file in our IDE (Window -> Preferences -> Maven ->
User Settings -> select settings.xml -> Apply-> Close)

Maven Goals

 Maven provided several goals to perform application build process


 For every goal maven having a plugin
 Maven Plugins will perform the operation based on maven goals

Note: Maven software is collection of plugging

Maven Goals

Clean -----------------> it will delete target folder in project

Compile ---------------> It will compile source code

test ------------------> It will execute joints available in project

package ---------------> It will package application (jar or war)

install ---------------> It will install project in local repository

 Maven goals are used to perform application build process


o Every maven goal is associated with a plugin.
o Plugins are going to perform actual build operation in the maven
Version Control Tools:
-> In real-time multiple developers will be involved in application development.

-> Application developers will be working from different locations.

In this situation we will face below 2 problems

1) How to integrate source code?

2) How to monitor changes happening to source code?

-> Version Control Software’s are providing solution for above 2 problems.

-> There are several version control software’s are available in Market

1) CVS

2) Clear Case

3) SVN (Subversion)

4) Git Hub

5) Bit Bucket

Git Hub
o GIT Hub is a cloud provider which is providing software version control management
using git.
o GIT hub is implemented in Ruby and it is under license of Microsoft.
o Using Git Hub we can maintain repositories in cloud platform.
o In order to create repositories in Git Hub, we should have account in
o https://github.com/Ashok-IT-School/13-JRTP-App-01.git

What is Git Hub repository?

Repositories are used to store project source code

Note: One project will have one repository.

How many types of Repositories we can create in Git HUB?

 Public Repository (Anybody can see but we will choose who can commit)
 Private Repository (We will choose who can see and who can commit)
Note: In Real-time we will create private repositories for projects.
o For every repository, repo URL will be created. To access that repository we will use
that repo URL.
o Ex : https://github.com/Ashok-IT-School/13-JRTP-App-01.git

o To communicate with Git Hub Repositories we will use Git Client Software.

Staged files

Files which are added and they ready to commit

These file names will be displayed in green colour

Un-Staged Files:

Modified files will be displayed hear, we need to stage these files to commit

These files will be displayed in red colour

Un-Tracked Files

Newly created files, we need to stage them to commit

These file names will be displayed in red colour

GIT commands
git init : To initialize our folder as git folder

git status : To verify staged, un-staged and un-tracked files

git add : To add files to staging(git add hello.java)

git add -A : To add everything in that folder

git rm --cached <file name> : to unstage single file

git reset HEAD :to un-stage one file(git reset HEAD test.java)
git reset : To un-stage file

git commit : To commit staged files to local repo(git commit -m "Local repositery")

git remote add origin <url> : To configure rempote repo

git push : To push changes from local repo to central repo(git push -u)

git clone <url> : To take project from central repo to local system

git pull : To take latest changes from central to local

git log : To see commit history we will go for it

git rm : To remove the file from central

git stash : Save changes in temp location and make working directory clean

git stash:

Example:

Your TL assigned a task(HTS-122) to you morning @8am and you started working on that task.
few changes already you made in few Files but b did't comitted b

task is not yet completed.

Around 12:15 pm your TL told that Park HIS-122 for now and start working on HID-134 it is more
priority today please complete it by today EOD.

after HIS is completed then start working with HIs-122.

git stash apply : Applying stashed changes to local repo back

(multiple stashes are availabel)

Repo URL : https://github.com/Ashok-IT-School/13-JRTP-02-App.git


Git Branches

-> Branches are used to maintain multiple code bases in repository.

-> To perform parallel development we will use branches

-> In every project, we will see below branches

master

develop

feature

qa

uat

release

Working with branches

 Create feature branch from master


 clone feature brach

git clone -b <branch-name> <repo-url>

 Commit & push changes to feature branch

 Create pull request to merge feature branch changes to master branch

Git branches & merge conflicts

o Bitbucket is a Git-based source code repository hosting service owned by Atlassian.

o Bitbucket offers both commercial plans and free accounts with an unlimited number
of private repositories.
o Bitbucket also uses git as version control system.

 Note : By using Git Bash we can perform operations with Bitbucket repository.

Realtime workflow
-> When we got new project to develop, we need a repository for that project.

-> To create new repository for project we need to send email to Git/Bit Bucket admin.

-> Admin will create repository and will share repository URL to us.

-> In development team any one developer will create project folder structure and packages then
he/she will push those files to repository.

-> All the remaining developers will clone repository and then they will start work in project.

Note: Anybody can create branches and pull requests in repository.

-> Some developers will clone repository using git bash then they will import project into IDE.

-> Some developer will directly clone repository in IDE.

Agile with JIRA

What is Agile?

 Agile is one of the SDLC methodology(Software development life cycle)

 AGILE methodology is a practise that promotes "Continuous Iteration" of


development and testing throughout the software development life cycle of a
project.
 In AGILE methodology both development and testing activities are concurrent.

Note: Now days This AGILE methodology is trending in IT industry.

Agile Team Roles

1) Product Owner
2) Scrum Master
3) Tech Lead
4) Agile Team Members

o Product Owner is responsible to collaborate with Client

o Scrum Master is responsible to manage Agile Team members

o Tech Lead is responsible to help Team members in Technical Activates

o Developers, Testers, Adkins, Devops people are part of Agile team

Agile Terminology

1) Story
2) Story Points
3) Backlog Grooming
4) Sprint Planning
5) Sprint
6) Scrum
7) Mid-Iteration Review
8) Retrospective

 Story represents a task (The work that we need to do in project)


 Story Points represents duration to complete the story
3 points - 1 day task

5 points - 2 days task

8 points - 3 days task

 Backlog grooming meeting will be scheduled by Scrum Master. In that meeting we will
identify tasks for future and will create Stories for those tasks in JIRA (under backlog bucket).

Note: Any team member can create story in JIRA and will give Story Points.

 Sprint Planning Meeting will be conducted by Scrum Master. In this meeting we will decide
what stories we should complete in this Sprint.

 After Sprint Planning discussion, Sprint will be created in JIRA with required stories.

Note: Sprint duration will be 2 weeks.

 Scrum is a meeting that will be there every day with Scrum Master. In this meeting team
members should provide work status to Scrum Master.

Note: Every day scrum meeting will be there for 15-20 mines only.

 Once half of the sprint duration got completed, Scrum Master will conduct Mid-iteration
Review meeting to check work progress in Sprint.

 Once Sprint got completed, Scrum Master will conduct Retrospective meeting. In this
meeting we will discuss below points

1) What went wrong in sprint

2) What went well in sprint

3) Lessons learned in sprint

4) Achievements in Sprint
-------------------------------------------------------------------------

-> In Realtime we will use JIRA software for Project Management.

-> JIRA software developed by Atlasian company

-> Initially JIRA is used as Bug Tracking software But Now a days it evolved as project management
software.

What is JIRA ?

 JIRA is an Atlasian company product


 JIRA is used for project managment.

---------------------------------------------------------------

 JIRA admin will create a project

 Inside project, we will create stories.

 One story means one task

 Project work related tasks will be created in Backlog.

JIRA operations:

 How to create story?

 How to assign story points?

 How to add stories to sprint?

 How to assign task to ouself ?


 How to change task status ?

What is Epic?

-> Group of stories is called as Epic

Login Functionality

1) Create login screen

2) client side validations for login screen

3) exception handling

4) logging

Registration functionality

--------------------------

1) create registration screen


2) Send email on successful registration
3) client side validations
4) exception handling

 Documentation will be less in agile methodology


 Sprint duration will be 2 weeks
 Agile team members will be 7 - 10 memebers
 Every agile team will have one scrum master. Scrum masters may be Non Technical people.

 If story is not completed with in given time period we should inform to scrum master about
it.

 It is highly recommended to complete all thestories in the sprint by the last date of the
sprint.

 With in the sprint both development and testing will happen parallely
Note: To deliver one functionality to client we will take 2 to 3 sprints.

 If we want to take any leave, we should inform to Scrum Master in Sprint Planning session so
that he/she will plan work accordingly.
 In project, every team member will have jira account (individual account).

What is logging ?

-> It is the process of storing application execution details

Why we need logging?

 With the help of log message we can understand application behaviour in run time

 We can find exception details

 We can understand application execution flow

Log4J Main Component


1) Logger
2) Layout
3) Appender

 Logger is the class which provided methods to write log message

trace(String msg)
debug(String msg)
info(String msg)
warn(String msg)
error(String msg)
fatal(String msg)

 Layout represents format of log message.


 Appender represents destination of the log message (console, file etc)

What is log level ?


There are multiple log levels available

TRACE > DEBUG > INFO > WARN > ERROR > FATAL > OFF

-> In Spring Boot applications default LOG LEVEL is INFO. If we want to change log level then we can
change it in application.properties file.

Log Monitoring
-> It is the process of seeing log messages available in log file

-> We will use putty software to connect from one computer to another computer

-> Putty is a command line software. In putty we will use execute linux commands.

cd foldername ===> To navigate to folder


head filename ===> to print log messages from top to bottom
tail filename ===> to print log messages from bottom to top
grep "keyword" filename ===> to search for keyword in log file

WinScp
 It is used to connect from one computer to another computer

 WinScp is GUI based software.


Log Monitoring
------------------------------------------------------------------------
 Log monitoring is the process seeing log messages available in log file
 For log monitoring we will use below softwares

1) putty
2) winscp
3) splunk (trending)
------------------------------------------------------------------------

 Debugging video (Ashok IT channel)

 Maven

 GIT

 BitBucket

 Agile with JIRA

 Log4J

 Putty, WinScp and Splunk

Code Review
 To verify coding standards in our application we will perform code review
 Code Review will happen in 2 ways
1) Tool Review

2) Peer Review

-> Sonar Qube is the trending software which is used for code review. It will verify coding standars in
source code.

-> Peer review means one developer code will be reviewed by another developer. In this review logic
will be verified.

-----------------------------------------------------------------------------------

Sonar Qube :

1) It is an open source software developed by Sonar Source


2) It supports for 20+ programming languages
3) It verify below things in source code

1) Coding standards

2) Duplicate code

3) Code Smells

4) Unit tests

5) Code Coverage

6) Security vulnerabilities

Installing Sonar Software in Local System

 Download Sonar Software from below URL


o URL : https://www.sonarqube.org/downloads/
o Version : 6.3.1

 Start Sonar Server by executing StartSonar.bat

o Location : Sonar-Folder/bin/windows64/StartSonar.bat

 Once Sonar Server is started it will display Sonar up and running message in console.

 By Default Sonar Server will run on 9000 port number

 Open Sonar Server Dashboard using below URL

 http://localhost:9000/

Running Project with SonarQube Server

Add below 1 plugin in project pom.xml file (in <build> tag)

<plugin>

<groupId>org.sonarsource.scanner.maven</groupId>

<artifactId>sonar-maven-plugin</artifactId>

<version>3.4.0.905</version>

</plugin>

1. Do Maven build of project with below goals


a. mvn clean compile package
2. For project do maven build with below goal To Do Code Review
a. mvn sonar:sonar
3. After maven build completed, check sonar server dashboard.
4. We can see our project report under Projects
5. Report contains below details
1) Bugs(Blocker, Critical, Major & Minor)
2) Vunerabilities
3) Code Smells
4) Code Coverage
5) Duplicates etc...

SonarQube
 SonarQube is an open source software which is used for Code Quality checking.

 SonarServer wil runn on 9000 port number.

 To perform code review of our project we should add sonar-maven-plugin in pom.xml file

 Right click on Project -> Run as -> Maven build -> execute sonar:sonar goal

 After build got success verify sonar dashboard and select project

 Sonar will display below details of our project

a) Bugs : Bug gives unexpected behaviour

b) Vulnerabilities : hackers can attack

c) Code Smells : Leads to confusing

4) Duplicate code : boiler plate code

5) Unit tests : Junits

6) Code coverage : Junits coverage

) What is CI & CD ?

2) What is Jenkins ?

3) Who will create Jenkins Jobs?


4) Who will run Jenkins Jobs?

5) What is Pipeline ?

6) Who will trace build failure in Jenkins?

Debugging

Maven

GIT and Git HUB

BitBucket

Log4J

Putty WinScp and Splunk

SonarQube

Agile with JIRA

Jenkins

JMETER

1) JMETER is an opensource software given by Apache Organization.

2) JMETER is developed using Java

3) JMETER is used for performance testing of the application.

What is Performance Testing and why we need to do it?

1. The process of testing application stability and responsiveness is called as Performance


Testing.
2. Performance Testing is used to understand application metrics and application bottle neck.
JMETER - Setup

 Performance Testing

 Performance testing is used to verify application stability and Responsiveness.

 Performance Testing we are doing using JMETER

 JMETER is an open source software given by Apache Org.

 In JMETER GUI mode we will create test and we will run the test using CLI mode.
 t session : Performance Testing Using JMETER

Software Testing:

 1.software testing is the process of identifying the correctness and quality of software
program.
 the purpose is to check wheather the software satifiesthe specific requirements,needs and
expectation of the customer/client.
 2 In other words testing is the process of executing a syatem or application in order to car
saklefind defects.
 3 Example: Car manufacturer tests the car for maximum speed fuel efficiency and safety
from crash.
 these test results alter become the part if advertising strategy for car sale

Common problems in software application :

1) Incorrect implementation of the business rules


2) weak software performance.
3) Incorrect results of data searches
4) Incorrect matching of data.
5) Inadequate security controls
6) confusing or misleading data
7) Incorrect file handling, etc

ways of software testing:

Manual Testing : test cases executed manually.In manual testing will play the role of the end-user
and try

to find bugs or wrong behaviour of the software.

Automation Testing : Testing performed with help of automation tools like QTP,Lead and JMETER
etc..

Testing Stages /Levals:

 Unit Testing = is done by developer at the time of developing application.


 Integration Testing =end to end testing by developers.
 Smoke Testing
 Functionla Testing
 Regression Testing
 Performance Testing

Junit and Mocking

 unit testing is a level of software testing where indivisual units/components

of the a software application are tested.

 the main objective of unit testing is to split code into multiple pieces and testing each peice
of code seperately to ensule that, it works as expected
 Unit testing is used to verify a small chunk by creating a path, function or a method, the
term unit exists earlier than the object-oabstractionriented era.
 it is basically a natural abstaraction of an object oriented syatem i.e a java class or object.
 Junit is an open source framework which is used to implement Unit Testing for java
applications.
 Unit testing is the process of testing unit amount of work.

Why to do unit testing:

1) unit testing is used to identify defects early in software development cycle.


2) Unit testing will compel to read our own code ..i.e a developer starts spending more time in
reading than writing.
3) Defects is the design of code affects the development stage saves both time and money in
the end.
4) Proper unit testing done during the development stage saves both time and money in the
end.
5) Mocking is the process of creating substitute for the real object.

when we use mocking:

1) if dependentcomponents are boy ready


2) To isolate our component for unit testing

3) There are two types of Mocking Framworks are available


i. Proxy Based Mocking (Easy Mock, Mockito)
ii. Byte Code Manipulation Based Mocking (Power Mock & JMockit)

Limitations of proxy based mocking framework:

 Does not support for private method mocking


 Does not support for final method mocking
 Does not support for static method mocking
 Does not support for final class mocking
 To avoid the above limitations we are going to use bite code manipulation based mock
frameworks.

Steps to develop application using Junit and EasyMock:

Junit---------Unit testing framework

EsayMock--->TO perform Mocking

1)Create simple maveen project

2)Add below dependencies in pom.xml file

1)Junit

2)EasyMock

3)Create Dao interface(Only interface no implementation)

4)Create Service interface & implementation

(as part service method we will call dao method)

5)Create unit test class for service class using Junit.

Debugging
Maven

GIT & GIT HUB

BitBucket

Agile with JIRA

SonarQube

JMETER

Log4J

Putty

WinScp

Splunk

Jenkins

Junit

Mocking

You might also like