Industrial Attachment Report at Graph-AI
Industrial Attachment Report at Graph-AI
INDUSTRIAL ATTACHMENT
Submitted By:
S.M Junayed Shanto
Roll No. 21190101079
7th Semester ECSE
Supervised By:
Muhammed Samsuddoha Alam
Assistant Professor & Coordinator,
CSE (Evening) Program
Northern University Bangladesh
Dear Sir,
It is indeed our pleasure to submit the industrial attachment report to you for your kind appraisal. We
have completed our industrial attachment at the Head Office of Graph-AI. During internship, we got huge
amount of support from the officials for preparing our report in time. The experiences we have gathered
will be very helpful in the professional life.
We believe, this report will be quite interesting and fulfill your expectation. We have tried to give our best
efforts to prepare a comprehensive report. We will be grateful if you accept our report and your kind
consideration will be highly appreciated.
Sincerely Yours,
2 | Page
e
DECLARATION
We hereby declare that, this industrial attachment has been done by us under the supervision of
Muhammed Samsuddoha Alam, Assistant Professor & Coordinator, ECSE, Northern University
Bangladesh. We also declare that neither this industrial attachment nor any part of this project has been
submitted elsewhere for award of any degree.
Supervised by:
Submitted by:
S.M Junayed Shanto
Roll: 21190101079
3 | Page
e
ACKNOWLEDGEMENT
An industrial attachment cannot be completed without significant help from others. First we gratefully
acknowledge the help and support from our parents, teachers, employers, friends and others, whose support
has been invaluable for me. I would like to thank the following people for their contribution in this industrial
attachment:
We are grateful to our honorable Director Samia Rahman, for the official letter to join us Graph-
AI.
We express our gratitude to Muhammed Samsuddoha Alam, Assistant Professor & Coordinator,
ECSE, for her supervision of the project and industrial attachment
We thank Engr. Mohammad Mizanur Rahman, CEO for admitting us at Graph-AI
We also grateful to Hasibul Islam, Project Manager, Graph-AI
4 | Page
e
PREFACE
Graph-AI is one of startup software developing company in Bangladesh. They develop innovative and cost
effective software services in both commercial and government sectors. With the advent of modern
technologies they also incorporate their customers with new application and ideas. They have well trained
professional to develop software and meet the customer demand. Their unique approach to train and
develop human resources to adapt to the market demands leads them to national as well as international
market.
With the huge support of professional developers Graph-AI is trying to emphasis the newer technologies
like Web application development, Mobile application development and many more. They have a lot of
experience to work with rest of the software industry. They have developed many software solutions to the
corporate leaders and government.
5 | Page
e
Table of Contents
Sl No. Page
Content No.
s
1.1 Background
1.4 Methodology
2.2.1 Planning
3.1 Overview
4.1 Applications
4.2 E-NagorikAbedon
5.4 Conclusion
References
7 | Page
e
Chapter: 1
Background of the
Report
8 | Page
e
1.1 Background
We were lucky to get the opportunity to complete our industrial attachment at Graph-AI. Since Graph-AI
is a leading software company and developing software from a long ago in Bangladesh we consider
ourselves timely to get chance to take a deep look to their development methods, working models, deals
and industrial behavior. We visited the head office located at 145,Airport Road Super Market, Manipuri
Para, Dhaka-1215 almost every week through the semester.
We intended to look into the software industry and how it looks like, what are their rules, responsibility
and environment. Obviously they work with almost every platform and technologies. We worked with the
part of Web Application Development team and generated ideas based on web development. Mainly we
developed Performance Management System.
While developing the web app we tried to follow the coding conventions and user satisfaction criteria to
maintain the quality of the software. Software quality assurance is one of the main challenges of the
industry.
9 | Page
e
1.4 Methodology
For this report, information has been gathered from both primary and secondary sources.
10 | P a g e
e
Chapter: 2
Internship
Experience & Job
Description
11 | P a g e
e
2.1 Software development process of Graph-AI
A software development process, also known as a software development life-cycle (SDLC), is a structure
imposed on the development of a software product. Similar terms include software life cycle and software
process. It is often considered a subset of systems development life cycle. There are several models for such
processes, each describing approaches to a variety of tasks or activities that take place during the process.
Some people consider a life-cycle model a more general term and a software development process a more
specific term. For example, there are many specific software development processes that 'fit' the spiral
life-cycle model. ISO/IEC 12207 is an international standard for software life-cycle processes. It aims to
be the standard that defines all the tasks required for developing and maintaining software.
The international standard for describing the method of selecting, implementing and monitoring the life
cycle for software is ISO/IEC 12207.
2.1 Software development activities:
2.1.1 Planning:
Planning is an objective of each and every activity, where we want to discover things that belong to the
project. An important task in creating a software program is extracting the requirements or requirements
analysis. Customers typically have an abstract idea of what they want as an end result, but do not know
what software should do. Skilled and experienced software engineers recognize incomplete, ambiguous,
or even contradictory requirements at this point. Frequently demonstrating live code may help reduce the
risk that the requirements are incorrect.
Once the general requirements are gathered from the client, an analysis of the scope of the development
should be determined and clearly stated.
12 | P a g e
e
Maintaining and enhancing software to cope with newly discovered faults or requirements can take
substantial time and effort, as missed requirements may force redesign of the software.
2.2 Software development models:
Several models exist to streamline the development process. Each one has its pros and cons, and it is up to
the development team to adopt the most appropriate one for the project. Sometimes a combination of the
models may be more suitable.
The waterfall model shows a process, where developers are to follow these phases in order:
[Link] Requirements specification (Requirements analysis)
13 | P a g e
e
[Link] Software design
[Link] Implementation and Integration
[Link] Testing (or Validation)
[Link] Deployment (or Installation)
[Link] Maintenance
In a strict Waterfall model, after each phase is finished, it proceeds to the next one. Reviews may occur
before moving to the next phase which allows for the possibility of changes (which may involve a formal
change control process).
Reviews may also be employed to ensure that the phase is indeed complete; the phase completion criteria
are often referred to as a "gate" that the project must pass through to move to the next phase. Waterfall
discourages revisiting and revising any prior phase once it's complete. This "inflexibility" in a pure
Waterfall model has been a source of criticism by supporters of other more "flexible" models.
2.2.2 Code and fix
"Code and fix" development is not so much a deliberate strategy as an artifact of naïveté and schedule
pressure on software developers. Without much of a design in the way, programmers immediately begin
producing code. At some point, testing begins (often late in the development cycle), and the unavoidable
bugs must then be fixed before the product can be shipped. See also: Continuous integration and Cowboy
coding.
2.3 Process improvement models:
2.3.1 Capability Maturity Model Integration
The Capability Maturity Model Integration (CMMI) is one of the leading models and based on best
practice. Independent assessments grade organizations on how well they follow their defined processes,
not on the quality of those processes or the software produced. CMMI has replaced CMM.
2.3.2 ISO 9000
ISO 9000 describes standards for a formally organized process to manufacture a product and the methods
of managing and monitoring progress. Although the standard was originally created for the manufacturing
sector, ISO 9000 standards have been applied to software development as well. Like CMMI, certification
with ISO 9000 does not guarantee the quality of the end result, only that formalized business processes
have been followed.
2.4 Formal methods:
Formal methods are mathematical approaches to solving software (and hardware) problems at the
requirements, specification, and design levels. Formal methods are most likely to be applied to safety-
critical or security-critical software and systems, such as avionics software. Software safety assurance
standards, such as DO-178B, DO-178C, and Criteria demand formal methods at the highest levels of
categorization.
14 | P a g e
e
2.4.1 Types of Team in a Software Firm
[Link] Requirement analysis team
[Link] Planning team
[Link] Designing team
[Link] Coders team
[Link] Database team
[Link] Testing team
Characteristics:
Scrum assumes that the software development process is complicated and unpredictable and treats it as a
controlled black box instead of a theoretical, fully-defined process. This is one of the biggest differences
between Scrum and the Waterfall and Spiral methodologies, which view the software development
process as a fully defined process. Most problems encountered when using these older, formal types of
methodologies are:
Requirements are not fully understood at the beginning of the process.
Requirements change during the process.
The process becomes unpredictable when new tools and technologies are used.
To manage these processes with flexibility, Scrum supplies techniques and controls to manage this
unpredictable process.
Development Phase Techniques:
Team creation
Scrum believes that a development team should perform as a sport team, every team member working
independently but towards the same goal. Scrum suggests that a team has a maximum of 6 - 7 members.
The team facilitator is called the Scrum master. His/her job is to implement and manage the Scrum
process in the project. The Scrum team as a whole defines the practices, meetings, artifact and
terminology of SCRUM for the team and the Scrum Master ensures adherence to these "norms"
identified. Scrum masters serve a facilitator role and their authority is mostly indirect. Scrum masters
focus most of their time in managing outside interference for the Scrum team and solving outside
15 | P a g e
e
impediments or ‘Blockers’ that cannot be solved by the Scrum team. The master also focuses on ensuring
transparency into the development process by maintaining the multiple Scrum artifacts defined elsewhere
in this article.
Backlog creation
There are 3 types of backlogs:
Product - Acts as a repository for requirements targeted for release at some point. These are
typically high level requirements with high level estimates provided by the product stakeholders.
Release - Requirements pulled from the product backlog and identified and prioritized for an
upcoming release. The release backlog contains more details about the requirement and low level
estimate which are usually estimated by the team performing the work.
Sprint - At the beginning of each sprint, the team has sprint planning with an end result being a
backlog of requirements/sub-requirements that the team anticipates completing at the end of the
sprint. By completing, that means fully coded, tested and documented. These are the items that the
team will "Burndown" against throughout the duration of the sprint.
Project segmentation
The whole project gets divided into periods of time with a maximum duration of 4 weeks. One period is
called a Sprint and every team gets a backlog to execute within the given Sprint.
Scrum meetings
During the sprint, the team conducts daily scrum meetings.
The meetings are held in the same place at the same time every work day.
The meetings don’t last for more than 30 minutes.
A scrum master is appointed.
The scrum master is responsible for asking every team member the following three questions:
[Link] What have you done since the last scrum meeting?
[Link] What has impeded your work?
[Link] What do you plan on doing between now and the next scrum meeting?
Overview
The literal meaning of the word agile, an adjective, is “Characterized by quickness, lightness, and ease of
movement.” So this indicates that Agile Software development is about fast delivery of software with
more ease of development. Classically, “Agile software development is a style of software development
that emphasizes customer satisfaction through continuous delivery of functional software”.
Key Features of Agile Software Development:
Iterative: Entire application is distributed in incremental units called as iteration.
Development time of each iteration is small (couple of weeks), fixed and strictly
16 | P a g e
e
adhered to.
Active Customer involvement: There is lot of client involvement and face-to- face
interaction. Every iteration is tested and approved by client. The feedback obtained is
implemented in subsequent iterations; thus minimizing risk and ensuring higher client
satisfaction.
Feature driven: More emphasis is on providing the required features in the
application.
Fixed Time: Each iteration has a fixed time span in which it is delivered. Priority
based delivery: Features are prioritized depending on customer need, development
risk etc. High priority features are developed first.
Adaptive: The methodology in general is very adaptive, so that the application that is
developed can cater to inflow of new requirements throughout its development.
Empowered Teams: The project teams are generally small and have lot of interaction
and communication.
People Centric: More emphasis is on using the adequately skilled people to do the
development than on following the processes.
Rapid development: Generally the development is done rapidly using light weight
development technologies.
More disciplined: Being rapid, everything has to be delivered correctly first time.
Simplicity: Emphasis is on keeping things as simple as possible and being open to
change.
Why Agile:
Benefits to the Customer
1. Project teams are involved more actively in all the stages, have to ask right question. The
teams collaboratively take the decisions and are more empowered.
2. Since the development is Incremental, teams can focus on the specific requirements at any
given point of time.
3. More emphasis is on developing the application only, and not on documentation. Simple and
minimal documents are used to exchange the views
4. The teams receive frequent feedback as the testing is integrated; so the rework is reduced
5. Less time is spent in gathering requirements as all the requirements are not gathered upfront
17 | P a g e
e
and are implemented as and when they arise.
6. So less time is required for planning.
7. Less cost of development as rework, management, documentation and other non-
development work related cost is reduced.
8. Teams develop applications collaboratively and in cooperative environment.
1. Is functionality split-able
2. Is customer available
3. Are requirements flexible
4. Is it really time -constrained
5. Is team skilled enough
18 | P a g e
e
Figure: Agile development cycle
19 | P a g e
e
Chapter: 3
Web Application
Development
20 | P a g e
e
3.1 Overview
Web application development is the creation of application programs that reside on remote servers and are
delivered to the user’s device over the Internet. A web application (web app) does not need to be
downloaded and is instead accessed through a network. An end user can access a web application through a
web browser such as Google Chrome, Safari, or Mozilla Firefox. A majority of web applications can be
written in Java, JavaScript, Cascading Style Sheets (CSS), and [Link] application development will
typically have a short development life-cycle lead by a small development team. Front-end development for
web applications is accomplished through client-side programming. Client refers to a computer application
such as a web browser. Client-side programming will typically utilize HTML, CSS and JavaScript. HTML
programming will instruct a browser how to display the on-screen content of web pages, while CSS keeps
displayed information in the correct format. JavaScript will run JavaScript code on a web page, making
some of the content interactive.A database such as MySQL or MongoDB or Posrgresql or Oracle can be
used to store data in web application development.
2. Plan
“What do we want?” In this stage of the SDLC, the team determines the cost and resources required for
implementing the analyzed requirements. It also details the risks involved and provides sub-plans for softening
those risks.
In other words, the team should determine the feasibility of the project and how they can implement the project
successfully with the lowest risk in mind.
3. Design
“How will we get what we want?” This phase of the SDLC starts by turning the software specifications
into a design plan called the Design Specification. All stakeholders then review this plan and offer feedback and
suggestions. It’s crucial to have a plan for collecting and incorporating stakeholder input into this document.
Failure at this stage will almost certainly result in cost overruns at best and the total collapse of the project at
worst.
21 | P a g e
e
4. Build
“Let’s create what we want.”
At this stage, the actual development starts. It’s important that every developer sticks to the agreed blueprint.
Also, make sure you have proper guidelines in place about the code style and practices.
For example, define a nomenclature for files or define a variable naming style such as camelCase. This will help
your team to produce organized and consistent code that is easier to understand but also to test during the next
phase.
5. Code Test
“Did we get what we want?” In this stage, we test for defects and deficiencies. We fix those issues until
the product meets the original specifications.
In short, we want to verify if the code meets the defined requirements.
6. Software Deployment
“Let’s start using what we got.”
At this stage, the goal is to deploy the software to the production environment so users can start using the
product. However, many organizations choose to move the product through different deployment environments
such as a testing or staging environment.
This allows any stakeholders to safely play with the product before releasing it to the market. Besides, this allows
any final mistakes to be caught before releasing the product.
22 | P a g e
e
Chapter: 4
Project Part
23 | P a g e
e
4.1Applications
We developed one web apps through this time of industrial attachment. The application names is:
Performance
Management
System (PMS)
4.2 PMS:
This Web App is based on employee performance managing. Any company can manage their
employee’s performance tracking through this application easily. As it has user friendly interface
and proper business flow at everywhere it will be very helpful for both private companies and Govt.
offices.
Features:
Initial data setup for companies like: Company, Department, Designation, Session
Session and designation based Key Resource Area (KRA) and Key Progress Indicator (KPI)
Quarter Based assessment (divided into 4 quarters)
Assigning employees to a specific reporting manager (rm) and assign kra, kpi’s to employees as per
their designations.
Employees can submit their task as per their assigned kra and kpi and it will be submitted to their
rm to check and approve.
There are application option for employees to ask for a training on specific skill to improve to their
reporting manager.
24 | P a g e
e
Application UI/UX:
25 | P a g e
e
Session maintain page:
26 | P a g e
e
KRA maintain page:
27 | P a g e
e
KPI maintain page:
28 | P a g e
e
Reporting Dashboard:
Compensation Report:
29 | P a g e
e
Performance vs Potential report:
30 | P a g e
e
Chapter: 5
Overall Findings
31 | P a g e
e
5.1 Future of the firm in Bangladesh:
They have come a long way since then and learned a lot about making software. The Waterfall Model is
now considered a flawed method because it is so rigid and unrealistic. In the real world, software projects
have ill-defined and constantly evolving requirements, making it impossible to think everything through
at once. Instead, the best software today is created and evolved using agile methods.
With the advent of modern programming languages (Java, PHP,C++, Python, .NET and Ruby), rich
libraries, and unprecedented infrastructure services, we are arriving at yet another evolutionary step. To
build software today all you need is a few good men (or women!). In this post we trace how we got here
and where we are heading next.
They have some future plans. They are as follow: To make the country dynamic they have many projects
for which they will work in the future. And they have also future plans for their firm. Such as:
Graph-AI wants to take our country a long way through development of new software and technologies.
They are always up to date with the new technology emerging every day. We have seen their Web App
team is very enthusiastic concentrating on developing web apps. Their plan are:
32 | P a g e
e
Recommendation:
There is a lot of possibility in the software industry for Bangladesh. A lot of fresh graduate are joining
and the industry is becoming very powerful day by day. The talented young generation can take the
industry a long way. We are already developing the software for us and exporting abroad. Through
outsourcing and freelancing a lot of young people are getting their own wages. The new firms can be
formed to improve the industry. But there are many obstacles too. As a developing third world country we
face a lot of unwanted conditions in the way. We have to overcome those and have to make the software
industry one of most powerful in the world. Our suggestions are:
The government should proper steps to make the way for new start-up.
Young people should form their own firm.
Business magnets should invest more in this sector. The ICT
act should be more flexible for the developers.
The business rules should be easier for software industry.
Conclusion:
The total period while we were visiting Graph-AI was very pleasant to us. It will help us a lot in future
life. Without the practical knowledge it is quite impossible to develop quality software. This industrial
tour has paved the way to look into the development environment and marketplace. The market does not
depend on only developing quality application. It is a lot more things than those. First we have to specify
what we have to develop, for whom, why and how. Understanding the user’s mind and their requirements
a software engineer has to think about new software. They gave a lot of good advice that we will take with
us as we prepare to enter the workforce after graduation.
The age is totally dependent on modern information technologies. Nobody can escape away from it. Our
one step to invent new technology can take the whole world a step forward.
References:
Graph-AI
[Link]
[Link]
[Link]
difference-2/
33 | P a g e
e