Overview       1.         Find out why software engineering is important                                                  ...
Outline      ■          About Us2      ■          Motivation      ■          Search Android Components with Merodroid     ...
About Us      ■          Chair of Software Engineering, Prof.3                Colin Atkinson, at the University of        ...
Motivation      ■          Fast-growing market of mobile devices, mainly smartphones and internet4                tablets ...
Our Approach: Search-Driven Development      ■          Search-Driven Development5                  ■ Semantic component r...
Core Features (1)      ■          App queries6                  ■ Browse all components of an “app”                    ■  ...
Core Features (2)      ■          Create queries by7                  ■ Using a graphical wizard                    ■     ...
Indexing Android Software Artifacts (1)8                     Crawling Process                                             ...
Indexing Android Software Artifacts (2)      ■          Supported Android software artifacts9                  ■ Applicati...
Android Component Recognition       ■          Analysis of inheritance hierarchy of classes represented by the data model1...
Demo11     Software Engineering     Prof. Dr. Colin Atkinson   11
Conclusion       ■          Merodroid – Android Component Finder12                   ■ Software component search engine ad...
Questions13                                Thank you for listening!     Software Engineering     Prof. Dr. Colin Atkinson ...
Literature       ■          [1] Chair of Software Engineering, University of Mannheim,14                http://swt.informa...
Appendix: Query Samples           Description                     Query                        Result15         Find app b...
Upcoming SlideShare
Loading in …5
×

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

1,243 views

Published on

Reusing pre-existing components in the development of new applications has proven beneficial in mainstream software engineering for many years, and in the last decade a number of dedicated code search engines have sprung up to help developers find components that fulfil their needs. However, these all focus on general purpose software components rather than mobile applications or Android source code. A search engine specialising in the discovery of Android components would significantly boost the productivity of the Android development community and allow developers to exploit existing Android components [1] such as Activities, Services, Content Providers or Broadcast Receivers. In this talk we present Merodroid – a search engine for Android software components. Powered by Merobase [2], the leading code search engine from the University of Mannheim, Merodroid supports a wide range of search capabilities over a large index of pre-existing Android components harvested from open source projects on the Internet. In addition to simple text-based searches, retrieving components that have a given name or contain a given string, Merodroid offers also the ability to search for Android specific artifacts or information based on Android manifests [3]. The search capabilities of the Merobase also provides other interesting search possibilities for Android components such as signature or interface based searches that receive components matching a particular profile. In the near future we are planning to make Merodroid the basis of a vibrant Android component market between developers that complements the current Android Application market between developers and consumers. [1] Application Fundamentals, Android Developers, http://developer.android.com/guide/topics/fundamentals.html [2] Merobase Software Component Finder, http://www.merobase.com/ [3] AndroidManifest.xml, Android Developers, http://developer.android.com/guide/topics/manifest/manifest-intro.html

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,243
On SlideShare
0
From Embeds
0
Number of Embeds
162
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Overview 1. Find out why software engineering is important Merodroid1 ■ 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. 2. Outline ■ About Us2 ■ 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. 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. 4. Motivation ■ Fast-growing market of mobile devices, mainly smartphones and internet4 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. 5. Our Approach: Search-Driven Development ■ Search-Driven Development5 ■ 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. 6. Core Features (1) ■ App queries6 ■ 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. 7. Core Features (2) ■ Create queries by7 ■ 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. 8. 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
  9. 9. Indexing Android Software Artifacts (2) ■ Supported Android software artifacts9 ■ 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. 10. Android Component Recognition ■ Analysis of inheritance hierarchy of classes represented by the data model10 (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. 11. Demo11 Software Engineering Prof. Dr. Colin Atkinson 11
  12. 12. Conclusion ■ Merodroid – Android Component Finder12 ■ 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. 13. Questions13 Thank you for listening! Software Engineering Prof. Dr. Colin Atkinson 13
  14. 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. 15. Appendix: Query Samples Description Query Result15 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

×