Our process

To deliver high-quality software that meets your needs, we follow a development process that involves 3 main phases:

  • Establishing a vision
  • Software development sprints
  • Maintenance

Each phase can be effectively executed remotely, without the need of in-person meetings. We have experience in working with remote clients and know how to effectively use various communication tools and processes to effectively execute projects for worldwide clients.

Establishing a vision

In this phase our goal is to understand our clients' needs and determine the scope of the project. We do it by gathering all possible input documents you can provide us, conducting interviews, calls, videoconferences and meetings. We are looking for your real goals and expectations. What problem do we need to solve together? Why it is important? Who will gain by solving that problem? Are there any drawbacks? These are the questions we need to answer.

Based on this information we prepare a high-level vision of your solution, as well as a list of detailed functions that need to be implemented. In this phase, we might also prepare some wireframes, use-case scenarios and/or non-functional requirements that will be analyzed in more details later on.

Expected input:

  • all documents, images, wireframes, ideas, business rules, processes, law rules that are applicable and can be easily delivere by the client
  • interviews with key people

Provided output:

  • List of identified use cases / user stories (product backlog)
  • Wireframes (optional)
  • List of identified requirements

Note that actual output depends on project type and complexity.

Software development sprints

Main goal of software development phase is to provide you a fully working software that meets your needs. This phase consist of several "sprints" – short periods of time when we perform full development cycle: clarify your needs and expectations, develop the software, test it and gather some feedback from you. Each sprint takes usually two or three weeks.

Sometimes, when our client already has an established project vision, we start our work in software development phase. In this case, we expect to get as an imput some scenarios or user stories describing user flow through the system, and graphical design or wireframes that show how each screen should look like.

In this phase, it's very important to ensure high quality of developed software. That's why we usually create automated test scripts which help us ensure that everything works as expected. We use these tests to check whole system at the end of each script as well as when the system gets modified or updated during the maintenance phase.

Typical development process

On the diagram above, you can see our development process. During the sprint, we implement planned functionalities, run required tests, deploy to "staging"  server and ask you for feedback. This feedback will be addressed in next sprint. 

In parallel, we do requirements analysis for future sprint - we are checking and rewriting your requirements to ensure that we do understand what you expect from us, and that you understand the impact of your requirements. Requirements engineering is an art by itself - and we are really good at it; read more here

When the requirements are clear enough, we start the development phase. When it's done, we gather feedback from you which will be applied during next sprint.

Expected input:

  • List of identified use cases / user stories (product backlog)
    Wireframes or graphic design
    List of identified requirements

Provided output:

  • Deployed software
  • Source code
  • Automated tests
  • Clarified requirements for next sprint

Maintenance

Maintenance is a very important phase in software life cycle. It involves infrastructure maintenance, systems administration, as well as installation of patches, updats and bug fixes. Proper maintenance protects systems against security risks and improves overall user experience by fixing issues that are important for your users.

As the system is live and users are using it, it's extremely important to provide maintenance services in a way that allows uninterrupted operation of the software. To achieve that, each change, patch and update needs to be thoroughly verified. We usually do it in test environment, by executing manual and automated tests to ensure everything will work correctly once we deploy changes to production.

Provided input:

  • Deployed software
  • Source code
  • Automated tests

Provided output:

  • Source code with bug fixes
  • Up-to-date production environment

 

Attachments: 
AttachmentSize
Image icon ourprocess.png19.36 KB

Do you have any questions?

Ask us!