SlideShare une entreprise Scribd logo
1  sur  11
Assertions a Decade Later

      David S. Rosenblum
        PreCache, Inc.
               &
           UC Irvine
Why Assertions?
                The logical choice
                The logical choice
      for automated runtime fault detection
       for automated runtime fault detection
in debugging, testing, maintenance, production
 in debugging, testing, maintenance, production
   Low development cost
   Low overhead in execution time and object
    code space
   Highly effective fault detection
   Informative diagnostics for fault isolation
   High overall return on effort
1967–1992:
Important Antecedents
   Floyd (1967) and Hoare (1969)
   Executable assertions
       Algol W, Alphard, CLU, Euclid (mid 1970s)
       Papers at 1975 Int’l Conf on Reliable Software
       assert macro for C/Unix (1975)
       Anna —ANNotated Ada (early 1980s)
       Eiffel (1985)
   Leveson, Chu, Knight and Shimeall study
    (1990)
Problems with Assertions in 1992
   Cumbersome and Inflexible
       Separate tools for processing assertions
       Difficult to selectively enable/disable assertions
   Simplistic and Uninformative
       C’s assert macro dumps core upon failure
   Unproven
       Some examples persuaded, others dissuaded
       “It’s like writing the program twice.”
       A notable exception: AT&T 5ESS Asserts
Why I Wrote This Paper
   To find ways of increasing the
    expressive power and flexibility of
    assertions in development
   To identify the kinds of assertions
    that are effective at detecting faults
   To provide practitioners with a useful
    aid to writing assertions
Summary of the Paper (I)
   An assertion language for C
       Point assertions, preconditions, postconditions
       Constrained quantifiers
       Violation actions
       Severity levels
   An Assertion PreProcessor (APP) for C
       A replacement for the C preprocessor in the
        standard C compilation cycle
       Minimal changes to compilation, makefiles
Summary of the Paper (II)
   A case study: YEAST
       Publish/subscribe middleware for Unix in LANs
       Two-person effort
       12,000 lines of C (including Yacc and Lex)
       116 assertions in my part of the code
       19 faults (10 in my part)
       8 faults detected by assertion violations
            6 others could have been detected
   A classification of effective assertions
       Assertions for function interfaces
       Assertions for function bodies
1992–2002:
Proliferation and Maturation
   Assertions for OO
       Meyer “Design by Contract” (Computer Oct 1992)
       Java tools: iContract, Jcontract, Jass, …
       Findler and Felleisen (ESEC/FSE 2001)
       Sun’s Java JDK 1.4
       Microsoft’s C#
   Assertions for GNU
       Phil Maker’s GNU Nana (1997)
   Assertions for TCL
       Jon Cook (1997)
   Assertions for Testing:
       Sankar and Hayes “Assertion Definition Language” (1994)
   Assertions for UML
“Assertions” at PreCache
   10 Engineers
       Mostly prior Bell Labs research PhDs
   150,000+ lines of distributed software
       C, C++, Java, JNI
   Fault Management Module
       Components log significant execution errors,
        warnings, exceptions, alerts, state changes, traces
       Log file or separate fault management server
       Assertion language is the programming language
       Significant aid to fault detection and isolation
         
             Recognizable patterns of log messages
Conclusion
   Current state of technology offers hope for
    use of assertions in 2012
       Ubiquitous tool in development
       First class consideration in development
        processes
       Standard feature of languages, compilers,
        environments, infrastructures
         
             Including improvements for COTS-based systems
       Standard component of introductory programming
        courses
References
   The APP tool
       http://www.research.att.com/sw/tools/reuse
       Please don ’t send change requests to me
   The paper
       “Towards a Method of Programming with
        Assertions”, Proceedings of ICSE ’92
   The journal-length version
       IEEE Transactions on Software Engineering,
        January 1995
   A minor correction
       IEEE Transactions on Software Engineering,
        March 1995

Contenu connexe

Tendances

