Overview

       1.         Find out why software engineering is important

                                                  Merodroid
1
                     ■         see some software engineering failures

       2.         Get acquainted with –
                     ■         the Chair of Software Engineering
                                ■ the research A Search Engine for
                                ■
                                      Android Software Components
                                    the people
                                ■ the teaching


                                    Colin Atkinson, Marcus Kessel, Marcus Schumacher

                                    droidcon. 2012, Berlin




    Software Engineering
    Prof. Dr. Colin Atkinson                                       1
Outline

      ■          About Us
2
      ■          Motivation
      ■          Search Android Components with Merodroid
                  ■ What is Merodroid?
                    ■          Core Features
      ■          How does it work?
                  ■ Indexing of Android Software Artifacts
                    ■          Analysis and Recognition
      ■          Demo
      ■          Conclusion
      ■          Appendix




    Software Engineering
    Prof. Dr. Colin Atkinson                              2
About Us

      ■          Chair of Software Engineering, Prof.
3                Colin Atkinson, at the University of
                 Mannheim [1]

                                                                Prof. Dr. Colin Atkinson
      ■          Research Areas
                  ■ Software Reuse
                    ■          Model-Driven Development
                    ■          Component/Service Oriented
                               Development
                                                                M.Sc. Wirtschaftsinformatik
                                                                Marcus Kessel

      ■          Search Driven Development – current
                 research project
                  ■ Merobase – Software Component
                      Finder
                                                                Dipl. Informatik
                                                                Marcus Schumacher
    Software Engineering
    Prof. Dr. Colin Atkinson                                3
Motivation

      ■          Fast-growing market of mobile devices, mainly smartphones and internet
4                tablets
                  ■ Lots of mobile applications already exist (~375.000 in Android Market,
                       February 2012 [2])
                    ■          High demand for new mobile applications (e.g. provide all kind of
                               functionality as “apps”)
      ■          Developer perspective
                  ■ Redundant work ..
                    ■          Tired of reinventing the wheel for every new app
      ■          Organizational perspective
                  ■ Reduce the effort and save money at application development


      ■          Component Reuse



    Software Engineering
    Prof. Dr. Colin Atkinson                                  4
Our Approach: Search-Driven Development

      ■          Search-Driven Development
5
                  ■ Semantic component retrieval
                    ■          Special query language and constraints to retrieve
                               potential reuse candidates
      ■           Merobase
                  ■ General search engine for software components
      ■           Merodroid
                  ■ Component search engine based on Merobase
                      adjusted to the needs of Android application
                      developers
                    ■          Specifics of Android application development
                                ■ Project layout, resources,
                                  AndroidManifest.xml
                                ■ Special component types
                                ■ …


    Software Engineering
    Prof. Dr. Colin Atkinson                                   5
Core Features (1)

      ■          App queries
6
                  ■ Browse all components of an “app”
                    ■          Includes additional information sources (AndroidManifest.xml, Android
                               Market information, …)

       ■          Component queries
                   ■ Query for specific Android application
                      components
                                ■ activity, fragment, service, content
                                  provider, broadcast receiver
                    ■          Interface/method signature search
                    ■          Keyword search
                    ■          Constraints (restrict result set)

      ■          Combined queries: app + component + constraints


    Software Engineering
    Prof. Dr. Colin Atkinson                                       6
Core Features (2)

      ■          Create queries by
7
                  ■ Using a graphical wizard
                    ■          Hand
      ■          Component details
                  ■ Source and component type
                    ■          Tree-like view of methods and fields
                    ■          Metrics
                    ■          Documentation (JavaDoc)
                    ■          Intent filter and capabilities defined in AndroidManifest.xml
                    ■          Android Market information (if available)
      ■          Unrelated Android components
                  ■ Usual Java classes
      ■          Publish your own components


    Software Engineering
    Prof. Dr. Colin Atkinson                                   7
Indexing Android Software Artifacts (1)

8

                     Crawling Process

                                              Recognition                Index
                                                             Parsing &
                                Crawling       of artifact
                                                              Linking
                                                  type


                    Analysis: Recognition & Data Mining Process

                                              Recognition
                               Iterate over       of         Linking     Index
                                   index      components




    Software Engineering
    Prof. Dr. Colin Atkinson                            8
Indexing Android Software Artifacts (2)

      ■          Supported Android software artifacts
9
                  ■ Application projects (incl. resources)
                    ■          APK, Dalvik Executable
                    ■          Single classes (source & binary)
      ■          Java classes are analyzed and indexed
                  ■ Fields, methods, inheritance hierarchy, dependencies …
      ■          AndroidManifest.xml
                  ■ Additional information source
                    ■          Capabilities of components (intent filter)
      ■          Recognition of components
                  ■ Android (application) components (e.g. activity) are tagged
                    ■          Tagged components are linked with additional information from
                               AndroidManifest.xml
                                ■ E.g. Intent filter declarations


    Software Engineering
    Prof. Dr. Colin Atkinson                                        9
