In the recent days, time-to-market has become crucial for any of the application development. Time-to-market can be reduced by reducing the development life cycle. Application development can be made better with better tools in place.
One aspect of digital transformation is about using better tools and technologies for rapid deployment of solutions.
Android being the most favored development platform of today’s age is open source. Lets us see what open source tools are available on different phases of the android application development.
Firstly, majority of development are based on agile methodology. In my experience, agile follows the below cycle on every sprint.
Requirement phase involves –
- Business discussion
- Mock-up/Wire-frame creations
- Cutting Graphics
Trello is an open source tool for project tracking with agile methodology. It helps in showing big picture to minute details of the projects. Once when requirements are loaded by the business as user stories, the design team comes out with the Mock-up for every resolution of the mobile phone. Also they help in cutting graphics needed for the developers. Developers then start assigning themselves tasks from the backlog in kanban board.
Development forms the core of the project life cycle. This mostly involves,
- Authentication – oAuth comes in handy to solve the authentication problem. Allow the user to login using his existing gmail ID or make use of any of the Identity cloud management systems.
- API’s – Use many of the API’s from google to provide a rich user experience. Google Cloud API’s come in handy for this purpose.
- Sharing – Facebook, Twitter, G+ have tailor made SDK’s which can be integrated with the application at no time to enable sharing in your app.
- Debugging – Android studio itself provides tools like DDMS, Hierarchy viewer, Memory monitor, Logcat to help with debugging. Tools like Stetho, Charles proxy can be used to monitor the network calls which helps to edit the response from server to simulate negative scenarios.
- Releasing build
- DevOps – Gradle scripts in association with Jenkins helps in releasing the build as scheduled. Chef helps you to turn the infrastructure to code. Infrastructure of the server itself is automated. Finally all the generated builds are stored in artifactories with the open source tool jFrog.
- TestLabs – The generated builds are automatically uploaded to Google test labs for testing.
- Enhancing security
- Static code analysis – SonarQube with several rules can help in performing the static code analysis. Code smells and code duplication can also be determined by the same.
- Code obfuscation – ProGuard helps in obfuscating the code with the proguardrules.txt file. Make sure that you keep a copy of mapping.txt file that will be generated while we generate app builds. This will be helpful in firebase crash-reporting in a latter stage.
Testing stages involves steps like,
- Defect tracking – Bugzilla is an open source tool to log and track the defects.
- Testing automation – Automation of the regression test cases helps in speeding up the release cycle. Also it reduces the human errors in testing the same feature again and again. Dagger is a dependency injection tool which along with Espresso helps in automating the UI test cases even involving the Fingerprint recognition. Spoon from Square helps in recording the test outputs by taking screenshots or by recording video of the mobile.
- Developer support – Firebase crash reporting helps the developer to look at both the fatal and non-fatal issues. NoSQL DB’s like MongoDB can be used to store all the app logs which might be used to debug the application.
Analyzing the application data post its release to public, helps to identify what went well and what went wrong in the application. This also forms the basis on what to be included/removed in application.
- Analytics – Firebase Analytics has numerous options like Events, Funnels, Attribution, Streamviews, etc to represent the captured analytics data in a neat visualized dashboard.
- Configuration management – Firebase Remote Config and Realtime Database helps in customizing the app for each user. Make updates to the app without deploying new versions of the app. Data sync across connected devices in milliseconds helps the user interact with the app regardless of network connectivity.
Overall – good tools and practices makes a developer life simpler. This results in better quality of the end product. Majority of the tools are provided by google itself to even make a free lance project a world class one. Below diagram depicts the end-to-end phases and tools used in android application development.
Now, I am more interested to hear from you on what other best practices and tools were used in your application development life cycle.