Terry.cooke davies
Terry.cooke daviesTerry.cooke davies
Terry.cooke davies
NASAPMC
 
Michael_Joshua_Validation
Michael_Joshua_ValidationMichael_Joshua_Validation
Michael_Joshua_Validation
MichaelJoshua
 
Dfr Presentation
Dfr   PresentationDfr   Presentation
Dfr Presentation
eraz
 
Mulenburg jerry
Mulenburg jerryMulenburg jerry
Mulenburg jerry
NASAPMC
 

Tendances (20)

Developing Safety-Critical Java Applications with oSCJ
Developing Safety-Critical Java Applications with oSCJ Developing Safety-Critical Java Applications with oSCJ
Developing Safety-Critical Java Applications with oSCJ
 
Terry.cooke davies
Terry.cooke daviesTerry.cooke davies
Terry.cooke davies
 
Michael_Joshua_Validation
Michael_Joshua_ValidationMichael_Joshua_Validation
Michael_Joshua_Validation
 
Lifecycle
LifecycleLifecycle
Lifecycle
 
Lafauci dv club oct 2006
Lafauci dv club oct 2006Lafauci dv club oct 2006
Lafauci dv club oct 2006
 
Safe and Reliable Embedded Linux Programming: How to Get There
Safe and Reliable Embedded Linux Programming: How to Get ThereSafe and Reliable Embedded Linux Programming: How to Get There
Safe and Reliable Embedded Linux Programming: How to Get There
 
Software Architecture: Design Decisions
Software Architecture: Design DecisionsSoftware Architecture: Design Decisions
Software Architecture: Design Decisions
 
Sa 006 modifiability
Sa 006 modifiabilitySa 006 modifiability
Sa 006 modifiability
 
Dfr Presentation
Dfr   PresentationDfr   Presentation
Dfr Presentation
 
Cast vs sonar
Cast vs sonarCast vs sonar
Cast vs sonar
 
Whipp q3 2008_sv
Whipp q3 2008_svWhipp q3 2008_sv
Whipp q3 2008_sv
 
Zhang rtp q307
Zhang rtp q307Zhang rtp q307
Zhang rtp q307
 
Correlation of simulation_models_using_concept_modeling
Correlation of simulation_models_using_concept_modelingCorrelation of simulation_models_using_concept_modeling
Correlation of simulation_models_using_concept_modeling
 
Wind River Test Management
Wind River Test ManagementWind River Test Management
Wind River Test Management
 
Software enginnering unit 01 by manoj kumar soni
Software enginnering unit 01 by manoj kumar soniSoftware enginnering unit 01 by manoj kumar soni
Software enginnering unit 01 by manoj kumar soni
 
Kavita resume
Kavita resume Kavita resume
Kavita resume
 
Kavita resume startup
Kavita resume startupKavita resume startup
Kavita resume startup
 
Ch1
Ch1Ch1
Ch1
 
Dcis97
Dcis97Dcis97
Dcis97
 
Mulenburg jerry
Mulenburg jerryMulenburg jerry
Mulenburg jerry
 

En vedette

En vedette (20)

Some Open Problems in Publish/Subscribe Networking (keynote talk at DEBS 2003)
Some Open Problems in Publish/Subscribe Networking (keynote talk at DEBS 2003)Some Open Problems in Publish/Subscribe Networking (keynote talk at DEBS 2003)
Some Open Problems in Publish/Subscribe Networking (keynote talk at DEBS 2003)
 
