Skip to main content

Software Life Cycle

  • Chapter
  • First Online:
Mobile Applications
  • 1066 Accesses

Abstract

This chapter valuates popular software engineering practices by gauging their impact on the life cycle of mobile apps. Section 1.1 provides an overview of process models that are widely recognized by the software industry and have been extensively adopted. This groundwork forms the basis for assessing the suitability of these process models in structuring the development of mobile apps in the subsequent sections. Adoption of process models and applications of key software engineering practices are demonstrated using example mobile apps conceived specifically for this experimentation.

For any adopted process model to be effective, a clear understanding, by all stakeholders, of the purpose of the mobile app under consideration for development is a necessity. In essence, this boils down to capturing specifications of a mobile app in a way that not only ensures clarity but also maintains objectivity. Keeping this in mind, groups and organizations, mandated to create software engineering standards, over the years have come up with a variety of formats and styles meant to help capture software system specifications from the perspectives of every involved stakeholder and hence with different needed levels of understanding because of their varying vested interests in the software. In Sects. 1.2 and 1.3, some of these standards are detailed and utilized in specifying the functionality and representing the quality of an example mobile app to highlight the clarity versus objectivity tradeoffs resulting from corresponding representations. This is followed by a demonstration of the adoption of Agile philosophy in the development of the example mobile app. Sections 1.4 and 1.5 step through the initial iterations of behavior-driven development (BDD) of the example mobile app supplemented by engineering practices of continuous integration and delivery.

The intent herein is neither to propose a new process model for mobile apps nor rationalize an existing one but simply to establish a reference point for comparisons with existing or emerging alternatives, as the software quality takes prominence further-on in this book. By exposing the rooted influences of the popular engineering practices, the chapter aims to help shape process models for mobile apps that impel success in their development, distribution, and acceptance as they continue to progressively assume prominent roles in the critical systems and infrastructures.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

eBook
USD 16.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 99.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. IEEE/EIA/ISO 12207 Standard for Information Technology - Software Life Cycle Processes

    Google Scholar 

  2. W. Royce, "Managing the Development of Large Software Systems", Proceedings of IEEE WESCON 26, pp. 1–9, 1970

    Google Scholar 

  3. B. Boehm, "A Spiral Model of Software Development and Enhancement", ACM SIGSOFT Software Engineering Notes, ACM, 11(4):14-24, August 1986

    Google Scholar 

  4. agilemodeling.com

  5. A. Wasserman, "Software engineering issues for mobile application development." Proceedings of the FSE/SDP workshop on Future of software engineering research, pp. 397-400, 2010

    Google Scholar 

  6. M. Nagappan and E. Shihab, "Future trends in software engineering research for mobile apps", in Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, volume 5, pages 21–32. IEEE, 2016.

    Google Scholar 

  7. P. Abrahamsson, "Mobile-D: an agile approach for mobile application development' Approach" Conference on Object Oriented Programming Systems Languages and Applications, pp. l74 - 175, 2004.

    Google Scholar 

  8. K. Tracy, "Mobile Application Development Experiences on Apple’s iOS and Android OS." IEEE Potentials, vol. 31, no. 4, pp. 30-34, 2012

    Article  Google Scholar 

  9. Y Jeong, J. Lee and G. Shin. "Development process of mobile application SW based on agile methodology." in 10th IEEE International Conference on Advanced Communication Technology, pp. 362-366, 2008.

    Google Scholar 

  10. V. Inukollu, D. Keshamoni, T. Kang and M. Inukollu, “Factors Influencing Quality of Mobile Apps role of Mobile App Development Life Cycle”, in International Journal of Software Engineering & Applications (IJSEA), Vol.5, No.5, 15-34, 2014

    Google Scholar 

  11. ISO/IEC/IEEE 29148 International Standard - Systems and software engineering -- Life cycle processes --Requirements engineering, 2011

    Google Scholar 

  12. IEEE 830 Recommended Practice for Software Requirements Specifications, 1998

    Google Scholar 

  13. uml.org

  14. agiledata.org/essays/tdd.html

  15. https://docs.cucumber.io/gherkin/reference/

  16. https://docs.cucumber.io/

  17. https://github.com/calabash/calabash-android

  18. https://developer.android.com/studio/test/

  19. https://git-scm.com/

  20. https://github.com/

  21. https://jenkins.io/

  22. R. Buse and T. Zimmermann, “Information needs for software development analytics”, in Proceedings of the 2012 International Conference on Software Engineering, pages 987–996. IEEE Press, 2012.

    Google Scholar 

  23. A. Miller, “A hundred days of continuous integration”, in Agile, pages 289–293. IEEE, 2008

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Exercises

