Work content

  1. Engaged in the programming, modification, installation, testing and maintenance of computer software 
  2. Engaged in related system program development, management and maintenance, and customer service and support 
  3. Mobile APP analysis/design, code writing and debugging, system maintenance/operation document output 
  4. Perform software testing and modification, and connect and integrate with existing systems 
  5. Teamwork to develop innovative products 
  6. Proficient in programming languages ​​familiar with APP application development (for example: AJAX, ASP, NET, C#, Web Master/Developer, jQuery, ASP.NET, swift, java.. etc.) 
  7. Possess App performance optimization and basic maintenance capabilities

The software life cycle is a structure that indicates processes and activities involved in the development, operation and maintenance of software, covering in fact the entire life of the system. In this cycle, there are models that define how the software will be developed, launched, improved and finalized. The choice of this model, which will define the sequence of stages of the activities, is made between the client and the development team and several things can impact it, such as business, available time, cost, team, etc. The order of the phases is what will define the life cycle of your software.

Why should I think about this before developing my software?

With a life cycle model you can see the real need for the software and plan it better. Can you imagine delivering software to a customer, and then having to release several updates to fix flaws? The purpose of this cycle is to find errors as soon as possible, because, in addition to ensuring the quality of the software, it avoids a higher cost if an error is found late. With better planning you can, for example, have greater availability to improve performance or make some correction.

There are 3 basic phases of a software cycle preferred by app developer: definition, development and operation.

1) Definition

The current situation must be known and the problem identified in order to resolve it. It is in the definition that you will model the processes and analyze the system. The life cycle model is the first choice to be made in the software process.

2) Development

This step involves activities related to design, prototyping, coding, testing, among other activities that are necessary, such as integration with another system. It is important to note that these activities must follow what was described in the previous steps, as this is where business rules come in.

3) Operation

At this stage the software will already be in production and you will give the users proper support and, of course, correct possible bugs that may appear. Then there is the continuity of the software if necessary, how to meet new requirements, new functionalities. However, everything depends on the life cycle model adopted by the project.

Development and operation tool chain

Adherents of development and operation practices usually consider certain development and operation-friendly tools as part of their development and operation “tool chain”. The goal of these tools is to further simplify, shorten and automate the various stages of the software delivery workflow (or “pipeline”). Many of these tools also promote the core DevOps principles of automation, collaboration, and integration between development and operations teams. Examples of tools used in various stages of the development and operations life cycle are shown below.

planning. This stage helps to define business value and requirements. Example tools include Jira or Git, which can help you track known issues and perform project management.

This stage of code involves software design and software code creation. Example tools include GitHub, GitLab, Bitbucket or Stash.

Construct. At this stage, you can manage software builds and versions, and use automated tools to help compile and package code so that future versions can be put into production. The source code repository or package repository you use is also the “packaged” infrastructure required for the product version. Example tools include Docker, Ansible, Puppet, Chef, Gradle, Maven or JFrog Artifactory.

Testing. This stage requires continuous testing (manual or automatic) to ensure the best code quality. Example tools include JUnit, Codeception, Selenium, Vagrant, Testng or BlazeMeter.

During deployment, some tools can be used to help manage, coordinate, plan and automatically release products to the production environment. Example tools include Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker or Jira.

Operations. This stage is used to manage the software during production. Example tools include Ansible, Puppet, PowerShell, Chef, Salt or Otter.

DevOps practice

DevOps practice reflects the concept of continuous improvement and automation.  These practices include:

Continuous development

This practice involves the planning and coding phase of the development and operation life cycle. May involve version control mechanisms.

Continuous testing

When writing or updating application code, this practice includes automatic, pre-planned continuous code testing. This type of testing can speed up the delivery of code to the production environment.

Continuous integration (CI)

This practice uses configuration management (Configuration Management, CM) tools in conjunction with other testing and development tools to track how much of the developed code is ready for production. It needs to provide rapid feedback between testing and development in order to quickly identify and resolve code issues.

Continuous delivery

This approach automatically transfers code changes to the pre-production or staging environment after testing. Then, employees may decide to roll out such code changes to the production environment.

Continuous deployment (CD)

Similar to continuous delivery, this approach can automatically release new or changed code to the production environment. Companies that perform continuous deployment may release code or feature changes multiple times a day. Using container technologies such as Docker and Kubernetes helps to maintain code consistency between different deployment platforms and environments to achieve continuous deployment.

Continuous monitoring. 

This approach involves continuous monitoring of the running code and the underlying infrastructure that supports that code. A feedback loop for reporting errors or problems and then returning to the development phase.

Infrastructure is code . This approach can be used in various DevOps stages to automatically configure the infrastructure required by the software version. Developers can add infrastructure “code” to their existing development tools. For example, developers can create storage volumes on demand from Docker, Kubernetes or OpenShift. In addition, the operations team can also use this approach to monitor the environment configuration, track changes and simplify configuration rollbacks.