SIGSOFT Impact Award: Reflections and Prospects (invited talk at SIGSOFT FSE ...
SIGSOFT Impact Award: Reflections and Prospects (invited talk at SIGSOFT FSE ...SIGSOFT Impact Award: Reflections and Prospects (invited talk at SIGSOFT FSE ...
SIGSOFT Impact Award: Reflections and Prospects (invited talk at SIGSOFT FSE ...
 
High-Confidence Ubiquitous Computing Systems (invited talk at ISHCS 2011)
High-Confidence Ubiquitous Computing Systems (invited talk at ISHCS 2011)High-Confidence Ubiquitous Computing Systems (invited talk at ISHCS 2011)
High-Confidence Ubiquitous Computing Systems (invited talk at ISHCS 2011)
 
Content-Based Publish/Subscribe: A Re-Assessment (keynote talk at DOA 2005)
Content-Based Publish/Subscribe: A Re-Assessment (keynote talk at DOA 2005)Content-Based Publish/Subscribe: A Re-Assessment (keynote talk at DOA 2005)
Content-Based Publish/Subscribe: A Re-Assessment (keynote talk at DOA 2005)
 
Software System Scalability: Concepts and Techniques (keynote talk at ISEC 2009)
Software System Scalability: Concepts and Techniques (keynote talk at ISEC 2009)Software System Scalability: Concepts and Techniques (keynote talk at ISEC 2009)
Software System Scalability: Concepts and Techniques (keynote talk at ISEC 2009)
 
Applications and Abstractions: A Cautionary Tale (invited talk at a DIMACS Wo...
Applications and Abstractions: A Cautionary Tale (invited talk at a DIMACS Wo...Applications and Abstractions: A Cautionary Tale (invited talk at a DIMACS Wo...
Applications and Abstractions: A Cautionary Tale (invited talk at a DIMACS Wo...
 
Known Unknowns: Testing in the Presence of Uncertainty (talk at ACM SIGSOFT F...
Known Unknowns: Testing in the Presence of Uncertainty (talk at ACM SIGSOFT F...Known Unknowns: Testing in the Presence of Uncertainty (talk at ACM SIGSOFT F...
Known Unknowns: Testing in the Presence of Uncertainty (talk at ACM SIGSOFT F...
 
Whither Software Engineering Research? (keynote talk at APSEC 2012)
Whither Software Engineering Research? (keynote talk at APSEC 2012)Whither Software Engineering Research? (keynote talk at APSEC 2012)
Whither Software Engineering Research? (keynote talk at APSEC 2012)
 
Career Management (invited talk at ICSE 2014 NFRS)
Career Management (invited talk at ICSE 2014 NFRS)Career Management (invited talk at ICSE 2014 NFRS)
Career Management (invited talk at ICSE 2014 NFRS)
 
Probability and Uncertainty in Software Engineering (keynote talk at NASAC 2013)
Probability and Uncertainty in Software Engineering (keynote talk at NASAC 2013)Probability and Uncertainty in Software Engineering (keynote talk at NASAC 2013)
Probability and Uncertainty in Software Engineering (keynote talk at NASAC 2013)
 
Felicitous Computing (invited Talk for UC Irvine ISR Distinguished Speaker Se...
Felicitous Computing (invited Talk for UC Irvine ISR Distinguished Speaker Se...Felicitous Computing (invited Talk for UC Irvine ISR Distinguished Speaker Se...
Felicitous Computing (invited Talk for UC Irvine ISR Distinguished Speaker Se...
 
The Power of Probabilistic Thinking (keynote talk at ASE 2016)
The Power of Probabilistic Thinking (keynote talk at ASE 2016)The Power of Probabilistic Thinking (keynote talk at ASE 2016)
The Power of Probabilistic Thinking (keynote talk at ASE 2016)
 
Jogging While Driving, and Other Software Engineering Research Problems (invi...
Jogging While Driving, and Other Software Engineering Research Problems (invi...Jogging While Driving, and Other Software Engineering Research Problems (invi...
Jogging While Driving, and Other Software Engineering Research Problems (invi...
 
Indices 12 apr2013051615
Indices 12 apr2013051615Indices 12 apr2013051615
Indices 12 apr2013051615
 
Indices 03 jul2013071831
Indices 03 jul2013071831Indices 03 jul2013071831
Indices 03 jul2013071831
 
Indices 14 dec2012051020
Indices 14 dec2012051020Indices 14 dec2012051020
Indices 14 dec2012051020
 
Flickr
FlickrFlickr
Flickr
 
Indices 29 aug2013064044
Indices 29 aug2013064044Indices 29 aug2013064044
Indices 29 aug2013064044
 
Indices 24 jan2013054148
Indices 24 jan2013054148Indices 24 jan2013054148
Indices 24 jan2013054148
 
Indices 12 aug2013062806
Indices 12 aug2013062806Indices 12 aug2013062806
Indices 12 aug2013062806
 

Similaire à Assertions a Decade Later (invited talk at ICSE 2002)

16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniques
Majong DevJfu
 
Software engineering
Software engineeringSoftware engineering
Software engineering
Fahe Em
 
Software engineering
Software engineeringSoftware engineering
Software engineering
Fahe Em
 
Rodin.Nick.Resume
Rodin.Nick.ResumeRodin.Nick.Resume
Rodin.Nick.Resume
Nick Rodin
 
Leveraging the Eclipse Ecosystem for the Scientific Community
Leveraging the Eclipse Ecosystem for the Scientific CommunityLeveraging the Eclipse Ecosystem for the Scientific Community
Leveraging the Eclipse Ecosystem for the Scientific Community
guestd41014
 

Similaire à Assertions a Decade Later (invited talk at ICSE 2002) (20)

Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
16 implementation techniques
16 implementation techniques16 implementation techniques
16 implementation techniques
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Rodin.Nick.Resume
Rodin.Nick.ResumeRodin.Nick.Resume
Rodin.Nick.Resume
 
Clase 1 Ingenieria de Software
Clase 1 Ingenieria de SoftwareClase 1 Ingenieria de Software
Clase 1 Ingenieria de Software
 
Life & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentLife & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@Persistent
 
Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)
 
Buffer Overflows
Buffer OverflowsBuffer Overflows
Buffer Overflows
 
2010-12 SCAP Explained
2010-12 SCAP Explained 2010-12 SCAP Explained
2010-12 SCAP Explained
 
Cloud Operations and Analytics: Improving Distributed Systems Reliability usi...
Cloud Operations and Analytics: Improving Distributed Systems Reliability usi...Cloud Operations and Analytics: Improving Distributed Systems Reliability usi...
Cloud Operations and Analytics: Improving Distributed Systems Reliability usi...
 
Class (1)
Class (1)Class (1)
Class (1)
 
Characterizing and Mitigating Self-Admitted Technical Debt in Build Systems
Characterizing and Mitigating Self-Admitted Technical Debt in Build SystemsCharacterizing and Mitigating Self-Admitted Technical Debt in Build Systems
Characterizing and Mitigating Self-Admitted Technical Debt in Build Systems
 
The Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platformThe Nuxeo Way: leveraging open source to build a world-class ECM platform
The Nuxeo Way: leveraging open source to build a world-class ECM platform
 
Deployit overview for JUG-Italy meeting
Deployit overview for JUG-Italy meetingDeployit overview for JUG-Italy meeting
Deployit overview for JUG-Italy meeting
 
Leveraging the Eclipse Ecosystem for the Scientific Community
Leveraging the Eclipse Ecosystem for the Scientific CommunityLeveraging the Eclipse Ecosystem for the Scientific Community
Leveraging the Eclipse Ecosystem for the Scientific Community
 
SE notes 2.pdf
SE notes 2.pdfSE notes 2.pdf
SE notes 2.pdf
 
Journal Seminar: Is Singularity-based Container Technology Ready for Running ...
Journal Seminar: Is Singularity-based Container Technology Ready for Running ...Journal Seminar: Is Singularity-based Container Technology Ready for Running ...
Journal Seminar: Is Singularity-based Container Technology Ready for Running ...
 
Seminar VU Amsterdam 2015
Seminar VU Amsterdam 2015Seminar VU Amsterdam 2015
Seminar VU Amsterdam 2015
 
Business Value of CI, CD, & DevOps(Sec)
Business Value of CI, CD, & DevOps(Sec)Business Value of CI, CD, & DevOps(Sec)
Business Value of CI, CD, & DevOps(Sec)
 

Dernier

Dernier (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 

Assertions a Decade Later (invited talk at ICSE 2002)

  • 1. Assertions a Decade Later David S. Rosenblum PreCache, Inc. & UC Irvine
  • 2. Why Assertions? The logical choice The logical choice for automated runtime fault detection for automated runtime fault detection in debugging, testing, maintenance, production in debugging, testing, maintenance, production  Low development cost  Low overhead in execution time and object code space  Highly effective fault detection  Informative diagnostics for fault isolation  High overall return on effort
  • 3. 1967–1992: Important Antecedents  Floyd (1967) and Hoare (1969)  Executable assertions  Algol W, Alphard, CLU, Euclid (mid 1970s)  Papers at 1975 Int’l Conf on Reliable Software  assert macro for C/Unix (1975)  Anna —ANNotated Ada (early 1980s)  Eiffel (1985)  Leveson, Chu, Knight and Shimeall study (1990)
  • 4. Problems with Assertions in 1992  Cumbersome and Inflexible  Separate tools for processing assertions  Difficult to selectively enable/disable assertions  Simplistic and Uninformative  C’s assert macro dumps core upon failure  Unproven  Some examples persuaded, others dissuaded  “It’s like writing the program twice.”  A notable exception: AT&T 5ESS Asserts
  • 5. Why I Wrote This Paper  To find ways of increasing the expressive power and flexibility of assertions in development  To identify the kinds of assertions that are effective at detecting faults  To provide practitioners with a useful aid to writing assertions
  • 6. Summary of the Paper (I)  An assertion language for C  Point assertions, preconditions, postconditions  Constrained quantifiers  Violation actions  Severity levels  An Assertion PreProcessor (APP) for C  A replacement for the C preprocessor in the standard C compilation cycle  Minimal changes to compilation, makefiles
  • 7. Summary of the Paper (II)  A case study: YEAST  Publish/subscribe middleware for Unix in LANs  Two-person effort  12,000 lines of C (including Yacc and Lex)  116 assertions in my part of the code  19 faults (10 in my part)  8 faults detected by assertion violations  6 others could have been detected  A classification of effective assertions  Assertions for function interfaces  Assertions for function bodies
  • 8. 1992–2002: Proliferation and Maturation  Assertions for OO  Meyer “Design by Contract” (Computer Oct 1992)  Java tools: iContract, Jcontract, Jass, …  Findler and Felleisen (ESEC/FSE 2001)  Sun’s Java JDK 1.4  Microsoft’s C#  Assertions for GNU  Phil Maker’s GNU Nana (1997)  Assertions for TCL  Jon Cook (1997)  Assertions for Testing:  Sankar and Hayes “Assertion Definition Language” (1994)  Assertions for UML
  • 9. “Assertions” at PreCache  10 Engineers  Mostly prior Bell Labs research PhDs  150,000+ lines of distributed software  C, C++, Java, JNI  Fault Management Module  Components log significant execution errors, warnings, exceptions, alerts, state changes, traces  Log file or separate fault management server  Assertion language is the programming language  Significant aid to fault detection and isolation  Recognizable patterns of log messages
  • 10. Conclusion  Current state of technology offers hope for use of assertions in 2012  Ubiquitous tool in development  First class consideration in development processes  Standard feature of languages, compilers, environments, infrastructures  Including improvements for COTS-based systems  Standard component of introductory programming courses
  • 11. References  The APP tool  http://www.research.att.com/sw/tools/reuse  Please don ’t send change requests to me  The paper  “Towards a Method of Programming with Assertions”, Proceedings of ICSE ’92  The journal-length version  IEEE Transactions on Software Engineering, January 1995  A minor correction  IEEE Transactions on Software Engineering, March 1995