Muutke küpsiste eelistusi

E-raamat: Mining Software Specifications: Methodologies and Applications

Edited by (National University of Singapore), Edited by (University of Illinois, Urbana-Champaign, USA), Edited by (Microsoft Research, Redmond, Washington, USA), Edited by (Singapore Management University)
  • Formaat - PDF+DRM
  • Hind: 90,99 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Computer scientists explain methods for determining specifications for existing and heritage software when no or inadequate documentation is available. Among their topics are mining finite-state automata with annotations, adaptive grammar inference techniques for mining state machines, static specification mining using automata-based abstractions, automatic inference and the effective application of temporal specifications, path-aware static program analyses for specifications, and the lightweight mining of object usage. Annotation ©2011 Book News, Inc., Portland, OR (booknews.com)

An emerging topic in software engineering and data mining, specification mining tackles software maintenance and reliability issues that cost economies billions of dollars each year. The first unified reference on the subject, Mining Software Specifications: Methodologies and Applications describes recent approaches for mining specifications of software systems. Experts in the field illustrate how to apply state-of-the-art data mining and machine learning techniques to address software engineering concerns.

In the first set of chapters, the book introduces a number of studies on mining finite state machines that employ techniques, such as grammar inference, partial order mining, source code model checking, abstract interpretation, and more. The remaining chapters present research on mining temporal rules/patterns, covering techniques that include path-aware static program analyses, lightweight rule/pattern mining, statistical analysis, and other interesting approaches. Throughout the book, the authors discuss how to employ dynamic analysis, static analysis, and combinations of both to mine software specifications.

According to the US National Institute of Standards and Technology in 2002, software bugs have cost the US economy 59.5 billion dollars a year. This volume shows how specification mining can help find bugs and improve program understanding, thereby reducing unnecessary financial losses. The book encourages the industry adoption of specification mining techniques and the assimilation of these techniques in standard integrated development environments (IDEs).

