- Understanding Agile approach
- Stages of App Development
- Project initiation and requirements analysis
- Focus on the planning but not the plan
- Prototyping and Design
- What Acceptance Criteria has to do with app development?
- Development and Testing with Scrum - achieve more at less time
- What are sprints?
- Deployment and maintenance
Understanding the stages of application development at least theoretically helps you set the right expectation for your team, be prepared in advance for certain discussions and know why this or that phase is critical.
The article is about stages of the mobile app development process – from the very start of the project to the final point when a team releases their product to you. The article will be useful for those who are interested in software projects and want to know more about software development to operate business terms and be on the same wave with managers, engineers in the business world.
Understanding Agile approach
Mobile apps can not be done at once because there is always project management – a wise way to split mobile app development process into steps and control everything to be sure in quality of final results. Fortunately, Agile development or Agile project management came into force and did wonders to software development teams.
Agile is known as one of the methodologies of SDLC (Software development life cycle) which is a consequence of phases from the project start to its end. Each phase is a collection of activities, completion of which guarantee exact deliverables. Agile’s key concept is to ensure agility and flexibility especially in projects with frequently changing requirements. This method of project management is based on iterative delivery and incremental approach. If choosing Agile, you’ll be led by such key principles in implementation of app development process steps:
- Individuals and interactions over processes;
- Working software over constant work on documentation;
- Customer collaboration over contract negotiations;
- Responding to change over following an always steady plan.
Key stakeholders in Agile:
- Product Owner
- Development Team
- Project Manager
- Project Sponsors
Other methodologies of SDLC include:
- Continuous Integration
- Incremental Development
- Rapid Application development
- Spiral development
- Waterfall development
Stages of App Development
Key app development processes that can be met in Agile and other methodologies of SDLC include the next steps: project initiation, requirements collection and analysis, planning, designing, development, testing, deployment, maintenance.
Project initiation and requirements analysis
If you look at the whole project, there is always project ideation at the beginning, requirements analysis or Discovery phase. As soon as a client comes with a request to a company, he or she presents the engagement manager with the business needs, objectives and vision over the product. If the concept of the project is vague and needs estimation of target audience and market trends, ensuring its helpfulness for end-users, estimating costs and time, refining requirements, then a client can be offered Discovery phase service.
If a picture of the project is consistent, then the expert team conducts requirements specification and agrees on improvements with a client if there are some. Designers draw prototypes and UI sketches. After, comes planning the activities and scheduling of what and when should be done.
Requirements analysis should be done professionally and ensure that end users’ needs are learned and clearly match their expectations. Requirements are classified from high-level to detailed that corresponds to: business requirements, user requirements and then system requirements that are the most important. The last is what the system does, how well the system performs, whether it suits user goals and user point of view.
Focus on the planning but not the plan
Among risks customers and teams are afraid of are missing features and deadlines, rebuilds, overworks, constant clarifications, frequent changes in requirements and uncontrollable budget. This all can be eliminated if such application development phases as estimating and planning are done reasonably.
Estimating and Planning is not just to schedule product deadlines. It as well should not give an exact answer to how much time the team will spend on the product. Estimation and planning are always incremental and give a team a feeling of flexibility they could use later (if it is impossible to say the exact date of product release at once).
Planning increases project success by providing insights to project risks
Planning has more important functions. The team evaluates features, resources and schedule and finds the best solution for the question “What should we build?”. Good app development planning always goes along with:
- Reducing risks;
- Avoiding uncertainty;
- Better decision making;
- Establishing trust;
- Conveying information;
The team estimates the costs and the benefits. Should we hire one more software engineer to have this feature done in the release? Should we move release to October but have a better product with these new features? You can plan release for September, but change requests happen and release can shift to October.
It is the same as finding optimal solutions currently, but not to think your plan is 100% ideal or put all efforts into planning rather than on development. Planning should concern planning of activities and tasks, not planning features. And it is also good for looking for forgotten activities.
Prototyping and Design
Prototyping in the app development life cycle is a fast way to draw out the first design sketches for your app. It should direct to common vision with a customer over how the app will feel and what iterations there would be. After UI/UX designer can draw design of the app incorporating the best transitions, animations, styles to make the app feel smooth in using and convenient in navigation and have an intuitive interface.
Application development process is not mere coding. Every client wants the app to be made on time. Majority of software development teams use backlog – a storehouse of tasks. It is always important to know in advance how much there is to do and how much time development can take. That’s why, prior to development, there is always prioritization and estimation of tasks. The most critical tasks at the moment are the most prioritized ones to go into the estimation stage. Estimation helps team define time needed to close the task. This time takes into account only pure coding and excludes meetings, discussions and other time spent on development during the project.
Development is done with the technology stack defined at the beginning of project. Software engineers work side by side with UI/UX designers and quality assurance engineers. Together with a project manager the team will have regular meetings with a client and reporting on daily or weekly basis depending on approaches and models of cooperation the company offers.
What Acceptance Criteria has to do with app development?
Development is always done according to AC. So, what is the importance of acceptance criteria? Acceptance criteria are requirements that a product must meet. They are approved prior to development. Requirements Manager or QA prepares AC that include features explanation and can also include design mock-up: “As a System Admin, I can go to the Clients list, click on the Import button, so that upload clients to organizations chosen from a drop-down list”.
Acceptance Criteria are written by QA engineers and mean detailed and technical explanation of a feature for example: as a user I should be able to create that. Acceptance criteria are later formed into user stories. Product owners decide on prioritization of tasks, approve Acceptance Criteria and check the job done.
Development and Testing with Scrum – achieve more at less time
In Agile methodology Scrum is the framework. That splits agile phases are into iterations – one, two or three week periods sprints. Scrum helps software teams avoid scattered work which lasts for months and does not ensure necessary results. Scrum is ideal for projects with changing requirements, so the ones that need high flexibility from the team, fast updating and reaction to changes. If you work with scrum teams, you will certainly be introduced to regular meetings for iteration planning, daily status updates and sprint reviews.
The basic idea of Scrum is to create a safe and change-free environment to enable a team to concentrate on the planned development tasks. The team plans out a sprint of typically two weeks and the idea is that they work uninterrupted during this period. This process really helps to get things done. It avoids the “new = important” trap where everyone thinks that this new idea is much more important than the one they came up with a month ago
Performance of the project depends on the competency of the team as well as on the right prioritization, expectation management, on-time releases. Struggle over insufficiencies in project management, intuitively chosen tasks for prioritization, never ending iterations and more have begun to wane. Software engineers, designers and testers often use Jira (or other software) boards to see their sprints and backlog. Jira tasks can be categorized in a way like this:
- To do
- In progress
- Ready to deploy
- Ready to test
QA engineer moves the task to Done or In progress. Deployment of ready code written by engineers happens firstly in QA environment which is testing the environment for the app.
QA engineers test the developed functionality and if necessary, software engineers polish everything to reach total excellence and ensure the feature works according to acceptance criteria in a bugfree way.
What are sprints?
So, what will the sprint look like? Following Scrum, the issue to solve, which consists of certain small tasks to implement, will be a sprint for 1-3 weeks. So, firstly project managers with engineers decide what tasks from backlog are the first to implement. They shift to estimating how much time will be spent on tasks in a sprint. Then they pull the issue from the backlog to Jira indicating estimated time for it, its status, epic link and responsible person. Then, software engineers can start building the code.
The team can have a grooming stage which is to review the backlog and ensure prioritized issues are ready for the next sprint. Grooming sessions are designed for the team to clarify all things, so that clients needs are known and there are no unexpected change requests. Change Request can be done only within the next sprint and it should be approved with a client. Only if the urgent need, then tasks can be substituted in the sprint. Sprint lasts for one-three weeks. Each sprint ends with a releasable increment visible for a product owner.
Deployment and maintenance
When software testing is over, the code is clear and no bugs remain, the application can be pushed for final release into the environment where customers can find and use it. Software development team checks the deployment process to eliminate possible issues. When the system is deployed, software companies provide further maintenance of their product and ensure:
- Bug fixing;
- Code refining;
Application development phases are milestones of successful project implementation. One of the most effective approach is Agile which focuses on executing activities, meeting clients needs and requirements, maintaining flexibility in a team, but not focusing on reporting, paperwork and constant planning that does not bring results.