PLATFORM INDEPENDENT SOFTWARE DEVELOPMENT MONITORING Mária Bieliková, Karol Rástočný, Eduard...

Preview:

Citation preview

PLATFORM INDEPENDENT SOFTWARE DEVELOPMENT MONITORINGMária Bieliková, Karol Rástočný, Eduard Kuric, et. al.

{name.surname}@stuba.sk

www.fiit.stuba.sk

Motivation

• Discovering problems in software development process• Source code metrics [Kothapalli, C., et al. 11]

• Monitoring developers’ activities [Fritz, T., et al. 07]

• Source code visualization [Bohnet, J., Dӧllner, J. 11]

• Combination of multiple approaches• Sharing partial results/metrics about software and developers

• Different languages and IDEs

2/22

PerConIK (perconik.fiit.stuba.sk)

• Personalized Conveying Information and Knowledge

• Dynamic data space of a software house• Source code files• Project documentations• User activity logs

• Descriptive metadata: Information Tags• Shared space of descriptive information• Decrease redundancy of data processing• Support inference over preprocessed information

3/22

Information Tags

• Descriptive metadata with a semantic relation to a tagged content, defined by:• Type – defines a type and a meaning of the information tag;

• Anchoring – identifies a tagged information artefact (resource);

• Body – represents a structured information, a structure of which corresponds to the type of the information tag.

4/22

1: int counter = 0;2: for (int i=0; i<10; i--)3: {4: counter++;5: }

Example

Type: BugAnchor: Ln 2Body: Cyclic Loop

Type: Edited byAnchor: Ln 2 Col 20-23Body: John; Peter

5/22

Data Layers

6/22

Data Processing

Activity Logs

Documents (source code, web pages)

DataChange

sets

ActivitiesUser

Model

Document Model

Model updates

Information Tags

MonitoringServices

ModelingServices

TaggingServices

7/22

End User Services

Developer

Management Supporting Data

User Model

Document Model

User Metadata

Information Tags

Document Metadata

Development Supporting Data

Developer Oriented Services

Management Oriented Services

Team Leader

Documents

8/22

Documents

• Types• Source code files• Web pages (Q&A sites, community forums, …)• Documentations (specifications, API, tutorials, …)

• Document models• Abstract syntax trees• Nodes are mapped across versions

9/22

Activity Logs

• IDE: copy/paste/open/edit/find/check in …• Browser: visit/search/find/copy/tabs …• OS: running applications/office tools …

10/22

Tagging: Manual

• Structured commentaries• Written directly in source code by developers• Developers are not disturbed from writing source codes

• Supported by IDE plugins

11/22

Tagging: Automatic

• Rule-based tagger – processes events as stream of RDF graphs

• Rule: CSPARQL Query + Tagging action

Activity Logs

ASTRCS

Stream Generator

Stream Processor

Info.Tags

Rules

Rules Processor

CSPARQLQueries

Actions12/22

Case Study: PerConIK

• Software House (1 year)• Developers: 6• Source Codes: 6,517 (in 17,330 versions)• Activity logs: 769,080• Information Tags: 431,160

• University: Team Project (1 semester)• Developers: 40• Source Codes: 6,791 (in 12,724 versions)• Activity logs: 886,465• Information Tags: 155,868

13/22

Information Tags Repository [WISM12]

• Based on MongoDB• Fast data access • Horizontally scalable

• Information tag model• Based on W3C Open Annotation Model• Free form model

• SPARQL endpoint• Query processing based on MapReduce

14/22

Information Tags Maintenance

• Maintenance tasks• Generating missing information tags• Repairing affected information tags• Removing invalid information tags

• Maintained information• Body – tagging services; add/modify/remove rules

• Anchoring – robust location descriptor [DEXA13]

15/22

Example

1: int counter = 0;2: for (int i=0; i<10; i--)3: {4: counter++;5: }

Type: BugAnchor: Ln 2Body: Cyclic Loop

16/22

Example

1: int counter = 0;2: int i=0;3: for (i=0; i<10; i--)4: {5: counter++;6: } Type: Bug

Anchor: Ln 2Body: Cyclic Loop?

17/22

Robust Location Descriptor [DEXA13]

• Source code – sequence of comparable textual elements

• Index-based location descriptor• Indexes of the first and the last letter• Simple, fast, straight position comparison• Error-prone

• Context-based location descriptor• Tagged text, context after and before• Robust, adds context to information tag• Time and memory complexity

18/22

Location Descriptor: Example

Indexes: 22, 27

Context before: in Set )

Tagged text: x . Add

Context after: ( 45 )

foreach (var x in Set) x.Add(45);

foreach ( var x in Set ) x . Add ( 45 ) ;

19/22

Developers’ Karma

• Measure of programmers’ experiences• Calculated from information tags anchored to source code written by a programmer• Interaction with source code (copy/pase, degree of written and committed lines of code)

• Component complexity (LLOC, Cyclomatic complexity, …)

• Used technologies

20/22

Search in Source Code [SOFSEM2013]

• Based on developers’ karma and source code concepts (bags of keywords describing source code artifacts)1. Query is reformulated to bag of words

2. Find information tags with concepts similar to the query and mark tagged artifacts as results

3. Load information tags with karmas of results’ authors

4. Order results by concepts similarity to query and developers’ karmas

21/22

Conclusions and Future Work

• Environment for development monitoring• Information tags

• Describe resources in an information space• Enhance information processing

• Software metrics based on developers’ activity• Future work

• Deployment on larger projects of the software house• Evaluation (qualitative – eye tracking, interviews;

quantitative – manually annotated source code)• Additional supporting services, metrics, …

22/22

Recommended