Android application to find and verify domestic workers. I designed and developed this app applying Software Engineering concepts while working as a mobile application developer intern in the summer of 2018.
|Product Design, Mobile Application Development|
|Kewal Shah (Individual Project)|
Languages and Tools:
|Draw.io, Java (Android), JSON, Google Firebase, Facebook SDK, Android Studio|
I worked on this project titled ‘Acute’ while interning at a company named ‘Acute Informatics’ during my summer vacation of 2018. After a brief technical interview, the company hired me as a mobile application developer. I was assigned the task of designing an app that helps in finding and verifying the identity of domestic workers. The app was divided into two modules, the “Add Employee” module using which employers could give ratings to their current or ex-employees and the “Search Employee” module, which could help people looking to hire domestic workers in a region. Besides analyzing requirements and designing the layout for all screens in Android Studio, I was also given the responsibility of implementing the “Add Employee” module using Java and real-time storage of Google’s Firebase. I worked under the supervision of the company’s Principal Solutions Architect, who was responsible for mentoring developers and interacting with stakeholders.
From the Software Engineering course in my Computer Engineering program, I had learned that it is essential to study customer requirements first, which can be done with the help of different scenario-based and flow-oriented elements in the Analysis Model. These can provide necessary information during the design and development phase of a project.
Therefore, I created a data flow and control flow diagram for Acute using a UML drawing tool called Draw.io. The Data Flow Diagram (DFD) is a way of representing the flow of data at different abstraction levels in a system. On the other hand, the Control Flow Diagram (CFD) describes the order in which individual processes and functions are executed.
Data Flow Diagram
Control Flow Diagram
I estimated the approximate cost of the entire project using the Intermediate Constructive Cost Model (COCOMO). The model considers the development cost of three project types – Organic (Only GUI), Semi-detached (GUI & Database), Embedded (GUI, Database & Network Capabilities). The Effort is calculated in person-months (pm), which is the amount of work performed by the average person in one month, and the Development Time is calculated in months (m).
- Ratings on a scale of 0 to 1 are given with respect to different cost drivers
- All selected ratings (marked in red color in the table below) are multiplied to obtain the Effort Adjustment Factor (EAF)
- Effort and Development Time (Tdev) is calculated for each project type using coefficient values a, b, c, and KDSI (or KLoC) which is the estimated number of thousands of delivered lines of code for the project
- EAF is multiplied with Effort and Tdev to get the corrected values of Effort and Time
Project cost estimation using the Constructive Cost Model
In the early design phase of the project, simple outlines for the placement of UI components were created, as shown below, based on the analysis of user requirements.
Since the app was meant to be released only on Android, and I was familiar with using layout tools in Android Studio, I designed and built the UI of the screens in Android Studio’s Layout Editor.
I was responsible for implementing user authentication and allowing employers to add details of domestic workers through the “Add Employee” part of the app in Android.
In the authentication module, I implemented the features of allowing users to create new accounts, logging in with an existing account, and signing in using Google and Facebook using their software development kits (SDKs). Following were the different validations I considered while implementing it:
- Do not allow to create an account with an invalid email
- Let the user know if email id is already taken
- Allow creation of passwords of a minimum length of 6 characters
- Inform the user if the password does not match with the registered email
The Add Employee module required me to design several form fields in a way that the user does not feel the task to be too tedious. Using Ben Shneiderman’s Eight Golden Rules as a reference, I tried to simplify the user interface by:
- Using auto-complete to fill in form fields like names of cities
- Using Android DatePicker widget to select dates instead of typing
- Setting default keyboards according to the field type. For example, if a user focuses on a phone number field, the keyboard automatically shows up numbers instead of alphabets
- Creating easily navigable shortcuts, for example, a Home Icon on the top right corner, would take the user to the Dashboard from anywhere in the app.
I implemented front-end validations in the form fields using Regular Expressions (Regex). For example, the passport number field would only accept inputs that match its pattern. I also designed a custom dialog box to select an image from the camera or image gallery
The data read from the input fields were converted into a JSON object and sent to Google Firebase’s real-time data storage. From there, the app can search for data when a user wished to find an employee.
Before starting to develop this app, I was familiar with the basics of Android application development owing to the subject of Programming Languages in my undergraduate degree. However, during the development process, there were several instances when I was stuck. Eventually, I would always find a way out by either asking for help from other software developers hired by the company over Skype or finding solutions on online Q & A websites. Overall, this project was a great learning experience for me as I learned how to practically apply concepts of Software Engineering, Design, and Object-Oriented Programming.