Contributed by Venkat on 9 Oct 2013
Neev builds applications in a Agile manner for Web, Mobile and Cloud. We follow certain best practices in every application we build, right from Business Analysis to Deployment. Through this blog, we would like to share some of those best practices.
We have following goals while building an application:
1. Business Analysis best practices.
2. A leaner, scalable, client agnostic backend.
3. Modern, responsive front-end.
4. Strict Test Driven Development (TDD) with 100% code coverage.
5. Continuous integration.
6. Use of latest technologies.
7. Well-documented and versioned restful APIs.
This is how we achieve our goals:
1. BA Best Practices:
To ensure each and every user story (required features and use cases) is communicated properly by the Business Analyst to both the back-end and front-end developers, we follow few Business Analysis best practices and proper documentation.
After the initial phase of Business Analysis, we come up with SRS for Minimum VIable Product (MVP).
Firstly, we create three different folders - Analysis, Design and Development.
- Analysis: Contains the SRS and Use cases
- Design: Approved wire-frames and UI designs
- Development: Excel sheets containing the user stories and status for backend and frontend development (Yet to start, In Progress, Completed). Updating an excel sheet helps others visualize the progress and keep track of all activities.
Based on target user groups, we divide the MVP into three broader phases:
1. Desktop App
2. Tablet App
3. Mobile App
And create three sub-folders within each folder - Analysis, Design and Progress.
We follow a convention wherein “User Story X” is described in a sub-folder of ‘Analysis’ folder, the design and progress exist in respective sub folders of Design and Development folders.
This helps us obtain a complete picture of a user story in a faster way, and any clarification is communicated to the Business Analyst / Admins through comments in the excel sheet immediately.
2. Leaner, scalable, client agnostic backend:
Use of token-based authentication and stateless backend makes an app scalable and client agnostic automatically. We use Rails API to make our backend leaner.
We also ensure that all APIs are restful and versioned.
3. Modern responsive front-end:
For example, we use Bootstrap and AngularJS in our front-end to ensure that we can take advantage of the awesomeness of AngularJS and Bootstrap.
4. TDD with 100% code coverage:
We use RSpec for unit testing and Cucumber for integration testing. We follow TDD religiously to ensure that all code is covered under unit and integration tests.
5. Continuous integration:
We typically use Cruise Control for continuous integration. We configure Cruise Control to generate Cucumber features output on every commit, which helps the customer and client side developers to check the features and measure progress by reading the output immediately.
6. Use of latest technologies:
We use the latest version of software and APIs for our back-end and front-end to ensure that all user interfaces are responsive, and we could take advantage of the latest features of the software used.
For example, in one of our projects,
We have used latest Ruby (2.0) and Rails (Rails 4) as our backend.
For frontend, we have used latest Angular JS and bootstrap to ensure that all user interfaces are responsive.
7. Well Documented and Versioned Restful APIs:
We use the output of our integration tests for documenting the features. This is referred by the client side developers and customers. Each and every feature of the application covers all possible scenarios to give a complete documentation about the feature. All APIs are restful and versioned. As the backend and frontend of the application are developed by different developers, we document our backend API thoroughly. So, we typically use our Cucumber features output as our documentation.
By following the above best practices, we are able to deliver the product faster and with the least possible defects.
-With inputs from Emil Soman and Asit Kumar Moharna
Visit us at Neevtech.com to know more about our offerings.
Tags: Admin, Analysis, AngularJS, api, application, Bootstrap, Business Analysis, Business Analyst, cruise control, cucumber, Design, desktop, developer, development, documentation, integration testing, laptop, mobile, MVP, Neev, Project Management, Rails, Redmine, RSpec, ruby, SRS, Tablet, TDD, test driven development, unit testing, user story, Web
© 2013 Blog | Neev Technologies