Application Performance Monitoring & Architecture Discovery with Kieker Prof. Dr. Wilhelm (Willi) Hasselbring Competence Cluster Software Systems Engineering http://www.kosse-sh.de/ Software Engineering Group, Kiel University http://se.informatik.uni-kiel.de/ WAIS Seminar Southampton, April, 3 rd 04 W. Hasselbring (CAU) Kieker Southampton / 5
Thanks to Contributors Several persons contributed to Kieker and the contents of this presentation in the past eight years: Tillmann (Till) Bielefeld, Peer Brauer, Philipp Döhring, Jens Ehlers, Nils Ehmke, Florian Fittkau, Thilo Focke, Sören Frey, Tom Frotscher, Henry Grow, André van Hoorn, Reiner Jung, Benjamin Kiel, Dennis Kieselhorst, Holger Knoche, Arnd Lange, Marius Löwe, Marco Lübcke, Felix Magedanz, Nina Marwede, Robert von Massow, Jasminka Matevska, Oliver Preikszas, Sönke Reimer, Bettual Richter, Matthias Rohr, Nils Sommer, Lena Stöver, Jan Waller, Robin Weiß, Björn Weißenfels, Matthias Westphal, Christian Wulf Alphabetic list of people who contributed in various forms and intensity W. Hasselbring (CAU) Kieker Southampton / 5
Agenda Dynamic Software Analysis Kieker Monitoring & Analysis Framework 3 Application Performance Monitoring 4 Reverse Engineering 5 Summary and Future Work W. Hasselbring (CAU) Kieker Southampton 3 / 5
Static Analysis of Software Systems To distinguish it from dynamic analysis Dynamic Software Analysis Static analysis may is applied to the program code to check the programs quality for various concerns, some examples: Clone detection Bauhaus Code metrics JavaNCSS Coding conventions Checkstyle Fault patterns FindBugs Architecture analysis Sotograph W. Hasselbring (CAU) Kieker Southampton 4 / 5
Dynamic Analysis of Software Systems "Dynamic Software Analysis Dynamic analysis, or the analysis of data gathered from a running program, has the potential to provide an accurate picture of a software because it exposes the system system's actual behavior. This picture can range from up to class-level details high-level architectural views [...]. " (Cornelissen et al. 009) W. Hasselbring (CAU) Kieker Southampton 5 / 5
Dynamic Analysis of Software Systems (cont d) "Dynamic Software Analysis Among the benefits over static analysis are the availability of runtime information and, in the context of object-oriented software, the exposure of object identities and the actual resolution of late binding. A drawback is that dynamic analysis can only provide a partial picture of the system, i.e., the results obtained are valid for the scenarios that were exercised during the analysis. " (Cornelissen et al. 009) W. Hasselbring (CAU) Kieker Southampton 6 / 5
Dynamic and Static Analysis of Software Dynamic Software Analysis Static analysis alone is not sufficient to study the internal behavior of software systems comprehensively Continuous monitoring allows to gather a system s actual runtime behavior resulting from production usage profiles So, how to collect runtime data from running systems? Instrumentation Profiling employed in development environments Monitoring employed in production environments An comprehension of the requirements of system operation is required to do the right things at development time Instrument upfront! Integrate with continuous integration and delivery. Have you heard of DevOps? W. Hasselbring (CAU) Kieker Southampton 7 / 5
How does Monitoring work? Example instrumentation: Measuring response times Dynamic Software Analysis 0 0 30 40 50 Mean Median Instrumentation 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 0 3 4 5 6 7 8 9 30 84 85 public static void searchbook() { 86 long tin = System.currentTimeMillis(); 87 Catalog.getBook(false); 88 long tout = System.currentTimeMillis(); 89 System.out.printf("Catalog;getBook;%s;%s", tin, tout); 90 } 9 Catalog;getBook;73333896;7333380 Catalog;getBook;733338397;733338399 Catalog;getBook;733338498;733338400 Catalog;getBook;733338599;73333850 Catalog;getBook;733338600;73333860 Program execution Visualization of results Monitoring log Statistical analysis Challenges Flexibility (instrumentation, changing log formats), runtime overhead, data volume, data distribution, online analysis, legacy systems,... W. Hasselbring (CAU) Kieker Southampton 8 / 5
Continuous Monitoring Design Decisions To cope with the previously listed challenges [van Hoorn et al. 009a] Dynamic Software Analysis Integration into the engineering process Model-Driven Instrumentation & Analysis. Type of Monitoring Probes Depends on analysis goals Number and Position of Monitoring Points Trade-off between performance overhead and information quality Consideration of the Induced Monitoring Overhead During continuous operation: only small overhead acceptable Physical Location of the Monitoring Log/Stream E.g., database, file system, queue, distributed deployment Intrusiveness of Instrumentation Don t mix monitoring logic with business functionality AOP W. Hasselbring (CAU) Kieker Southampton 9 / 5
Agenda Kieker Monitoring & Analysis Framework Dynamic Software Analysis Kieker Monitoring & Analysis Framework 3 Application Performance Monitoring 4 Reverse Engineering Reverse Engineering of Java EE Reverse Engineering of C# Reverse Engineering of Visual Basic 6 Reverse Engineering of COBOL Reverse Engineering of C / C++ Reverse Engineering of Perl Kieker in Space 5 Summary and Future Work W. Hasselbring (CAU) Kieker Southampton 0 / 5
Framework Features & Extension Points Essential Characteristics [Rohr et al. 008, van Hoorn et al. 009b; 0] Kieker Monitoring & Analysis Framework Modular, flexible, and extensible architecture (Probes, records, readers, writers, filters etc.) Pipes-and-filters framework for analysis configuration Distributed tracing (logging, reconstruction, visualization) Low overhead (designed for continuous operation) Evaluated in lab and industrial case studies Kieker is open-source software (Apache License, V..0) http://kieker-monitoring.net Recommended Tool of the SPEC Research Group Kieker is distributed as part of SPEC RG s repository of peer-reviewed tools for quantitative system evaluation and analysis, http://research.spec.org/projects/tools.html Monitoring Log/Stream Kieker.Analysis Kieker.Monitoring Sampling JMX Interface Monitoring Probe Adaptive Monitoring AnalysisTConfiguration Analysis / Visualization Plugin Analysis Controller Logging MonitoringT Controller MonitoringT Writer Monitoring Record Monitoring Reader Time/Source MonitoringT Probes/Samplers TimeT Sources MonitoringTT Writers MonitoringT Records MonitoringTT Readers Analysis/VisualizationT Plug-Ins Control/flow tracing Resource monitoring NamedDpipe <custom/monitoring/writer> OperationDexecution Control/flowDevents CPUDutilization ResourceDutilization CurrentDtime <custom/monitoring/record/type> FileDsystem JavaDMessagingDServiceDMJMS( JavaDManagementDExtNDMJMX( DatabaseDMSQL( NamedDpipe <custom/monitoring/reader> PipesDandDfiltersDframework ArchitectureDreconstrN Manual Servlet <custom/technology> TraceDanalysis Sigar Visualization CPUDutilization MemoryDusage <custom/monitoring/probe> SystemDtime FileDsystem CXFbSOAP AspectJ DatabaseDMSQL( JavaDMessagingDServiceDMJMS( JavaDManagementDExtNDMJMX( MemorybswapDusage TCPbIP PerformanceDAnalysis OutputDstream Real/timeDreplayer DependencyDgraphs SequenceDdiagrams CallDgraphs Servlet VB6XDCOBOLXDNNN <custom/interception//technology> <custom/time/source> TCPbIP <custom/visualization> <custom/trace/analysis> Spring <custom/reconstruction/plug-in> <custom/analysis/plug-in/tool> W. Hasselbring (CAU) Kieker Southampton / 5
Overhead Evaluation Linear Rise of Overhead [Waller and Hasselbring 0] Kieker Monitoring & Analysis Framework Execution time (median in µs) 580 560 540 50 500 Writing (W) Collecting (C) Instrumentation (I) Method Time (T) 7, Slope ( ) 0. 0.9 59,8 5,7 4, 30,0,7 3, 5,0 0.,0 7,6 6,8 0, 0,7,5 3,3 4 8 6 3 64 Recursion depth (number of successive method calls) Experiment similar to: A5 AsyncFS writer 6 cores whole system is available MSEPT 0 Mul core Influence on Applica on Level Monitoring Overhead Jan Waller and Wilhelm Hasselbring 3.05. 4 W. Hasselbring (CAU) Kieker Southampton / 5
Kieker: Dynamic Analysis Workflow [van Hoorn et al. 0] Kieker Monitoring & Analysis Framework Analysis Configuration (via API and WebGUI) Monitoring Records Analysis Pipes and Filters Measurement Monitoring log/stream Invocations/minute [x 000] Workload Anomaly Detection.0.5 SRV0::.0 @3:..Bookstore SRV0:: @:..Catalog SRV0:: @:..CRM SRV:: @:..Catalog searchbook() 0.5 getbook(..) 0.0 getoffers() <<execution container>> SRV0 $ 635 searchbook() 635 getbook(..) Calendar time (hh:mm) 543 @:..Catalog @:..CRM @3:..Bookstore Monitoring Probe 573 getbook(..) 06 <<execution container>> SRV getoffers() 09 @:..Catalog getbook(..) Software System with Monitoring Instrumentation W. Hasselbring (CAU) Online and Offline Visualization Kieker Southampton 3 / 5
Core Kieker Framework Components Kieker Monitoring & Analysis Framework Kieker.Monitoring Monitoring Probe Monitoring Record Java probes/samplers: Monitoring Probes/Samplers Control-flow tracing Resource monitoring Manual instrumentation AspectJ Servlet Spring CXF/SOAP <your interception technology> Servlet Sigar CPU utilization Memory usage <your technology> <your monitoring probe> + basic adapters for C#/.NET Visual Basic 6/COM COBOL Monitoring Records Operation execution Control-flow events CPU utilization Resource utilization Current time Memory/swap usage <your monitoring record type> W. Hasselbring (CAU) Kieker Southampton 4 / 5
Core Kieker Framework Components Kieker Monitoring & Analysis Framework Kieker.Monitoring Time Source Monitoring Log/Stream Kieker.Analysis Monitoring Probe Logging Monitoring Controller Monitoring Writer Monitoring Record Monitoring Reader Periodic Sampling JMX Interface Monitoring Readers/Writers File system Java Messaging Service (JMS) Java Management Ext. (JMX) Database (SQL) Named pipe <your monitoring reader/writer> W. Hasselbring (CAU) Kieker Southampton 4 / 5
Core Kieker Framework Components Kieker Monitoring & Analysis Framework Kieker.Monitoring Time Source Monitoring Log/Stream Kieker.Analysis Pipe & Filter Configuration Monitoring Probe Logging Monitoring Controller Monitoring Writer Monitoring Record Monitoring Reader Analysis / Visualization Plugin Analysis Controller Periodic Sampling JMX Interface Analysis/Visualization Plugins Pipe-and-filter framework Architecture reconstr. Trace analysis Visualization Dependency graphs Sequence diagrams Call graphs <your visualization> <your trace analysis> <your reconstruction plugin> <your analysis plugin/tool> W. Hasselbring (CAU) Kieker Southampton 4 / 5
Program Instrumentation (Here: Manual) Example: Monitoring Operation Executions Kieker Monitoring & Analysis Framework Application code: Monitoring probe code (schematic): public void getoffers() { // EXECUTION to be monitored: catalog.getbook(false); } // BEFORE execution to be monitored if (!ismonitoringenabled()) { collectdatabefore(); } // AFTER execution to be monitored if (!ismonitoringenabled()) { collectdataafter(); writemonitoringdata(); } Instrumentation Getting the monitoring probe into the code Manual instrumentation Aspect-oriented programming (AOP), middleware interception,... W. Hasselbring (CAU) Kieker Southampton 5 / 5
description of the respective aspect probemethod, Tpmon saves AOP-Based Instrumentation by the Annotation current time before and after b is executed. Kieker Monitoring & Analysis Figure Framework.7: Sample system instrumented with Tpmon (a) and how an annotated operation is woven (b). aspect weaver basic functionality program aspect programming languages woven output code aspect description programs Figure.8: An aspect weaver weaves the aspects and the functional part of an application into a single binary (following (Kiczales et al., 997)). @OperationExecutionMonitoringProbe 3 public void getoffers() { 4 4 catalog.getbook(false); 5 } 6} Annotation-based (AOP) instrumentation for monitoring trace information W. Hasselbring (CAU) Kieker Southampton 6 / 5
Full Instrumentation with Kieker Kieker Monitoring & Analysis Framework Listing : META-INF/aop.xml <!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.aspectj.org /dtd/aspectj 5_0.dtd"> <aspectj> <weaver options=""> <include within="*"/> </weaver> <aspects> <aspect name="kieker.monitoring.probe.aspectj.operationexecution. OperationExecutionAspectFull"/> </aspects> </aspectj> Start the monitored application: $ java -javaagent:lib/kieker-.8_aspectj.jar BookstoreStarter W. Hasselbring (CAU) Kieker Southampton 7 / 5
Analysis Configuration with Kieker Example Pipe-and-Filter Configuration Kieker Monitoring & Analysis Framework operationexecutions <<Filter>> : Performance anomaly filter anomalyratings <<Reader>> : FS reader outputport systemmodel anomalyratings <<Filter>> : Anomaly graph plotter <<Repository>> : System model repository Workload Anomaly Detection.0 0.75 Invocations/minute [x 000] Anomaly score.5 0.50.0 0.5 0.5 0.0 0.0 Calendar time (hh:mm) W. Hasselbring (CAU) Kieker Southampton 8 / 5
Textual Analysis Configuration Kieker Monitoring & Analysis Framework @Plugin(outputPorts = { @OutputPort(name = "eventcount", eventtypes = { Long.class })}) public final class CountingFilter extends AbstractFilterPlugin {... @InputPort(name = "inputevents", eventtypes = { Object.class }) public final void inputevent(final Object event) { final Long count = this.counter.incrementandget(); super.deliver("eventcount", count); } } W. Hasselbring (CAU) Kieker Southampton 9 / 5
Graphical Analysis Configuration Web User Interface [Ehmke 03] Kieker Monitoring & Analysis Framework W. Hasselbring (CAU) Kieker Southampton 0 / 5
Web Control Center Cockpit [Ehmke 03] Kieker Monitoring & Analysis Framework W. Hasselbring (CAU) Kieker Southampton / 5
What others are doing with Kieker Analysis of Calling Networks [Zheng et al. 0] Kieker Monitoring & Analysis Framework Community structure Layered structure (hierarchy) Xi an Jiaotong University, Shaanxi [Zheng et al. 0] W. Hasselbring (CAU) Kieker Southampton / 5
akes it possible to access the facts using data visualisation and data analysis chniques, Visualizing hence obtaining Architecture a higher level Warehouses of understanding of those facts, that is taining knowdledge. In this section I deepen the definition by several examples. Example: Analyzing the JUnit Project [Dabrowski 0] Kieker Monitoring & Analysis Framework Fig.. Graph-based visualisation of artifacts in junit project Warsaw University [Dabrowski 0] W. Hasselbring (CAU) Kieker Southampton 3 / 5
Agenda Kieker Monitoring & Analysis Framework Dynamic Software Analysis Kieker Monitoring & Analysis Framework 3 Application Performance Monitoring 4 Reverse Engineering 5 Summary and Future Work W. Hasselbring (CAU) Kieker Southampton 4 / 5
Observations in field Extensive infrastructure monitoring, application monitoring not widespread Reactive monitoring probe injection only (after a critical performance drop has occurred) Monitoring on different system layers Application Performance Monitoring Application monitoring Infrastructure monitoring Business/service monitoring Business Processes Services Application Middleware Container Virtual Machine Operating System Hardware Key performance indicators, e.g. process throughput, SLO appliance, workload, Response times, operational profile, Thread/connection pool sizes, Heap size, CPU/memory utilization, Availability, reliability, Monitoring practice in the real world (based on what we ve seen) Focus on system level (network availability, resource utilization) or business level (key performance indicators) No systematic instrumentation on application level Monitoring as an afterthought : probes are only added when problems occurred. 3 / 5 W. Hasselbring (CAU) Kieker Southampton 5 / 5
Application-Level Monitoring in Practice...!? Among Java Professionals Application Performance Monitoring dynatrace Diagnostics dynatrace Quest Foglight CA/Wily Introscope IBM IT CAM Symantec Indepth for JEE None 4.0% 0.9% 5.8% 3.% 0.4% 65.5% Others n.s. 4.3% 9.9% 0% 0% 0% 30% 40% 50% 60% 70% 80% Java monitoring tools being used Java monitoring largely unknown. [codecentric GmbH 009] W. Hasselbring (CAU) Kieker Southampton 6 / 5
Application-Level Monitoring in Practice...!? At Facebook Application Performance Monitoring Scaling Facebook to 500 Million Users and Beyond Making lots of small changes and watching what happens only works if you re actually able to watch what happens. At Facebook we collect an enormous amount of data any particular server exports tens or hundreds of metrics that can be graphed. This isn t just system level things like CPU and memory, it s also application level statistics to understand why things are happening. It s important that the statistics are from the real production machines that are having the problems, when they re having the problems the really interesting things only show up in production. The stats also have to come from all machines, because a lot of important effects are hidden by averages and only show up in distributions, in particular 95th or 99th percentile. Robert Johnson, Facebook Engineering Director W. Hasselbring (CAU) Kieker Southampton 7 / 5
Anomaly Detection + Diagnosis Kieker @ Xing AG [Bielefeld 0, Frotscher 03] Application Performance Monitoring W. Hasselbring (CAU) Kieker Southampton 8 / 5
Anomaly Detection + Diagnosis Previous work [Marwede et al. 009] Application Performance Monitoring presentation.orderbean [ 454/397 0,094 7,8% ] service.hessian.client.orderservice [ 484/98 0,057 6,9% ] 98 98 43498 Virtual Machine klotz $ 409 088 409 org.apache.struts.action.actionservlet [ 487/85960 0,90 7,8% ] 397 70 presentation.cartbean [ 07/70 0,087 5,99% ] service.hessian.client.catalogservice getproductlistbycategory(string) [ 6365/437 0,6 0,006 3,4% ] 6837 98 088 presentation.catalogbean [ 838/6837 0,048 6,88% ] 44 47353 088 presentation.accountbean [ 494/088 0,06 6,6% ] 088 service.hessian.client.accountservice [ 53/088 0,033 6,35% ] 43498 088 967 349 088 967 349 getproduct(string) [ 369/967 0,046 0,8,7% ] 967 437 getproductlistbycategory(string,int,int) [ 640/437 0,6 0,06,8% ] 437 getitemlistbyproduct(string) [ 967/967 0,995 0,406 4,43% ] 967 getitemlistbyproduct(string,int,int) [ 967/967 0,995 0,488 4,69% ] getcategory(string) [ 6309/349 0,6 0,037 3,04% ] 349 98 44 47353 088 088 service.hessian.client.orderservice [ 484/98 0,057 6,9% ] service.hessian.client.accountservice [ 53/088 0,033 6,35% ] 98 43498 088 Virtual Machine tier [ 447/6098 0,03 5,90% ] Virtual Machine scooter [ 88/76 0,07 3,43% ] Virtual Machine puck [ 447/943 0,03 4,48% ] Component Level Operation Level Deployment Context Level Component Level service.hessian.client.catalogservice 967 349 088 967 349 getproduct(string) [ 369/967 0,046 0,8,7% ] getproductlistbycategory(string) [ 6365/437 0,6 0,006 3,4% ] getitemlistbyproduct(string) [ 967/967 0,995 0,406 4,43% ] getcategory(string) [ 6309/349 0,6 0,037 3,04% ] Component Level 967 437 967 349 Operation Level getproductlistbycategory(string,int,int) [ 640/437 0,6 0,06,8% ] getitemlistbyproduct(string,int,int) [ 967/967 0,995 0,488 4,69% ] 437 W. Hasselbring (CAU) Kieker Southampton 8 / 5
Anomaly Detection + Diagnosis ExplorViz [Fittkau et al. 03] Application Performance Monitoring W. Hasselbring (CAU) Kieker Southampton 8 / 5
Anomaly Detection + Diagnosis Work at Stuttgart University on online failure prediction [Pitakrat et al. 04] Application Performance Monitoring Component-level Predictors PCM SLAstic... HDD Failure Predictor CDT PAD System-level Predictor Monitoring Reader!! Event Log Analyzer Hora Kieker, Weka, R, PRISM, ESPER,... W. Hasselbring (CAU) Kieker Southampton 8 / 5
Agenda Reverse Engineering Dynamic Software Analysis Kieker Monitoring & Analysis Framework 3 Application Performance Monitoring 4 Reverse Engineering Reverse Engineering of Java EE Reverse Engineering of C# Reverse Engineering of Visual Basic 6 Reverse Engineering of COBOL Reverse Engineering of C / C++ Reverse Engineering of Perl Kieker in Space 5 Summary and Future Work W. Hasselbring (CAU) Kieker Southampton 9 / 5
Extending the Pipe-and-Filter Configuration Here: for Reverse Engineering Reverse Engineering $ @:..CRM 09 543 573 @:..Catalog getbook(..) <<Reader>> : FS reader traceevents outputport <<Filter>> : Trace reconstruction filter <<Repository>> : System model repository systemmodel messagetraces executiontraces messagetraces messagetraces systemmodel <<Filter>> : Sequence diagram visualization systemmodel <<Filter>> : Dependency graph visualization searchbook() SRV0:: @3:..Bookstore getbook(..) SRV0:: @:..Catalog getoffers() SRV0:: @:..CRM <<execution container>> SRV0 getbook(..) SRV:: @:..Catalog 635 @3:..Bookstore 635 searchbook() getoffers() Kieker.Analysis example pipes-and-filters configuration Performance anomaly detection and visualization Architecture and trace reconstruction/visualization 06 <<execution container>> SRV @:..Catalog getbook(..) W. Hasselbring (CAU) Kieker Southampton 30 / 5
Generated Sequence Diagram Reverse Engineering W. Hasselbring (CAU) Kieker Southampton 3 / 5
Reverse Engineering of Java EE Customer portal at EWE TEL GmbH Reverse Engineering Reverse Engineering of Java EE Distributed Enterprise Java System instrumented subsystem <<device>> Front End Server (on site) <<device>> Client <<device>> 0.. H/W LB * * <<execution environment>> Web Server/ Java EE Container <<artifact>> PortalServiceA <<artifact>> PortalServiceB <<artifact>> PortalServiceC <<device>> Application Server <<execution environment>> Java EE Container <<artifact>> BusinessServices M N <<device>> DB Cluster <<device>> Back End System <<device>> 3rd Party System 0.. <<device>> Front End Server (off site) K Servlet, Spring and CXF/SOAP probes W. Hasselbring (CAU) Kieker Southampton 3 / 5
Software Architecture Level Component dependency graph Reverse Engineering Reverse Engineering of Java EE $ 5785 5556 97 <<execution container>> css0 <<execution container>> css 00 77540 7740 75894 7589 <<execution container>> pikdb0 <<execution container>> pikdb W. Hasselbring (CAU) Kieker Southampton 33 / 5
System Architecture Level Component dependency graph Reverse Engineering Reverse Engineering of Java EE $ 53 5300 0035 75894 <<execution container>> css @:..KiekerRequestRegistrationAndLoggingFilter @:..KiekerTpmonResponseInProbe dofilter(..) <<execution container>> css0 @:..KiekerRequestRegistrationAndLoggingFilter @:..KiekerTpmonResponseInProbe dofilter(..) 0475 97 4975 5099 00 handlemessage(..) handlemessage(..) 7589 77540 7740 @3:..KiekerTpmonResponseOutProbe handlemessage(..) @3:..KiekerTpmonResponseOutProbe handlemessage(..) <<execution container>> pikdb0 70 78 9 5 4 50 5 6 86 98 7 30 30 39 370 4 0 83 74 43 60 68 63 54 555 3 3 8 8 0 7 44 9 5 5 84 456 8 9 6 44 4 0 6 69 486 38 5 7 8 36 30 5 66 86 365 6634 3 4 73 7 3 8 88 94 58 65 7 664 <<execution container>> pikdb 7 74 6 4 66 60 4 9 4 43 8 69 8 499 496 399 4 6 65 3 7 4 8 6 5 57 7 55 46 59 59 686 5 4 8 447 83 4 4 38 3 6 59 96 94 734 9 6 7 5 33 85 57 4 64 573 499 9 43 0 78 3606 633 6586 3 8 6 3 84 93 64 5 @9:..DnsService isuptodate(..) getzone(..) deleteresourcerecord(..) addresourcerecord(..) modifyresourcerecord(..) @7:..WebhostingService getwebuserids(..) getwebhostingcategories(..) updateftpaccount(..) updatemysql(..) terminateftpaccount(..) createftpaccount(..) changedomainusagecategory(..) createwebspace(..) getwebspacesubdirectories(..) getwebhostingcategory(..) getprowebdomainnames(..) getwebhostingdetails(..) getwebspacequota(..) getemailfrommasteraccount(..) createwebstatssession(..) getavailablephpversions(..) hasproweb(..) @8:..SupportService addsmscontact(..) sendsupportrequest(..) getsmsauthorizations(..) getftpquota(..) getincreasebandwidthresult(..) getorderstaticipresult(..) getmailquota(..) getsmscontacts(..) sendsms(..) getantivirlicenselist(..) getsmsnumbers(..) removesmscontact(..) queuesms(..) getvirtualserverenvironment() setsmsauthorizations(..) getsmsauthorization(..) createwlanaccount(..) addantivirlicense(..) getmysqlversion(..) activatesmsnumber(..) createsmstoken(..) scheduleantivirlicenseactivation(..) getmysqlquota(..) @6:..DomainService isdomainfree(..) getdomains(..) gettopleveldomains(..) getdomains(..) reassigndomain(..) createsubdomain(..) restartdomaintransfer(..) getfederalstateforzipcode(..) getdomaininfo(..) getdomaincategory(..) performdomainorder(..) isvalidcontact(..) @4:..EmailService updatevacationinfo(..) getmailaccounts(..) updateemailforward(..) getvacationinfo(..) deleteemailvirusscan(..) addemailvirusscan(..) updatespamfilterconfiguration(..) removelistentryfromspamfilter(..) createemailaccount(..) addemailalias(..) deleteemailalias(..) getspamfilterconfiguration(..) addlistentrytospamfilter(..) deleteemailaccount(..) @5:..AccountService getcustomeraccount(..) checklogin(..) acknowledgednstermsofuse(..) getmyadminloginlink(..) hasacknowledgeddnstermsofuse(..) getaccountnumberfordbuser(..) passwordrequestbymailallowed(..) updateaccountpassword(..) deletetoken(..) updatecsspassword(..) createtoken(..) checktoken(..) getenddatefrommaincontract(..) getpackageconfiguration(..) getaccountinfos(..) @9:..DnsService modifyresourcerecord(..) isuptodate(..) deleteresourcerecord(..) addresourcerecord(..) getzone(..) @7:..WebhostingService getwebspacesubdirectories(..) createwebspace(..) getwebhostingcategory(..) getavailablephpversions(..) getemailfrommasteraccount(..) createwebstatssession(..) getwebspacequota(..) getwebhostingdetails(..) getwebuserids(..) getwebhostingcategories(..) hasproweb(..) createmysql(..) updatewebspace(..) setphpversion(..) createftpaccount(..) createwebspacesubdirectory(..) updateftpaccount(..) getprowebdomainnames(..) changedomainusagecategory(..) @8:..SupportService scheduleantivirlicenseactivation(..) sendsupportrequest(..) addantivirlicense(..) getincreasebandwidthresult(..) getorderstaticipresult(..) queuesms(..) getmailquota(..) getsmsauthorizations(..) getantivirlicenselist(..) getftpquota(..) getsmsauthorization(..) sendsms(..) getsmsnumbers(..) getsmscontacts(..) activatesmsnumber(..) createsmstoken(..) getvirtualserverenvironment() createwlanaccount(..) orderstaticip(..) setsmsauthorizations(..) 45 3 getmysqlquota(..) 3 removesmscontact(..) addsmscontact(..) getmysqlversion(..) @6:..DomainService getdomains(..) gettopleveldomains(..) createsubdomain(..) reassigndomain(..) performdomainorder(..) isvalidcontact(..) deletesubdomain(..) isdomainfree(..) getdomaininfo(..) getfederalstateforzipcode(..) getdomaincategory(..) getdomains(..) @4:..EmailService getvacationinfo(..) getmailaccounts(..) updatevacationinfo(..) reactivateemailvirusscan(..) deleteemailvirusscan(..) addemailvirusscan(..) removelistentryfromspamfilter(..) addemailalias(..) deleteemailaccount(..) addlistentrytospamfilter(..) updatespamfilterconfiguration(..) createemailaccount(..) getspamfilterconfiguration(..) updateemailforward(..) deleteemailalias(..) @5:..AccountService createtoken(..) getenddatefrommaincontract(..) getpackageconfiguration(..) getcustomeraccount(..) getaccountinfos(..) checklogin(..) getwebstatisticlink(..) getaccountnumberfordbuser(..) acknowledgednstermsofuse(..) hasacknowledgeddnstermsofuse(..) getmyadminloginlink(..) printcontractconfirmation(..) updatecsspassword(..) updateaccountpassword(..) checktoken(..) deletetoken(..) <<execution container>> pikdb0 @9:..DnsService 76 @8:..SupportService 97 377 947 @7:..WebhostingService @3:..KiekerTpmonResponseOutProbe 556 47408 @6:..DomainService 0035 <<execution container>> css 75894 6386 @5:..AccountService 53 @:..KiekerRequestRegistrationAndLoggingFilter 4975 @:..KiekerTpmonResponseInProbe 7589 @4:..EmailService $ 5300 <<execution container>> css0 77540 <<execution container>> pikdb @:..KiekerRequestRegistrationAndLoggingFilter 0475 5099 @:..KiekerTpmonResponseInProbe 7740 67 5 @9:..DnsService @6:..DomainService 00 @3:..KiekerTpmonResponseOutProbe 969 6530 @7:..WebhostingService 378 @4:..EmailService 47406 @8:..SupportService @5:..AccountService W. Hasselbring (CAU) Kieker Southampton 34 / 5
Dynamic Analysis for Modernization KoSSE Project DynaMod, http://kosse-sh.de/dynamod Reverse Engineering. Reverse Engineering of C# Motivation: Emergent Architectures Project Consortium Dataport, Altenholz http://www.dataport.de/ Software Engineering Group University of Kiel, Kiel http://se.informatik.uni-kiel.de/ b+m Informatik AG, Melsdorf http://www.bmiag.de/ HSH Nordbank AG, Kiel http://www.hsh-nordbank.de/ W. Hasselbring (CAU) Kieker Southampton 35 / 5
Reverse Engineering of C# Complete Test Suite of Nordic Analytics [Magendanz 0] Reverse Engineering Reverse Engineering of C# Case study at HSH Nordbank AG. W. Hasselbring (CAU) Kieker Southampton 36 / 5
After Selecting a single Use Case Reverse Engineering of C# Reverse Engineering Reverse Engineering of C# $ 7 @:..canalytics 3 7 5 @6:..cModelDescription @:..cobjectpool @9:..cJob @7:..cJobDescriptor @4:..cModelType @5:..cModelParameters 4 @54:..cImplicitCalibration @53:..cValuationControl @33:..cValuationDateFinder 7 398 9 @34:..cPricing 3 9 57 73 38 @3:..cJobObject @35:..cCashFlowPricingModel 3 5 40 3 6 76 9 9 @3:..cSecurityFactory @30:..cTypeFilter @8:..cEvaluationObjects @44:..cDefaultFunctions @5:..cSecurityDetailsCFP 6 36 @39:..cPricingParams @49:..cLinearRateModelBlack @48:..cConvexityAdjustmentModel 9 @47:..cCashRateVolatilityFinder 7 4 3 07 9 38 38 57 38 @5:..cScriptParameters @6:..cSwap @4:..cSecurity @4:..cScriptTables @3:..cSecurityDependency @5:..cLegDetailsCFP @40:..cPricingParamsCreditLinked 76 9 @45:..cMarketAnalyticModel @46:..cVolatilityFinder @3:..cVaRMethodFactory 4 37 36 8 @4:..cTermTreeFunctionIndex @6:..cScriptCashFlowHandler 9 @0:..cLeg @4:..cPricingParamsCFP 68 @7:..cLegDescriptor 34 08 @:..ccashflowscriptgenerator 56 38 34 34 4 68 34 68 38 @:..cscript 36 @9:..cScriptOptions @8:..cStandardFormulaBuilder 34 88 9 38 4 38 9 9 @38:..cCollector 43 @36:..cIndexFixingDescriptionCollector 38 34 @37:..cScriptIndexDescriptorFunction 8 @43:..cSetIndex 38 43 95 68 @0:..cReplaceIndexNameByFunction @:..ccashflowbuilder 34 @7:..cFormulaBuilder @50:..cAccruedInterestCalculator 34 34 34 34 34 @3:..cCashFlow 34 34 @8:..cPayoffDescriptor @:..caccrualconvention 38 34 @9:..cCreditDescriptor @5:..cCreditBaskets W. Hasselbring (CAU) Kieker Southampton 37 / 5
Zoom to the Operation Level Reverse Engineering of C# Reverse Engineering Reverse Engineering of C# @6:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cValuationControl Evaluate(..) @9:NordicAnalyticsProject.Engine.Evaluation.Pricing.cPricing IsShortRateMC(..) CreateSwaptionPricing(..) Price(..) InitializeLMMPricing(..) InitializeCommodityMCPricing(..) InitializeIndexMCPricing(..) IsHistoricalSecurity(..) AddIPricingResults(..) Price(..) @5:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingModel GetPricingResult(..) Price(..) $ 4 PriceSwaption(..) SetContactMessage() ReadObjectsFromFile(..) WriteObjectsToFile(..) ClearPools() EvaluateJob(..) GetVersionNumber() GetCompilationDate() 6 PriceSwaption(..) GetSpecificMarketData(..) @0:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingAnalytic @4:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingResult SetResultProperties(..) GetObject(..) SetJobPart(..) PriceSwaption(..) GetVolatility(..) AddResultProperty(..) AddResultProperty(..) CreateObject(..) CreateObject(..) GetOutConverter(..) WriteLogInfo(..) WriteLogInfo(..) InitializeTemplateObjects() SetStoreLossDistributions() InitializeUsageTracking() InitializePartialJobs(..) GetUseUsageTracking(..) Evaluate() InitializeMarketDataUsageTracking() 8 6 8 4 @:NordicAnalyticsProject.Engine.Analytics.cAnalytics 6 @8:NordicAnalyticsProject.Engine.Job.cValuationDateFinder GetValuationDate() <<assembly component>> @4:NordicAnalyticsProject.Engine.Job.cJob 8 InitializeObjectTracking(..) GetObject(..) MarketDataUsageCheck() BuildNotBuiltDefaultCurves() ClearIntermediateObjects() ToString() 0 8 30 4 6 4 8 5 @:NordicAnalyticsProject.Engine.Securities.cPlainSwapDateGrid BuildDateGrids(..) GetSwaptionValueEvaluationType(..) GetBlackScholesOptionType(..) StoreAdditionalPricingResults(..) FairRate(..) CreateObject(..) CreateObjectPreProcessing(..) SetObjectAndCheckImpliedCalibration(..) @7:NordicAnalyticsProject.Engine.Job.cImplicitCalibration IsCalibrated(..) @5:NordicAnalyticsProject.Engine.Job.cJobObject GetObjects(..) Objects(..) JobPartObjects(..) ReplaceDependence(..) 4 50 686 4 6 58 0 70 @3:NordicAnalyticsProject.Engine.Securities.cAccrualConvention GetAdditionalDays(..) @3:NordicAnalyticsProject.Engine.OptionValuation.cBlackScholes Vega(..) OptionValue(..) @:NordicAnalyticsProject.Engine.Evaluation.Pricing.cPlainSwapPricing PriceFixLeg(..) PriceFloatLeg(..) @9:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelType InitializeMethodAssetClassSpecification() ReadMethodAssetClassSpecification(..) GetDefaultIRSubModelType(..) ReadAnalyticMethodsTable(..) @8:NordicAnalyticsProject.Engine.Securities.cSecurityFactory CreateInstance(..) @:NordicAnalyticsProject.Engine.Evaluation.Risk.cVaRMethodFactory Create(..) ReadObjectsTable(..) CreateObjectPostProcessing(..) @:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelDescription ReadScenarioTable(..) @0:NordicAnalyticsProject.Engine.Evaluation.ValuationControl.cModelParameters InitMembersWithCorrespondingNullValues() Initialize(..) 4 InitializeObjects() CopyOrId(..) FindCollections(..) SetCollectionObjects(..) GetObjectSignatures(..) CheckObjectsAreUnique(..) GetObjects(..) Objects(..) ReplaceDependence(..) @6:NordicAnalyticsProject.Engine.Job.cTypeFilter Accept(..) @:NordicAnalyticsProject.Engine.Job.cJobDescriptor 0 0 4 GetEndDate() GetSwapTenor() PriceFixCF(..) PriceFloatCF(..) @3:NordicAnalyticsProject.Engine.Job.cEvaluationObjects ReadDescriptionTableProperties(..) ReadObjectsTable(..) CheckNumberOfObjects(..) ProveOfUniqueObjects(..) ReadObjects(..) Insert(..) OnClearPool() ReplaceDependenceByObjectSignature() @7:NordicAnalyticsProject.Engine.Securities.cSwaption @4:NordicAnalyticsProject.Engine.ObjectFactory.cObjectPool 4 8 GetUnderlyingCashRateIndex() @6:NordicAnalyticsProject.Engine.Securities.cSingleOptionSecurity ReadDescriptionTableProperties(..) GetSwapTenorTime() GetCreditNames() @5:NordicAnalyticsProject.Engine.Securities.cSecurity GetHashCode() ReadCurrencyProperty(..) GetDependencyHandle() OnInsertObject(..) @7:NordicAnalyticsProject.Engine.Securities.cSecurityDependency ReplaceDependence() GetObject(..) GetDependencies() GetObjects() @:NordicAna @0:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingAnaly PriceSwaption(..) GetSpecificMarketData(..) PriceSwaption(..) GetVolatility(..) ponent>>.evaluation.pricing.cpricing @5:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingModel GetPricingResult(..) Price(..) PriceSwaption(..) @4:NordicAnalyticsProject.Engine.Evaluation.PricingModels.Swaption.cSwaptionPricingResult SetResultProperties(..) AddResultProperty(..) AddResultProperty(..) AddIPricingResults(..) Price(..) 4 W. Hasselbring (CAU) Kieker Southampton 38 / 5
Reverse Engineering of Visual Basic 6 Analysis of Specific Traces Reverse Engineering Reverse Engineering of Visual Basic 6 frmlogin.cmdok_click() frmlogin.anwendung() frmmain.mdiform_load() Module.Main() frmlogin.form_load() frmakte.tool_menu_begin() frmlogin.txtpassword_gotfocus() frmakte.ob_frei() $ frmmain.mnudatafrmakte_click() frmakte.form_resize() frmakte.form_load() frmakte.ob_sperren() frmakte.felder_sperren() frmakte.option_click(integer) clsklasse.class_initialize() clsklasse.pruef_user() clsklasse.pruef_abt() clsklasse.pruef_rechte() BENUTZER.select() ABTEILUNG.select() BENABT.select() frmakte.felder_frei() frmakte.setbuttons(boolean) AKTE.select() clsklasse.adoprimaryrs_movecomplete(adodb.eventreasonenum, ADODB.Error, ADODB.EventStatusEnum, ADODB.Recordset) frmakte.suchen() frmakte.felder_sichern() 8 clsklasse.class_getdatamember(string, Object) frmakte.cmdedit_click() frmakte.indexposlesen() IPOS.select() frmakte.pruefung_ob() frmakte.fuehrende_nullen(long) frmakte.txtfields_change(integer) frmakte.daten_binden() 6 frmakte.tool_menu_edit() frmakte.abteilung() frmakte.rtxtboxtitel_change() frmakte.rtxtboxenthaelt_change() Case study at Dataport W. Hasselbring (CAU) Kieker Southampton 39 / 5
cmdupdate_click mnufileclose_click Identification of unused Functions Reverse Engineering of Visual Form_KeyDown Basic 6 Reverse Engineering Reverse Engineering of Visual Basic 6 mnueditundo_click SetButtons cmdnext_click frmstat.847 ms cmdlast_click cmdfirst_click cmdclose_click 85 Abt_Akte_del Ben_BenAb ipos_loesch Statistik 6.7 ms 80.695 ms Abt_Zus_del 76 Ausgabe cmd_start_click abt_suchen 5 4.98 ms Form_Load MouseWheel mnufilestart_click 3.596 ms txt_abt_gotfocus Zeile mnuhelpabout_click MSHFlexGrid_RowColChange EditingRecord Itext_neu Add IndexNeu mnuhelpsearchforhelpon_click 3.9 ms Zus_Akte_del 38.54 ms Form_KeyDown Ben_neu Abt_n cmdclose_click 83 mnuhelpcontents_click mnufileexit_click cmd_druck_click AkteLoeschen Zus_Itext_del W. Hasselbring (CAU) Kieker Southampton 40 / 5
Reverse Engineering of COBOL With consideration of non-instrumentable modules [Knoche et al. 0] Reverse Engineering Reverse Engineering of COBOL IDENTIFICATION DIVISION. PROGRAM-ID. MODULE-X. PROCEDURE DIVISION. CALL "MODULE-Y". GOBACK. Literal block Before-Call Injection Point Called Module: "MODULE-Y" Literal block AOP-based COBOL instrumentation MODULE-B $ MODULE-A MODULE-C MODULE-D MODULE-E Module-level call dependency graph with assumed dependencies W. Hasselbring (CAU) Kieker Southampton 4 / 5
Analysis of a PC COBOL System [Richter 0] Reverse Engineering Reverse Engineering of COBOL Abbildung 6.5: Komponentenabhängigkeits-Modell der Menü-Navigation; Extrahiert aus den Monitoringdaten $ @:SGBSTART 4 @8:MSGERZEU @9:MSGLAUFZ @0:MSGMELDE @:ZREPLACE @7:DATABTBA @4:SACHG-INIMO @3:SUCHEFUN @3:ZUGRIFUN @47:PSGLO-MENNA @48:SACHG-SAVMO @34:SGBINITA 3 @38:PSKVSINI @45:SGBMENWA @:PSGLOINI @35:USRIDENT @4:DRUCKREO 7 @39:PSKVSSAV @46:SGBMENUE 7 4 3 0 @0:PSGLOSAV @3:REALIA_GET_MACHINE_NAME @9:JOBIDSAV @:S_GetEnvironmentVariableA 3 @4:PATHMAKE @4:PASSWORT @5:DATUMFUN @40:PSKVSEDI @9:SCRHANDL 9 7 5 5 5 3 4 0 @:PSGLOEDI @6:SHIFTFUN @5:PSGLOFUN @7:REALIA_FINDFIRST @8:REALIA_FINDCLOSE @43:D999FUN @8:SCRINOUT 4 4 373 @3:BUCHWAND @44:REALIA_CREATE_UNIQUE_FILE 3 @6:DATABASE @30:STRINFUN @33:SP 7 3 3 6 @3:DATABLOK @:DATABSPT 35 3 @5:DATABTRV 5 5 9 @37:WKSIDENT 3 @4:BTRV @36:DATABSBS 6 3 @7:PATHFIND 345 87 @6:PARMFILE 6.4 Ergebnisse der Evaluation W. Hasselbring (CAU) Kieker Southampton 4 / 5
C++ Digital Signal Processing Kiel Real-time Audio Toolkit (KiRAT) Reverse Engineering Reverse Engineering of C / C++ Source: http://www.dss.tf.uni-kiel.de/en/research/kirat W. Hasselbring (CAU) Kieker Southampton 43 / 5
on_main, algcore_common_audio_effects_chorus_main, algcore_common_wavreader_main, algcore_common_fb_synthesis_main, algcore_common_wavreader_interface, algcore_common_si_main _conv_ols04] _matrix_cpu_main. Analysis of und the algorithmic kernel [Mahmens gnalsel algcore_common Reverse Engineering of C++ Reverse Engineering. Reverse Engineering of C / C++ @:..algcore_resman_memory_allocation SapAlgCoreFree3DArray(..) 3 380 SapAlgCoreFree(..) 80 @3:..algcore_medsigpro_main SapAlgCoreCalloc3DArray(..) SapAlgCoreMedsigproDeinit(..) SapAlgCoreCalloc(..) 3 *SapAlgCoreMedsigproInit(..) 3354 SapAlgCoreFreeDArray(..) SapAlgCoreCallocDArray(..) 4884 499 SapAlgCoreFreeDArray(..) SapAlgCoreCallocDArray(..) 3 8 87 86 6. Performance 73 00000 90000 normierte Laufzeit der Funktion [in µs] Abbildung 5.4. Aufrufe des Pakets Medical-Signal-Processing zur Speicherverwaltung 80000 70000 Abbildung 5.4 zeigt die Nutzung der Speicheralloziirung des Pakets. Wie auch beim Paket System-Evaluation wird die Funktion SapAlgCoreCallocDArray() einmal weniger aufgerufen als die Funktion SapAlgCoreFreeDArray(), Aufrufe im Vergleich zu 3 Aufrufen. Alle anderen Ressourcen werden vollständig wieder freigegeben. 60000 50000 40000 30000 0000 0 0 40 60 normierte Zeit [in s] 80 00 W. Hasselbring (CAU) Kieker 5.3.0. Loudspeaker-Enclosure-Microfone-Simulation Abbildung 6.4. Aggregiertes Sequenzdiagramm für die Laufzeiten der Funktion SapAlgCorePro- Southampton 44 / 5
Reverse Engineering of Perl Visualizing Dependencies in EPrints Reverse Engineering Reverse Engineering of Perl First shot with full instrumentation: W. Hasselbring (CAU) Kieker Southampton 45 / 5
Visualizing Dependencies 6. Ergebnisse in EPrints Customized visualization with Gephi [Wechselberg 03] Reverse Engineering Reverse Engineering of Perl Abbildung 6.. Visualisierung der Abhängigkeiten in EPrints Red: EPrints.PluginFactory. Green: EPrints.Repository. W. Hasselbring (CAU) Kieker Southampton 46 / 5
Visualizing Dependencies in EPrints Refinement with adaptive monitoring [Jensen 03] Reverse Engineering Reverse Engineering of Perl Abbildung 5.6. Abhängigkeiten beim ersten Request mit dem adaptiven Monitoring von EPrints. W. Hasselbring (CAU) Kieker Southampton 47 / 5
Kieker in Space Some analysis results [Harms 03] Reverse Engineering Kieker in Space W. Hasselbring (CAU) Kieker Southampton 48 / 5
Summary and Future Work Summary and Future Work Summary Monitoring for dynamic analysis may provide valuable information about the real behavior of a software system. Combined with static analysis. Monitoring Data may be employed for various purposes, for instance Fault localization and diagnosis Architecture discovery Capacity management (SLAstic project, PhD Thesis André van Hoorn) Flexibility is required, particularly for architecture discovery Future Work Extending the Web-based configuration interface & cockpit Model-driven instrumentation & analysis Application to workflow monitoring, parallelization and Enterprise Architecture Management W. Hasselbring (CAU) Kieker Southampton 49 / 5
References References T. C. Bielefeld. Online performance anomaly detection for large-scale software systems. Diploma thesis, University of Kiel, Germany, Mar. 0. URL http://eprints.uni-kiel.de/5488/. codecentric GmbH. Performance survey 008. http://www.codecentric.de/export/sites/www/_resources/pdf/performance-survey-008-web.pdf, Mar. 009. B. Cornelissen, A. Zaidman, A. van Deursen, L. Moonen, and R. Koschke. A systematic survey of program comprehension through dynamic analysis. IEEE Transactions on Software Engineering, 35(5):684 70, 009. ISSN 0098-5589. doi: 0.09/TSE.009.8. R. Dabrowski. On architecture warehouses and software intelligence. In T.-h. Kim, Y.-h. Lee, and W.-c. Fang, editors, Proceedings of the 4th International Mega-Conference on Future Generation Information Technology (FGIT 0), volume 7709 of Lecture Notes in Computer Science, pages 5 6. Springer, 0. ISBN 978-3-64-35584-4. doi: 0.007/978-3-64-35585-_35. N. C. Ehmke. Everything in sight: Kieker s WebGUI in action (tutorial). In S. Becker, W. Hasselbring, A. van Hoorn, and R. Reussner, editors, Proceedings of the Symposium on Software Performance: Joint Kieker/Palladio Days (KPDAYS 3), volume 083 of CEUR Workshop Proceedings. CEUR-WS.org, 03. URL http://eprints.uni-kiel.de/58/. F. Fittkau, J. Waller, C. Wulf, and W. Hasselbring. Live trace visualization for comprehending large software landscapes: The explorviz approach. In st IEEE International Working Conference on Software Visualization (VISSOFT 03), September 03. URL http://eprints.uni-kiel.de/840/. T. Frotscher. Architecture-based multivariate anomaly detection for software systems. Master s thesis, CAU, AG Software Engineering, Oct. 03. URL http://eprints.uni-kiel.de/346/. B. Harms. Reverse-Engineering und Analyse einer Plug-in-basierten Java-Anwendung. Master s thesis, Kiel University, Nov. 03. URL http://eprints.uni-kiel.de/3733/. T. S. Jensen. Adaptives Monitoring von Perl-Applikationen. Master s thesis, Institut für Informatik, Sept. 03. URL http://eprints.uni-kiel.de/398/. H. Knoche, A. van Hoorn, W. Goerigk, and W. Hasselbring. Automated source-level instrumentation for dynamic dependency analysis of COBOL systems. In Proceedings of the 4. Workshop Software-Reengineering (WSR ), pages 33 34, May 0. URL http://eprints.uni-kiel.de/447/. F. Magendanz. Dynamic analysis of.net applications for architecture-based model extraction and test generation, Oct. 0. URL http://eprints.uni-kiel.de/5489/. S. Mahmens. Architektur-Rekonstrukion mit Kieker durch AOP-basierte Instrumentierung einer C++-Anwendung. Master s thesis, Institut für Informatik, Apr. 04. URL http://eprints.uni-kiel.de/4349/. N. S. Marwede, M. Rohr, A. van Hoorn, and W. Hasselbring. Automatic failure diagnosis support in distributed large-scale software systems based on timing behavior anomaly correlation. In Proceedings of the 3th European Conference on Software Maintenance and Reengineering (CSMR 09), pages 47 57. IEEE, Mar. 009. ISBN 978-0-7695-3589-0. doi: 0.09/CSMR.009.5. URL http://eprints.uni-kiel.de/4469/. W. Hasselbring (CAU) Kieker Southampton 50 / 5
References (cont d) References T. Pitakrat, A. van Hoorn, and L. Grunske. Increasing dependability of component-based software systems by online failure prediction. In Proceedings of the 0th European Dependable Computing Conference (EDCC 4), 04. To appear. B. Richter. Dynamische Analyse von COBOL-Systemarchitekturen zum modellbasierten Testen. Diploma thesis, University of Kiel, Germany, Aug. 0. URL http://eprints.uni-kiel.de/5489/. M. Rohr, A. van Hoorn, J. Matevska, N. Sommer, L. Stoever, S. Giesecke, and W. Hasselbring. Kieker: Continuous monitoring and on demand visualization of Java software behavior. In C. Pahl, editor, Proceedings of the IASTED International Conference on Software Engineering 008 (SE 08), pages 80 85, Feb. 008. ISBN 978-0-88986-75-4. URL http://eprints.uni-kiel.de/4496/. A. van Hoorn, M. Rohr, and W. Hasselbring. Engineering and continuously operating self-adaptive software systems: Required design decisions. In G. Engels, R. Reussner, C. Momm, and S. Sauer, editors, Design for Future Langlebige Softwaresysteme, volume 537 of Workshop Proceedings, pages 5 63. CEUR, Oct. 009a. URL http://eprints.uni-kiel.de/465/. A. van Hoorn, M. Rohr, W. Hasselbring, J. Waller, J. Ehlers, S. Frey, and D. Kieselhorst. Continuous monitoring of software services: Design and application of the Kieker framework. Technical Report TR-09, Department of Computer Science, University of Kiel, Germany, Nov. 009b. URL http://eprints.uni-kiel.de/4459/. A. van Hoorn, J. Waller, and W. Hasselbring. Kieker: A framework for application performance monitoring and dynamic software analysis. In Proceedings of the 3rd ACM/SPEC International Conference on Performance Engineering (ICPE 0), pages 47 48. ACM, Apr. 0. ISBN 978--4503-0-8. URL http://eprints.uni-kiel.de/448/. J. Waller and W. Hasselbring. A comparison of the influence of different multi-core processors on the runtime overhead for application-level monitoring. In V. Pankratius and M. Philippsen, editors, Proceedings of the International Conference on Multicore Software Engineering, Performance, and Tools (MSEPT 0), volume 7303 of Lecture Notes in Computer Science, pages 4 53. Springer Berlin / Heidelberg, June 0. ISBN 978-3-64-30-4. doi: 0.007/978-3-64-30-_5. URL http://eprints.uni-kiel.de/545/. N. B. Wechselberg. Monitoring von Perl-basierten Webanwendungen mittels Kieker. Bachelorarbeit, Kiel University, April 03. URL http://eprints.uni-kiel.de/4/. Q. Zheng, Z. Ou, L. Liu, and T. Liu. A novel method on software structure evaluation. In Proceedings of the nd IEEE International Conference on Software Engineering and Service (IEEE ICSESS 0), pages 5 54. IEEE, July 0. doi: 0.09/ICSESS.0.59830. W. Hasselbring (CAU) Kieker Southampton 5 / 5