platform independent software development monitoring mária bieliková, karol rástočný, eduard...
Post on 20-Jan-2016
219 Views
Preview:
TRANSCRIPT
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
top related