List of Figures
vii
Preface xiii
Contributors xv
1 Specification Mining: A Concise Introduction
1(28)
David Lo
Siau-Cheng Khoo
Chao Liu
Jiawei Han
1.1 Introduction
1(2)
1.2 Categorization
3(4)
1.3 Mining Finite State Machines
7(4)
1.4 Mining Value-Based Invariants
11(1)
1.5 Mining Patterns and Rules
12(6)
1.6 Mining Sequence Diagrams
18(1)
1.7 Conclusion
19(10)
Bibliography
20(9)
2 Mining Finite-State Automata with Annotations
29(30)
Leonardo Mariani
Fabrizio Pastore
Mauro Pezze
Mauro Santoro
2.1 Introduction
30(1)
2.2 Modeling Software Systems with Annotated FSA
31(1)
2.3 Introducing a Running Example
32(4)
2.4 Inferring FSA Annotated with Constraints
36(7)
2.4.1 Merging Similar Traces
36(1)
2.4.2 Generating Constraints
37(1)
2.4.3 Initializing EFSA
37(2)
2.4.4 Merging Equivalent States in EFSA
39(4)
2.5 Inferring FSA Annotated with Data-Flow Information
43(9)
2.5.1 Preprocessing Data
43(1)
2.5.1.1 Identifying Data Clusters
43(1)
2.5.1.2 Global Ordering Rewriting Strategy
44(1)
2.5.1.3 Instantiation Rewriting Strategy
45(2)
2.5.1.4 Access Rewriting Strategy
47(1)
2.5.1.5 Choosing a Rewriting Strategy
48(2)
2.5.2 Generating Models
50(2)
2.6 Comparing the Generated Models
52(1)
2.7 Related Work
53(1)
2.7.1 Mining Models That Represent Ordering of Events
53(1)
2.7.2 Mining Models That Represent Program Variables
54(1)
2.8 Concluding Remarks
54(5)
Bibliography
55(4)
3 Adapting Grammar Inference Techniques to Mine State Machines
59(26)
Neil Walkinshaw
Kirill Bogdanov
3.1 Introduction
59(2)
3.2 The Conventional Reverse-Engineering Approach and Its Problems
61(5)
3.2.1 State Machines and Their Languages
61(1)
3.2.2 State Merging
62(2)
3.2.3 Problems with This Approach
64(2)
3.3 Applying Advances from the Field of Grammar Inference
66(9)
3.3.1 Negative Samples
67(1)
3.3.2 Improved State-Merging Heuristics
67(1)
3.3.2.1 Evidence-Driven State Merging
68(2)
3.3.2.2 Blue-Fringe Search Strategy
70(1)
3.3.3 Active Approaches
71(2)
3.3.4 Applying These Advances in Practice
73(1)
3.3.4.1 The Software System as Oracle
73(2)
3.4 Integrating Constraints
75(4)
3.4.1 Integrating Data Constraints
76(1)
3.4.2 Integrating Temporal Constraints
76(3)
3.5 Conclusions and Future Work
79(6)
Bibliography
80(5)
4 Mining API Usage Protocols from Large Method Traces
85(28)
Michael Pradel
Thomas R. Gross
4.1 Introduction
86(2)
4.2 Mining API Usage Protocols
88(9)
4.2.1 Collecting Method Traces
89(2)
4.2.2 Finding Object Collaborations
91(1)
4.2.3 Collaboration Transformers
92(1)
4.2.3.1 Generalizing Types
92(1)
4.2.3.2 Merging Objects
93(1)
4.2.3.3 Package-Based Filtering
93(1)
4.2.3.4 Dataflow Filtering
94(1)
4.2.4 Extracting Collaboration Patterns
95(1)
4.2.4.1 Summarizing Frequent Collaborations
95(1)
4.2.4.2 Removing Infrequent Collaborations
96(1)
4.2.5 Generating Finite State Machines
96(1)
4.3 Implementation
97(1)
4.3.1 Instrumentation and Program Run
97(1)
4.3.2 Specification Inference
98(1)
4.4 Experiments
98(6)
4.4.1 Experimental Setup
99(1)
4.4.2 Examples
100(1)
4.4.3 Number and Size of Inferred Protocols
101(1)
4.4.4 Influence of Coverage
101(1)
4.4.5 Quality of Inferred Protocols
102(1)
4.4.6 Performance and Scalability
102(2)
4.5 Discussion and Applications
104(1)
4.5.1 Dynamic versus Static Analysis
104(1)
4.5.2 Limitations
104(1)
4.5.3 Applications
105(1)
4.6 Related Work
105(3)
4.6.1 Mining of Finite State Machines
105(2)
4.6.2 Mining of Temporal Rules and Other Specifications
107(1)
4.6.3 Invariant Inference
108(1)
4.6.4 Other Related Work
108(1)
4.7 Conclusions
108(5)
Bibliography
108(5)
5 Static API Specification Mining: Exploiting Source Code Model Checking
113(46)
Mithun Acharya
Tao Xie
5.1 Introduction
114(2)
5.2 Static Trace Generation for Mining Specifications
116(17)
5.2.1 Example
117(2)
5.2.2 Framework
119(1)
5.2.2.1 Partial and Total Order
120(1)
5.2.2.2 Frequent Closed Partial Orders (FCPO)
121(1)
5.2.2.3 Formalizing FCPO Mining from Program Traces
122(1)
5.2.2.4 Trace Generation
123(3)
5.2.2.5 Scenario Extraction
126(1)
5.2.2.6 Specification Mining
127(1)
5.2.2.7 Complexity
128(1)
5.2.3 Implementation
129(1)
5.2.4 Comparison with a Dynamic Miner
130(3)
5.3 Adapting Static Trace Generation for Mining API Error-Handling Specifications
133(17)
5.3.1 Example
135(5)
5.3.2 Adaptation - The Details
140(1)
5.3.2.1 Error/Normal Trace Generation
140(4)
5.3.2.2 Specification Mining
144(1)
5.3.2.3 Verification
145(1)
5.3.3 Evaluation
145(5)
5.4 Conclusions
150(9)
5.4.1 Summary
151(1)
5.4.2 Scope, Limitations, and Further Research
151(1)
Bibliography
152(7)
6 Static Specification Mining Using Automata-Based Abstractions
159(42)
Eran Yahav
Sharon Shoham
Stephen Fink
Marco Pistoia
6.1 Introduction
160(2)
6.2 Overview
162(4)
6.2.1 Abstract-Trace Collection
165(1)
6.2.2 Summarization
165(1)
6.2.3 Refining Mining Results via Inspection
166(1)
6.3 Preliminaries
166(1)
6.4 Abstract Trace Collection
167(12)
6.4.1 Concrete Instrumented Semantics
167(2)
6.4.2 Abstract Semantics
169(1)
6.4.2.1 Abstract States
169(4)
6.4.2.2 Abstract Semantics
173(1)
6.4.2.3 History Abstractions
174(5)
6.5 Summarization Using Statistical Approaches
179(2)
6.5.1 Union Methods
180(1)
6.5.2 Clustering
180(1)
6.6 Refining Mining Results Using Inspection
181(5)
6.6.1 Static Inspection
182(1)
6.6.1.1 Static Client Inspection
182(1)
6.6.1.2 Static Component Inspection
182(1)
6.6.2 Dynamic Inspection
182(1)
6.6.3 Selection of Paths for Inspection
183(1)
6.6.4 Refinement Based on Abstraction Merge Points
183(3)
6.7 Experimental Results
186(7)
6.7.1 Benchmarks
186(1)
6.7.2 Results
187(3)
6.7.3 Discussion
190(1)
6.7.3.1 Soundness
191(1)
6.7.3.2 Limitations
192(1)
6.8 Related Work
193(3)
6.9 Conclusion
196(5)
Bibliography
196(5)
7 DynaMine: Finding Usage Patterns and Their Violations by Mining Software Repositories
201(40)
Benjamin Livshits
Thomas Zimmermann
7.1 Introduction
202(2)
7.1.1 Contributions
203(1)
7.1.2
Chapter Organization
204(1)
7.2 DynaMine
204(4)
7.2.1 Motivation
205(2)
7.2.2 System Overview
207(1)
7.3 Mining Usage Patterns
208(6)
7.3.1 Basic Mining Algorithm
210(1)
7.3.2 Pattern Filtering
210(1)
7.3.2.1 Considering a Subset of Method Calls Only
210(1)
7.3.2.2 Considering Small Patterns Only
211(1)
7.3.3 Pattern Ranking
212(1)
7.3.3.1 Standard Ranking Approaches
212(1)
7.3.3.2 Corrective Ranking
213(1)
7.3.4 Locating Added Method Calls
213(1)
7.4 Checking Patterns at Runtime
214(3)
7.4.1 Pattern Selection and Instrumentation
214(1)
7.4.2 Post-Processing Dynamic Traces
215(1)
7.4.2.1 Dynamic Interpretation of Patterns
215(1)
7.4.2.2 Dynamic versus Static Counts
216(1)
7.4.2.3 Pattern Classification
216(1)
7.5 Experimental Results
217(9)
7.5.1 Experimental Setup
218(1)
7.5.1.1 Mining Setup
218(1)
7.5.1.2 Dynamic Setup
219(1)
7.5.2 Discussion of the Results
219(1)
7.5.2.1 Matching Method Pairs
219(3)
7.5.2.2 State Machines
222(2)
7.5.2.3 More Complex Patterns
224(2)
7.6 Design Decisions
226(3)
7.6.1 Static versus Dynamic Analysis
226(2)
7.6.2 Amount of User Involvement
228(1)
7.6.3 Granularity of Mined Information
228(1)
7.7 Extensions
229(1)
7.8 Related Work
230(3)
7.8.1 Revision History Mining
232(1)
7.8.2 Model Extraction
232(1)
7.9 Conclusions
233(8)
Bibliography
234(7)
8 Automatic Inference and Effective Application of Temporal Specifications
241(68)
Jinlin Yang
David Evans
8.1 Introduction
242(3)
8.1.1 Prior Work on Inferring Specifications
243(1)
8.1.2 Contributions
244(1)
8.2 Specification Inference
245(23)
8.2.1 A Running Example: Producer-Consumer
246(1)
8.2.2 Instrumentation
246(3)
8.2.3 Running
249(1)
8.2.4 Inference Engine
249(1)
8.2.4.1 Property Templates
249(1)
8.2.4.2 Pattern Matching Algorithm
250(5)
8.2.4.3 Handling Context Information
255(2)
8.2.5 Approximate Inference
257(1)
8.2.5.1 Imperfect Traces
257(1)
8.2.5.2 Detecting the Dominant Behavior
258(1)
8.2.6 Property Selection
259(1)
8.2.6.1 Static Call Graph Based Heuristic
259(1)
8.2.6.2 Naming Similarity Heuristic
260(1)
8.2.7 Chaining Method
261(1)
8.2.7.1 Property Graph
261(2)
8.2.7.2 Chaining Is in NP-Complete
263(2)
8.2.7.3 The Chaining Algorithm
265(2)
8.2.8 Perracotta
267(1)
8.2.8.1 Instrumentation
267(1)
8.2.8.2 Inference Engine
268(1)
8.3 Inference Experiments
268(12)
8.3.1 Daisy
271(1)
8.3.1.1 Inference Results
272(1)
8.3.2 JBoss Application Server
273(1)
8.3.2.1 Inference Results
273(1)
8.3.2.2 Comparison with JTA Specification
274(3)
8.3.3 Windows
277(1)
8.3.3.1 Inference Results
277(3)
8.4 Using Inferred Properties
280(14)
8.4.1 Program Verification
280(1)
8.4.1.1 Daisy
281(2)
8.4.1.2 Windows
283(2)
8.4.2 Program Differencing
285(1)
8.4.2.1 Tour Bus Simulator
286(2)
8.4.2.2 OpenSSL
288(6)
8.5 Related Work
294(5)
8.5.1 Grammar Inference
294(1)
8.5.2 Property Inference
294(1)
8.5.2.1 Template-Based Inference
295(1)
8.5.2.2 Arbitrary Model Inference
296(1)
8.5.3 Use of Inferred Specifications
297(1)
8.5.3.1 Defect Detection
297(1)
8.5.3.2 Other Uses
298(1)
8.6 Conclusion
299(10)
Acknowledgments
301(1)
Bibliography
301(8)
9 Path-Aware Static Program Analyses for Specification Mining
309(48)
Muralikrishna Ramanathan
Ananth Grama
Suresh Jagannathan
9.1 Introduction
310(4)
9.1.1 Path-Aware Analyses
310(1)
9.1.2 Dynamic versus Static Path Generation
311(1)
9.1.3 Specification Inference
312(1)
9.1.4 Path Profiles
313(1)
9.2 Specification Inference
314(25)
9.2.1 Precedence Protocols
315(2)
9.2.2 Preceded-By and Followed-By Relations
317(1)
9.2.3 Dataflow Predicates
317(4)
9.2.4 Formalization
321(5)
9.2.5 Incorporating Mining
326(1)
9.2.5.1 Mining Strategies
327(3)
9.2.5.2 The Structural Similarity Problem
330(1)
9.2.6 Implementation
331(3)
9.2.7 Experimental Results
334(2)
9.2.8 Quantitative Assessment
336(1)
9.2.9 Qualitative Assessment
337(2)
9.2.9.1 Bug Detection
339(1)
9.3 Static Path Profiles
339(10)
9.3.1 Deriving Specifications
342(2)
9.3.2 Implementation
344(1)
9.3.3 Results
345(1)
9.3.4 Quantitative Assessment
346(1)
9.3.5 Qualitative Assessment
347(2)
9.4 Related Work
349(1)
9.5 Conclusions
350(7)
Bibliography
351(6)
10 Mining API Usage Specifications via Searching Source Code from the Web
357(20)
Suresh Thummalapenta
Tao Xie
Madhuri R. Marri
10.1 Introduction
357(3)
10.2 Life-Cycle Model
360(1)
10.3 Example SE Task: Detecting Exception-Handling Defects
361(1)
10.4 Search Phase
362(2)
10.5 Analyze Phase
364(5)
10.5.1 Resolve Object Types
365(1)
10.5.2 Generate Candidates
365(4)
10.6 Mine Phase
369(2)
10.7 Apply Phase
371(1)
10.8 Summary
372(5)
Bibliography
372(5)
11 Merlin: Specification Inference for Explicit Information Flow Problems
377(34)
Benjamin Livshits
Aditya V. Nori
Sriram K. Rajamani
Anindya Banerjee
11.1 Introduction
379(3)
11.2 Overview
382(6)
11.2.1 Assumptions and Probabilistic Inference
383(1)
11.2.2 Potential Sources, Sinks, and Sanitizers
384(1)
11.2.3 Core Constraints
384(2)
11.2.4 Auxiliary Constraints
386(2)
11.3 Factor Graph Primer
388(2)
11.4 Constructing the Factor Graph
390(5)
11.4.1 Computing s() and W()
392(3)
11.5 Relationship between Triples and Paths
395(3)
11.6 Experimental Evaluation
398(7)
11.6.1 Experimental Setup
399(1)
11.6.2 Merlin Findings
400(4)
11.6.3 Running Times
404(1)
11.7 Related Work
405(1)
11.7.1 Securing Web Applications
405(1)
11.7.2 Mining Specifications
406(1)
11.8 Conclusions
406(5)
Acknowledgments
407(1)
Bibliography
407(4)
12 Lightweight Mining of Object Usage
411(22)
Andrzej Wasylkowski
Andreas Zeller
12.1 Introduction
411(2)
12.2 An Example
413(3)
12.3 Creating Function Models
416(1)
12.4 Obtaining Sequential Constraints
417(2)
12.5 Finding Specifications
419(3)
12.6 Discovering Violations
422(1)
12.7 The Real World
423(3)
12.8 Scaling to Multiple Projects
426(3)
12.9 Conclusion and Future Work
429(4)
Bibliography
430(3)
Index 433
David Lo is an assistant professor in the School of Information Systems at Singapore Management University. His research interests include specification mining, dynamic program analysis, automated debugging, code search, and pattern mining.

Siau-Cheng Khoo is an associate professor in the Department of Computer Science at the National University of Singapore. His research interests include specification mining, program analysis, program transformation, functional programming, domain-specific languages, and aspect-oriented programming.

Jiawei Han is a professor in the Department of Computer Science at the University of Illinois at Urbana-Champaign. He is editor-in-chief of the ACM Transactions on Knowledge Discovery from Data and co-editor of Geographic Data Mining and Knowledge Discovery, Second Edition (CRC Press, 2009) and Next Generation of Data Mining (CRC Press, 2009). His research interests include information network analysis, knowledge discovery, pattern discovery, data streams, and multidimensional analysis.

Chao Liu is a researcher in the Internet Service Research Center at Microsoft Research. His research interests include data mining for software engineering, statistical debugging, and machine learning and its use in web applications.