Android Component Recognition

       ■          Analysis of inheritance hierarchy of classes represented by the data model
10                (tree traversal)
       ■          Interfaces/classes of key components are known from the Android API
       ■          Interfaces/classes can be easily configured for later extensibility (e.g.
                  Android API changes)
       ■          For instance, any Activity implementation has to inherit from the class
                  android.app.Activity




     Software Engineering
     Prof. Dr. Colin Atkinson                           10
Demo

11




     Software Engineering
     Prof. Dr. Colin Atkinson   11
Conclusion

       ■          Merodroid – Android Component Finder
12
                   ■ Software component search engine adjusted to the needs of Android
                      Application developers
                     ■          Powerful query language
                     ■          Links several information sources (components, AndroidManifest.xml,
                                Android Market ..)
       ■          Public web service available at merodroid.com
                   ■ Search for Android application projects & components crawled from
                        open source repositories
       ■          Future work
                   ■ Eclipse plugin (http://code-conjurer.org)
                     ■          Test-driven development support (query components by using JUnit
                                tests/TestSheets)




     Software Engineering
     Prof. Dr. Colin Atkinson                                12
Questions

13


                                Thank you for listening!




     Software Engineering
     Prof. Dr. Colin Atkinson               13
Literature

       ■          [1] Chair of Software Engineering, University of Mannheim,
14                http://swt.informatik.uni-mannheim.de/
       ■          [2] AppBrain, Android Statistics, http://www.appbrain.com/stats/number-of-
                  android-apps (02/20/2012)




     Software Engineering
     Prof. Dr. Colin Atkinson                         14
Appendix: Query Samples
           Description                     Query                        Result
15         Find app by id                  packageId:com.example.       All related components
                                           app¹
           Find Android application        android:activity or          All Activities
           component                       android:service or           All Services
                                           android:fragment or          All Fragments
                                           android:provider or          All ContentProviders
                                           android:receiver or          All BroadcastReceivers
           Find all Activities of app ..   packageId:com.example.       All Activities of app ..
                                           app¹ android:activity
           Find all Activities             android:activity             List of all Activities supporting
           supporting mime-type:           mimetype:image/jpeg          specified mime-type (known from
           image/jpeg                                                   manifest)
           Find all Activities             packageId:com.example.       List of all Activities supporting
           supporting mime-type:           app¹ android:activity        specified mime type in app ..
           image/jpeg in app ..            mimetype:image/jpeg

           Find Activity by name           android:activity Sudoku      List of all Activities containing
                                                                        „Sudoku“ as name


      ¹ Unique package id known from AndroidManifest.xml (also widely used in several app markets as identifier)

     Software Engineering
     Prof. Dr. Colin Atkinson                              15

droidcon 2012: Merodroid – A Search-Engine for Android Software Components, Marcus Kessel, University Mannheim

  • 1.
    Overview 1. Find out why software engineering is important Merodroid 1 ■ see some software engineering failures 2. Get acquainted with – ■ the Chair of Software Engineering ■ the research A Search Engine for ■ Android Software Components the people ■ the teaching Colin Atkinson, Marcus Kessel, Marcus Schumacher droidcon. 2012, Berlin Software Engineering Prof. Dr. Colin Atkinson 1
  • 2.
    Outline ■ About Us 2 ■ Motivation ■ Search Android Components with Merodroid ■ What is Merodroid? ■ Core Features ■ How does it work? ■ Indexing of Android Software Artifacts ■ Analysis and Recognition ■ Demo ■ Conclusion ■ Appendix Software Engineering Prof. Dr. Colin Atkinson 2
  • 3.
    About Us ■ Chair of Software Engineering, Prof. 3 Colin Atkinson, at the University of Mannheim [1] Prof. Dr. Colin Atkinson ■ Research Areas ■ Software Reuse ■ Model-Driven Development ■ Component/Service Oriented Development M.Sc. Wirtschaftsinformatik Marcus Kessel ■ Search Driven Development – current research project ■ Merobase – Software Component Finder Dipl. Informatik Marcus Schumacher Software Engineering Prof. Dr. Colin Atkinson 3
  • 4.
    Motivation ■ Fast-growing market of mobile devices, mainly smartphones and internet 4 tablets ■ Lots of mobile applications already exist (~375.000 in Android Market, February 2012 [2]) ■ High demand for new mobile applications (e.g. provide all kind of functionality as “apps”) ■ Developer perspective ■ Redundant work .. ■ Tired of reinventing the wheel for every new app ■ Organizational perspective ■ Reduce the effort and save money at application development ■ Component Reuse Software Engineering Prof. Dr. Colin Atkinson 4
  • 5.
    Our Approach: Search-DrivenDevelopment ■ Search-Driven Development 5 ■ Semantic component retrieval ■ Special query language and constraints to retrieve potential reuse candidates ■ Merobase ■ General search engine for software components ■ Merodroid ■ Component search engine based on Merobase adjusted to the needs of Android application developers ■ Specifics of Android application development ■ Project layout, resources, AndroidManifest.xml ■ Special component types ■ … Software Engineering Prof. Dr. Colin Atkinson 5
  • 6.
    Core Features (1) ■ App queries 6 ■ Browse all components of an “app” ■ Includes additional information sources (AndroidManifest.xml, Android Market information, …) ■ Component queries ■ Query for specific Android application components ■ activity, fragment, service, content provider, broadcast receiver ■ Interface/method signature search ■ Keyword search ■ Constraints (restrict result set) ■ Combined queries: app + component + constraints Software Engineering Prof. Dr. Colin Atkinson 6
  • 7.
    Core Features (2) ■ Create queries by 7 ■ Using a graphical wizard ■ Hand ■ Component details ■ Source and component type ■ Tree-like view of methods and fields ■ Metrics ■ Documentation (JavaDoc) ■ Intent filter and capabilities defined in AndroidManifest.xml ■ Android Market information (if available) ■ Unrelated Android components ■ Usual Java classes ■ Publish your own components Software Engineering Prof. Dr. Colin Atkinson 7
  • 8.
    Indexing Android SoftwareArtifacts (1) 8 Crawling Process Recognition Index Parsing & Crawling of artifact Linking type Analysis: Recognition & Data Mining Process Recognition Iterate over of Linking Index index components Software Engineering Prof. Dr. Colin Atkinson 8
  • 9.
    Indexing Android SoftwareArtifacts (2) ■ Supported Android software artifacts 9 ■ Application projects (incl. resources) ■ APK, Dalvik Executable ■ Single classes (source & binary) ■ Java classes are analyzed and indexed ■ Fields, methods, inheritance hierarchy, dependencies … ■ AndroidManifest.xml ■ Additional information source ■ Capabilities of components (intent filter) ■ Recognition of components ■ Android (application) components (e.g. activity) are tagged ■ Tagged components are linked with additional information from AndroidManifest.xml ■ E.g. Intent filter declarations Software Engineering Prof. Dr. Colin Atkinson 9
  • 10.
    Android Component Recognition ■ Analysis of inheritance hierarchy of classes represented by the data model 10 (tree traversal) ■ Interfaces/classes of key components are known from the Android API ■ Interfaces/classes can be easily configured for later extensibility (e.g. Android API changes) ■ For instance, any Activity implementation has to inherit from the class android.app.Activity Software Engineering Prof. Dr. Colin Atkinson 10
  • 11.
    Demo 11 Software Engineering Prof. Dr. Colin Atkinson 11
  • 12.
    Conclusion ■ Merodroid – Android Component Finder 12 ■ Software component search engine adjusted to the needs of Android Application developers ■ Powerful query language ■ Links several information sources (components, AndroidManifest.xml, Android Market ..) ■ Public web service available at merodroid.com ■ Search for Android application projects & components crawled from open source repositories ■ Future work ■ Eclipse plugin (http://code-conjurer.org) ■ Test-driven development support (query components by using JUnit tests/TestSheets) Software Engineering Prof. Dr. Colin Atkinson 12
  • 13.
    Questions 13 Thank you for listening! Software Engineering Prof. Dr. Colin Atkinson 13
  • 14.
    Literature ■ [1] Chair of Software Engineering, University of Mannheim, 14 http://swt.informatik.uni-mannheim.de/ ■ [2] AppBrain, Android Statistics, http://www.appbrain.com/stats/number-of- android-apps (02/20/2012) Software Engineering Prof. Dr. Colin Atkinson 14
  • 15.
    Appendix: Query Samples Description Query Result 15 Find app by id packageId:com.example. All related components app¹ Find Android application android:activity or All Activities component android:service or All Services android:fragment or All Fragments android:provider or All ContentProviders android:receiver or All BroadcastReceivers Find all Activities of app .. packageId:com.example. All Activities of app .. app¹ android:activity Find all Activities android:activity List of all Activities supporting supporting mime-type: mimetype:image/jpeg specified mime-type (known from image/jpeg manifest) Find all Activities packageId:com.example. List of all Activities supporting supporting mime-type: app¹ android:activity specified mime type in app .. image/jpeg in app .. mimetype:image/jpeg Find Activity by name android:activity Sudoku List of all Activities containing „Sudoku“ as name ¹ Unique package id known from AndroidManifest.xml (also widely used in several app markets as identifier) Software Engineering Prof. Dr. Colin Atkinson 15