220 likes | 394 Views
Platform Independent software development monitoring. M á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]
E N D
Platform Independent software development monitoring Má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
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
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.
Example 1:intcounter = 0; 2:for (inti=0; i<10; i--) 3: { 4: counter++; 5: } Type: Edited by Anchor: Ln 2 Col 20-23 Body: John; Peter Type: Bug Anchor: Ln 2 Body: Cyclic Loop
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
Activity Logs • IDE: copy/paste/open/edit/find/check in … • Browser: visit/search/find/copy/tabs … • OS: running applications/office tools …
Tagging: Manual • Structured commentaries • Written directly in source code by developers • Developers are not disturbed from writing source codes • Supported by IDE plugins
Tagging: Automatic • Rule-based tagger – processes events as stream of RDF graphs • Rule: CSPARQL Query + Tagging action ActivityLogs CSPARQL Queries Stream Generator Stream Processor AST RCS Rules Info. Tags RulesProcessor Actions
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
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
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]
Example 1:intcounter = 0; 2:for (inti=0; i<10; i--) 3: { 4: counter++; 5: } Type: Bug Anchor: Ln 2 Body: Cyclic Loop
Example 1:intcounter = 0; 2:inti=0; 3:for (i=0; i<10; i--) 4: { 5: counter++; 6: } Type: Bug Anchor: Ln 2 Body: Cyclic Loop ?
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
Location Descriptor: Example foreach (var x in Set) x.Add(45); Indexes: 22, 27 Context before: in Set ) Tagged text: x . Add Context after: ( 45 ) foreach ( var x in Set ) x . Add ( 45 ) ;
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, Cyclomaticcomplexity, …) • Used technologies
Search in Source Code [SOFSEM2013] • Based on developers’ karma and source code concepts (bags of keywords describing source code artifacts) • Query is reformulated to bag of words • Find information tags with concepts similar to the query and mark tagged artifacts as results • Load information tags with karmas of results’ authors • Order results by concepts similarity to query and developers’ karmas
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, …