Exercises

1.1.1 Review Questions

  1. 1.1

    Recommend a suitable process model for each of the following categories of mobile apps. Provide justification and any accompanying conditions for the recommended process model to be successful:

    1. (a)

      Personal safety apps

    2. (b)

      Mobile calendaring apps for business use

    3. (c)

      Mobile banking apps

    4. (d)

      Mobile social networking apps

    5. (e)

      Mobile entertainment apps such as mobile games

  2. 1.2

    Graphical user interface is a prominent component of any mobile app. Discuss when, during the life cycle, the activities related to its design and development are scheduled under Agile methodology in comparison to conventional process models.

  3. 1.3

    Iterative process models recommend implementing products in increments. Compare the criteria used by different iterative process models such as agile and spiral when prioritizing the requirements and selecting them for earlier or later iterations.

  4. 1.4

    How is a user story different from an epic? List common characteristics of good user stories.

  5. 1.5

    Discuss the criteria for identifying user roles when writing user stories for an app. Should photographer and blogger, identified as user roles in the user stories of the Photo Gallery app presented in this chapter, be generalized and referred to simply as the “user” in all the user stories?

  6. 1.6

    Update the UML Use Case Diagram of the Photo Gallery to include the following use cases:

    1. (a)

      The app allows a blogger to authenticate to a website. Authenticated, i.e., signed-in, blogger can upload the photos to the website.

    2. (b)

      The blogger can authorize the app using an OAuth server (refer to the chapter on security for a quick overview of OAuth). The app can then upload photos to the website on blogger’s behalf even if the blogger is not signed in to the website.

    3. (c)

      Discuss the use of “extend” or “include” relationship between the UploadPhoto and the new Authenticate or Authorize use cases due to parts (a) and (b). In other words, does UploadPhoto include Authenticate or Authorize, or does it extend from these use cases with the condition that (i.e., “if”) Authentication or Authorization succeeds?

  7. 1.7

    Provide arguments against using UML Use Case Diagrams to present non-functional requirements.

  8. 1.8

    Consider the following enhancements to the Photo Gallery app. Identify the ones that could be classified as non-functional requirements aimed at enhancing the usability of the app. Represent the remaining ones, i.e., the ones that translate to use cases, into the UML Use Case Diagram of the Photo Gallery app:

    1. (a)

      Provide user an option to display a Google Map with markers indicating locations where Photos were taken.

    2. (b)

      Allow user to specify the name of a city instead of a search area. The app performs necessary geocoding and searches for photos taken in that city.

    3. (c)

      Instead of cluttering the gallery screen (i.e., the layout of the MainActivity) with a number of buttons, provide a navigation drawer to facilitate navigation to other screens of the app.

  9. 1.9

    Suppose focus group sessions that were organized with a group of seniors to elicit requirements for a personal safety mobile app revealed the following needs:

    “As a senior living independently, when in distress, I would like to alert my care givers conveniently and quickly so that care could be provided in a timely fashion.”

    1. (a)

      Derive user stories from the above epic.

    2. (b)

      Draw a UML Use Case Diagram to capture the key user roles and the associated use cases. In particular, illustrate the following desired functionality:

      1. (a)

        A user, when in distress, can utter “HELP” to send an alert to the caregiver for assistance. The smartphone beeps periodically in the meantime to indicate that the help is on the way.

      2. (b)

        The app continuously monitors host smartphone’s accelerometer and gyroscope sensors for the purposes of fall detection. Upon sensing a fall, the app sends the above panic alert autonomously.

      3. (c)

        Upon receiving the panic alert, the caregiver is presented with user’s name, underlying medical conditions if any, and a button that the caregiver can click to call back the user.

      Use stereotypes and suggest any custom symbols if the UML standard appears limited in capturing the above functionality clearly and comprehensively.

  10. 1.10

    Suppose the focus group involved home care nurses and the elicitation of requirements for a mobile Care Calendar app for business use revealed the following need:

    “As a home care nurse providing care to seniors living independently at home, I would like my Calendar to organize my duty roster based on time as well as location so that I am able to complete my tasks on schedule; and allows me to update an assigned task’s status and report conveniently so that I am able to focus more on providing care and less on data entry.”

    1. (a)

      Derive user stories from the above epic.

    2. (b)

      Draw a UML Use Case Diagram to capture the key user roles and the associated use cases. In particular, illustrate the following desired functionality:

      1. (a)

        Users or their family members can register for care services and set a schedule.

      2. (b)

        Home care nurse can access the daily roster of tasks organized based on location and time.

      3. (c)

        Home care nurse can also set location- and time-based reminders.

      4. (d)

        Home care nurse is alerted to when the current location and time meets the criteria for one of the reminders set by the home care nurse.

      Use stereotypes and suggest any custom symbols if the UML standard appears limited in capturing the above functionality clearly and comprehensively.

  11. 1.11

    Compare the effectuality of defining a personal productivity mobile app as a set of user stories as per the Agile manifesto versus ISO/IEC/IEEE 29148 (previously IEEE 830)-based software requirements specifications.

  12. 1.12

    An unambiguous, complete, and correct requirements specification is also the one which is testable. Are the following requirements statements testable? Rewrite the statement so that an objective test of the underlying requirement is conceivable if, as such, the requirements statement appears to be not testable:

    1. (a)

      “Upon pressing the update button, the Care Calendar app shall update the corresponding fields of the database record with the values retrieved from the text boxes on the form”

    2. (b)

      “Upon detecting an emergency situation, the personal safety app shall broadcast the alert to the emergency contacts of the user”.

  13. 1.13

    Compare TDD, ATDD, and BDD development processes.

  14. 1.14

    Suppose a tester ran the Search Photos acceptance test of Listing 1.1 but the test failed indicating the following error. List the bug(s) that the programmer may have inadvertently created in the Photo Gallery code in Listing 1.1 that obviously couldn’t be caught at the compilation time but result in this error at run time.

    “androidx.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with id is <com.example.photogallery:id/etFromDateTime>”

  15. 1.15

    A call to the onView() method of the ViewMatcher component of Espresso may not work if the test requires locating a view in a RecyclerView of Android. Describe how such views could be located when doing automated testing of Android apps.

  16. 1.16

    Among the view matchers supported by Espresso is withClassName(..) matcher. Suggest a UI test example where this matcher is useful over others.

  17. 1.17

    Suppose the photos in the Photo Gallery app are presented as a list with each list item containing the photo along with its timestamp and the caption. Revise the Search Photos test of Listing 1.1 based on this assumption about the gallery view of the app.

  18. 1.18

    Among the common reasons that can cause builds to fail are developers checking in code that failed to compile due to missing files or developers checking in code that broke unit tests. What practices the developers can include in their CI automation strategy to prevent such errors?

  19. 1.19

    List benefits of atomic commits as supported by Git.

  20. 1.20

    Assuming that the version control system being employed is Git, list all the git commands, in the correct order, that will result in the creation of the version control tree pattern similar to the one discussed in this chapter.

  21. 1.21

    What are the benefits and disadvantages of developers doing fewer check-ins of their code in the code repositories?

  22. 1.22

    Other than pulling the code from the repository and building it frequently, what other activities shall be automated as part of continuous integration?

  23. 1.23

    Suggest software configuration management strategies including the version control tree structure as well as the CI workflow for the following development goals involving the Photo Gallery app:

    1. (a)

      Supporting Photo Gallery app across all major Android versions

    2. (b)

      Photo Gallery app developed natively for iOS in addition to Android

    3. (c)

      Photo Gallery app developed by cross-platform technologies such as React Native or Xamarin for Android as well as iOS

  24. 1.24

    Identify performance indicators that could be collected during the life cycle of mobile apps for the post-analysis of process model.

