Software Development

Agile Scrum Delivery Model

We leverage a fully extended agile scrum delivery model, complete with end-to-end QA integration and executive transparency reporting. The three ‘keys’ to successful implementation of agile scrum:

Sprint Planning / Planning Poker   – ensures unanimous agreement for the estimate of each story, greatly enhancing the probability of accuracy. Points are used instead of time to enhance the ability to ‘compare’ the relative difficulty of one story to another.

Wedge Team   – we provide all of the key, high-level roles that are not needed full time on the project but are essential to success. This team acts as a ‘startup’ team to ensure the project is foundationally sound – and the team continues on throughout the project, attending sprint planning and review sessions as they occur. This team includes: Architect, Engagement Manager, Scrummaster, and QA Manager.

Product Owner   – the single most important factor in the success of a project is the involvement of the Product Owner. This representative of the client is responsible for communicating and collaborating with the Swan team to ensure that the vision is implemented and the priorities are established.

DevOps

DevOps is about continuous collaboration between developers and operations throughout the entire process – Design | Development | Production.

DevOps eliminates the silos between development and operations and extends Agile principles beyond the boundaries of “the code” to the entire delivered service.

Agile software development prescribes close collaboration of customers, product management, developers, and QA to fill in the gaps and rapidly iterate toward a better product…DevOps adds service delivery – how the app and systems interact are a fundamental part of the value proposition to the client.

Our Best Practices for DevOps:  We are using Agile principles, Design and Planning, Executive Transparency Reporting, End-to-End Fully Integrated QA (including Black and White Box testing), Cloud Services Setup, Production Support and many others. We are using the best DevOps tools to accomplish our goal to deliver and support a quality product, such as BitBucket for Source Control Management, Jenkins for Continuous Integration, and TestRail for Test Documentation management. These tools all help us to be flexible to requirements changing, deliver software frequently, select the most effective methods and techniques within development, deployment and supporting of a product.

What does it mean for our Customers:

Faster delivery of shippable features

Highly productive and
stable operating environments

Improved service quality

Reduced 
deployment
failures

Better defect detection

Eliminate bottlenecks due to a better designed architecture

Source Code Management

Version Control System.  We are using Version Control Systems such as GIT or SVN for managing our development process. This allows tracking of any code changes and makes code review easier with pull requests. A key ‘best practice’ is that each user story is developed in a separate branch.

What does it mean for our Customers:

Master – Production Server Branch
  • Only Tech Lead pushes into Master branch
  • Master should contain current Production code
  • Code should be pushed To Master only from Staging Branch after regression QAT on it and UAT Hot Fixes
Staging – Staging Server Branch
  • Only Tech Lead pushes into that branch
  • Master should contain current Staging Server code
  • Tech Lead should push to this branch from Sprint, UAT and Hot Fix Branches
Sprint # – Branch for each sprint (for Test Server)
  • Tech Lead reviews and merges pull requests from Team members
  • Demo is done from that branch during sprint review
  • Current sprint branch should contain code that is on Test Server
  • Each new Sprint branch should be created as a copy of Last Staging branch version
Story#/Bug – Branch for each story
  • Each team member creates a branch for his User Stories (as a copy of Current Sprint Branch)
  • Name of the Branch should start with User Story JIRA ID
  • If the Sprint branch was changed before dev finishes his User Story – it should be pulled to his Story Branch
  • After Story branch contains final code – Dev should create a Pull Request to Sprint Branch
UAT Hot Fixes
  • Create a separate UAT Hot Fix branch from Staging Branch
  • Once Hot Fix completed then merge it into Staging Branch and update Staging Server
  • Once merged and approved by client – merge Hot Fix Branch to Current sprint branch
Quality Assurance

Quality Assurance. Our entire culture is built upon QA. Everyone in the company is part of our QA team, including our executive team. The QA process is tightly integrated throughout the entire engagement process, beginning with a test plan in the Design sprint and carrying through to delivery of the final product.

Test Plan.  The Architect and QA Manager collaborate during the design sprint to determine the Test Plan. This document determines Test processes which will be executed on a Project. It includes Guiding Principles, Quality and Test Objectives, Test Scope, Test Types needed, Test Environments. QA is assigned to the project and keeps this document up-to-date according to latest changes.

Acceptance Criteria. Creating user stories is a great first-step in a Feature Driven Development (FDD) process, but can still produce some ambiguity in the requirement. Our QA team will write the acceptance criteria for every story, using the industry standard “Given/When/Then” model. This process (combined with user stories and planning poker) contributes to creating requirements that have been thoroughly defined according to the client’s needs. This document is then
passed on to the client to be used for User Acceptance Testing.

TDD. We use Test Driven Development as our Best Practice Development approach, meaning that our developers write Unit Tests before developing the actual code. Developers applying the TDD approach are likely to write less complex code, more smaller units (methods and classes), more tests and achieve higher test coverage than they would write with a non-TDD approach.

Black Box and White Box Testing. We define Black Box testing as testing from the user perspective, and White Box testing as testing from a code perspective. Our QA team performs Black Box Testing based on Acceptance Criteria along with negative testing techniques on all supported environments. White Box testing includes such activities like Code review, Automated testing, and Unit Testing.

Continuous Integration. A critical component to our process is the continuous integration server (CI server), which is running Automated and Unit Tests on a daily basis. This eliminates a large amount of issues during the development process and minimizes the time needed for troubleshooting problems.

Code Review. This is performed by highly experienced developers (team leads) to minimize amount of code duplicates or memory leaks, and to keep code clean and smooth as well as fix any issues in the code. All code must pass review before being tested by our Black Box QA personnel.

End-to-End Quality Integration Process
Agile Backlog

Each User Story is written in the following way: As a [user] I want [feature] so that [benefit]. This is the best way for quickly obtaining our Client’s requirements, and understanding the real purpose and benefit of a Story.

Agile Board

Our Agile board was designed in a way that covers the overall process of development | testing | delivery and dramatically helps our Clients to be aware of all details, and to control and manage them on all phases.

TestRail

TestRail is our best-of-breed test management tool. We create the Acceptance Criteria, manage test runs and coordinate the entire testing process. We can easily track and follow the status of individual tests, milestones and projects with dashboards and activity reports.

Bitbucket

Bitbucket is one of the most advanced version control systems and improves development team collaboration and code management. It also makes code review more dynamic and flexible with pull requests. It helps the team to hold discussions quickly and easily right in the source code with inline comments. We use our own corporate Bitbucket account to store and grow all our Client’s projects code. This ensures the security, stability and overall integrity of your information.

Finding the right technology partner is fundamental for a business’s success. At Swan, we like to say that we succeed when our clients succeed. We’ve worked in many industries and created everything from complex solutions to high-quality websites.