Software Development Life Cycle (SDLC) Document for Apty

CONTENTS

Overview

The purpose of Software Development Life Cycle (SDLC) methodology is to provide a documented description of how software is built by Apty. It describes the various phases of the development process and activities performed during each phase.

When Apty develops a product, SDLC serves as a reference to determine which activities are needed to develop the product and provide detailed information on how to accomplish those activities. This document mainly focuses on describing different phases of our product development, various activities and procedures involved during the product development in Apty.

Goals of SDLC

  • Helps to deliver quality systems that meet or exceed customer expectations as promised and within cost estimates.
  • It provides a framework for developing quality systems using an identifiable, measurable, and repeatable process.
  • It establishes a project management structure to ensure that each system development project is effectively managed throughout its life cycle.
  • Helps to identify and assign the roles and responsibilities of all involved parties, including functional and technical managers, throughout the system development life cycle.
  • It ensures that system development requirements are well defined and subsequently satisfied.

Objectives of SDLC

  • Establishing appropriate levels of management authority to provide timely direction, coordination, control, review, and approval of the system development project.
  • Ensuring project management accountability.
  • Documenting requirements and maintaining traceability of those requirements throughout the development and implementation process.
  • Ensuring that projects are developed within the current and planned information technology infrastructure 
  • Identifying project risks and issues early and managing them before they become problems 

The SDLC phases

Apty's SDLC includes six phases, during which work products are defined and documents are created, reviewed, refined, and approved. Not every project will requires all the phases to be subsequently executed instead can be tailored to accommodate the unique aspects of projects. These phases are described in more detail in the following paragraphs.

Phase 1: Project Concept/Planning

Apty uses platforms like MindMeister/Trello to visualize, share and present the ideas to make our product better, where we categorize the ideas in a high-level manner based on UI, UX, Product sustainability, Infra and DevOps Environment, Product Core Improvements, Advanced Analytics and Reports.

Using these platforms enables individuals to collaborate on a mind map, where everyone can share ideas and plans, as well as vote on ideas in real-time, This also allows users to share and edit mind maps, leave comments and feedback, attach files, images, videos, and link to external, as well as internal sources, via embedded URLs. Mind maps can be shared with colleagues internally or externally via an email invitation to collaborate, or via a hyperlink. Mind maps can also be turned into interactive presentations. 

Once the ideas are mapped, the product manager prioritizes each idea and moves them to the backlog.  Once the ideas are moved to backlog there will be a product council meet held which will bring together all the key stakeholders that exist. The meet is held to set the direction for the cycle and review the ideas that are in backlog and establish project control by defining the sequence, estimated schedule, and responsibilities for implementing each task, which also defines the roles and responsibilities of the individuals so that it is clear as to everyone's role. At the end of the discussion, the decisions of the product council will be set to high priority.

Phase 2: Requirements Analysis

This phase formally defines the detailed functional user requirements using high-level requirements identified in the project concept/planning phases. The requirements that are defined in this phase will provide details sufficient for systems design to proceed. They need to be measurable, testable and relate to the business need or opportunity identified in the Initiation Phase.Major functions include critical processes to be managed, including mission critical inputs, outputs, and reports.

The purpose of this phase is to complete business process reengineering of the functions to be supported, e.g., verify what information drives the business process, what information is generated, who generates it, where does the information go, and who processes it, Develop detailed data and process models including system inputs and outputs, Develop the test and evaluation requirements that will be used to determine acceptable system performance.

Phase 3: Design

There are two ways to approach design in software development — one is the visual design and the other is the architectural structure of the app. The design phase focuses to design the functional requirements as per the requirement analysis phase technically and visually.   

Software Design

During the first iteration, the development team will be introduced to the requirements created during the previous stage. The team then discusses how to tackle these requirements, and proposes the tools needed to achieve the best result. For example, the team defines the programming language, frameworks, and libraries that the project is going to be using.

On further iterations, the developers discuss the feature implementation and the internal structure of the come.

UI/UX Design

During this stage, the designers create a rough mock-up of the UI. Designers will work with various layouts, color schemes, etc, to give a better look and feel for the product. Further iterations are spent refining the initial design and/or reworking it to suit the new features.

Phase 4: Implementation/Development

The development phase is about writing code and converting design documentation into the actual software within the software development process. This stage of SDLC is generally the longest as it’s the backbone to the whole process. Apty makes use of JIRA for project management, tracking bugs, stories, epics, and other tasks.

Developers will study and go deep into the features that are to be coded, and then will come up with solutions and will start building the actual software. Development will be done on a day-to-day basis and will be deployed inside the development environment (development.apty.io).

Phase 5: Testing 

Product features and functions are tested during the test phase, generally in QA environment(qa.apty.io). There are various types of tests (e.g., unit, integration, system, stress), but all test cases are run to verify the correctness and completeness of the software. Successful test execution validates the efficiency and effectiveness of the requirements and design. QA team will validate/test and certify the build then will deploy the same to the staging environment (staging.apty.io), this is the environment that contains the very stable version of the build, and for hotfixes, the development team will directly push the build to staging, and QA people will test it on staging environment. The SE/CS/UX team will also validate the build inside staging environment.

Phase 6: Deployment

This phase is initiated after the product has been tested and accepted. In this phase, the product is installed to support the intended business functions. Our R&D team will deploy the build to production (app.apty.io). SE and CS will present the demos inside demo environment (demo.apty.io) which is equivalent to the production environment and will update extensions on customer side. System performance is compared to objectives established during the planning phase. Implementation includes user notification, user training, installation of product onto production computers, and integration of the system into daily work processes. This phase continues until the system is operating in production in accordance with the defined user requirements.