1.1.2 Lab Assignments

  1. 1.1

    Use Cucumber and Calabash to produce the acceptance tests for the Photo Gallery app using the acceptance criteria written in Gherkins GWT format.

  2. 1.2

    One of the reported benefits of Espresso is in its ability to time synchronize the test activities with the GUI thread of the app. Experimentally determine if an increased latency between the prev/next button being pressed and the ImageView being updated with the next/previous photo (perhaps simulated by calling Thread.Sleep() in the code) along with updates to the time, location, and caption fields would impact the correctness of the tests.

  3. 1.3

    Using Espresso’s IntentTestRule, create an alternative to the Take Photo acceptance test of Listing 1.1 to contrast it with UIAutomator.

  4. 1.4

    Enhance the Find Photos acceptance test of Listing 1.1 to verify that correct photos are found even when a longer time window is specified that may fetch more than one photo.

  5. 1.5

    Enhance the Find Photos acceptance test of Listing 1.1 to include the verification of keyword-based search as offered by the current implementation the app.

  6. 1.6

    Enhance the unit testing of the findPhotos() method of the FileStorage helper class by specifying a time window that may fetch multiple photos and verifying that correct photos are returned.

  7. 1.7

    Enhance the unit testing of the findPhotos() method of the FileStorage helper class by including the verification of keyword-based search.

  8. 1.8

    Associate date pickers to the EditViews of the SearchActivity of the Photo Gallery app, and rewrite the Espresso test so that these date pickers are utilized to pick the start and end dates of the time window for the search.

  9. 1.9

    Implement the version control tree structure proposed for the Photo Gallery app in this chapter. Provide visual verification by generating a graph of the resulting Git topology.

  10. 1.10

    Configure Jenkins and Android Studio to perform a debug build each time a feature branch is merged into the develop branch and a release build each time a release branch is merged into the master branch. All the unit tests and UI tests developed in this chapter must automatically run as part of the build.

  11. 1.11

    Enhance the YAML file, presented in Sect. 1.5, to build the Photo Gallery, using GitHub Actions, to also include Lint checks during the build.

  12. 1.12

    Implement continuous app update workflow utilizing Android’s PackageInstaller API. [Hint: Review the chapter on development fundamentals to understand the relevant Android concepts, e.g., Intents, permissions, Services, Broadcast Receivers and Activities, etc. For Android versions greater than or equal to Build.VERSION_CODES.N, an Intent Intent.ACTION_INSTALL_PACKAGE with flag Intent.FLAG_GRANT_READ_URI_PERMISSION could be used to install the APK file retrieved by the download manager. For lower versions Intent.ACTION_VIEW with flag Intent.FLAG_ACTIVITY_NEW_TASK set. For Android 10 and higher, the PackageInstaller API is recommended.]

Rights and permissions

Reprints and permissions

Copyright information

© 2022 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Randhawa, T.S. (2022). Software Life Cycle. In: Mobile Applications. Springer, Cham. https://doi.org/10.1007/978-3-030-02391-1_1

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-02391-1_1

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-02389-8

  • Online ISBN: 978-3-030-02391-1

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics