{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,19]],"date-time":"2025-03-19T15:16:19Z","timestamp":1742397379927,"version":"3.28.0"},"reference-count":64,"publisher":"Institution of Engineering and Technology (IET)","issue":"6","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["IET Softw."],"published-print":{"date-parts":[[2008,12,15]]},"DOI":"10.1049\/iet-sen:20080010","type":"journal-article","created":{"date-parts":[[2008,12,12]],"date-time":"2008-12-12T23:22:48Z","timestamp":1229124168000},"page":"515-531","source":"Crossref","is-referenced-by-count":9,"title":["Reducing the use of nullable types through non-null by default and monotonic non-null"],"prefix":"10.1049","volume":"2","author":[{"given":"P.","family":"Chalin","sequence":"first","affiliation":[{"name":"Dependable Software Research Group, Department of Computer Science and Software Engineering, Concordia University, Montre\u0301al, Que\u0301bec, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"P.R.","family":"James","sequence":"additional","affiliation":[{"name":"Dependable Software Research Group, Department of Computer Science and Software Engineering, Concordia University, Montre\u0301al, Que\u0301bec, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"F.","family":"Rioux","sequence":"additional","affiliation":[{"name":"Dependable Software Research Group, Department of Computer Science and Software Engineering, Concordia University, Montre\u0301al, Que\u0301bec, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"265","reference":[{"key":"10.1049\/iet-sen:20080010_r1","unstructured":"Gosling, J., Joy, B., Steele, G., and Bracha, G.: \u2018The Java Language Specification\u2019, 3rd edn.(Addison-Wesley Professional 2005)"},{"key":"10.1049\/iet-sen:20080010_r2","unstructured":"Evans D.: \u2018Annotation-assisted lightweight static checking\u2019. First Int. Workshop on Automated Program Analysis, Testing and Verification, February 2000"},{"key":"10.1049\/iet-sen:20080010_r3","doi-asserted-by":"crossref","first-page":"13","DOI":"10.1145\/1108768.1108798","volume":"31","author":"Hovemeyer","year":"2006","ISSN":"http:\/\/id.crossref.org\/issn\/0163-5948","issn-type":"print"},{"key":"10.1049\/iet-sen:20080010_r4","unstructured":"Kiniry, J.R.: \u2018ESC\/Java2'. http:\/\/secure.ucd.ie\/products\/opensource\/ESCJava2, 2005"},{"key":"10.1049\/iet-sen:20080010_r5","first-page":"92","volume":"39","author":"Hovemeyer","year":"2004"},{"journal-title":"\u2018Proc. Int. Workshop on the Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS)\u2019","year":"2004","author":"Barnett","key":"10.1049\/iet-sen:20080010_r6"},{"key":"10.1049\/iet-sen:20080010_r7","doi-asserted-by":"crossref","first-page":"302","DOI":"10.1145\/949305.949332","author":"Fa\u0308hndrich","year":"2003","journal-title":"Proc. 18th annual ACM SIGPLAN Conf. Object-Oriented Programming, Systems, Languages, and Applications. OOPSLA'03"},{"key":"10.1049\/iet-sen:20080010_r8","first-page":"500","volume":"2021","author":"Flanagan","year":"2001","journal-title":"Proc. Int. Symp. Formal Methods Europe"},{"key":"10.1049\/iet-sen:20080010_r9","first-page":"47","author":"Chalin","year":"2007","journal-title":"Proc. 6th Int. Workshop on Specification and Verification of Component-Based Systems (SAVCBS)"},{"journal-title":"Proc. 8th Workshop on Formal Techniques for Java-like Programs (FTfJP)","year":"2006","author":"Chalin","key":"10.1049\/iet-sen:20080010_r10"},{"key":"10.1049\/iet-sen:20080010_r11","unstructured":"Pugh W.: \u2018Annotations for software defect detection\u2019. JCP.org, JSR 305, 2006"},{"key":"10.1049\/iet-sen:20080010_r12","unstructured":"Ernst M., Coward D.: \u2018Annotations on Java types\u2019. JCP.org, JSR 308, 17 October 2006"},{"key":"10.1049\/iet-sen:20080010_r13","unstructured":"Pugh W.: \u2018How do you fix an obvious bug?\u2019, http:\/\/findbugs.blogspot.com, 2006"},{"key":"10.1049\/iet-sen:20080010_r14","doi-asserted-by":"crossref","first-page":"119","DOI":"10.1016\/j.entcs.2005.12.050","volume":"157","author":"Rioux","year":"2006","ISSN":"http:\/\/id.crossref.org\/issn\/1571-0661","issn-type":"print"},{"key":"10.1049\/iet-sen:20080010_r15","first-page":"212","volume":"7","author":"Burdy","year":"2005"},{"key":"10.1049\/iet-sen:20080010_r16","first-page":"108","author":"Cok","year":"2004","journal-title":"\u2018Proc. Int. Workshop on the Construction and Analysis of Safe, Secure, and Interoperable Smart Devices (CASSIS\u201904)'"},{"key":"10.1049\/iet-sen:20080010_r17","first-page":"244","author":"Kiniry","year":"2006","journal-title":"Proc. Symposium on Trustworthy Global Computing (TGC)"},{"key":"10.1049\/iet-sen:20080010_r18","unstructured":"Freund, J.E., and Walphole, R.E.: \u2018Mathematical statistics\u2019, (Prentice-Hall 1980)"},{"key":"10.1049\/iet-sen:20080010_r19","doi-asserted-by":"crossref","unstructured":"Park R.: \u2018Software size measurement: a framework for counting source statements\u2019. CMU, Software Engineering Institute, Pittsburgh CMU\/SEI-92-TR-20, 1992","DOI":"10.21236\/ADA258304"},{"key":"10.1049\/iet-sen:20080010_r20","unstructured":"Leavens G.T.: \u2018The Java Modeling Language (JML)\u2019. http:\/\/www.jmlspecs.org, 2008"},{"key":"10.1049\/iet-sen:20080010_r21","unstructured":"Fowler, M.: \u2018Refactoring: improving the design of existing code\u2019, (Addison-Wesley 1999)"},{"key":"10.1049\/iet-sen:20080010_r22","unstructured":"\u2018Extended static checking\u2019, Compaq Systems Research Center, Research Report 159, 1998"},{"key":"10.1049\/iet-sen:20080010_r23","unstructured":"Bloch, J.: \u2018Effective Java programming language guide\u2019, (Addison-Wesley 2001)"},{"key":"10.1049\/iet-sen:20080010_r24","unstructured":"Fowler, M.: \u2018Patterns of enterprise application architecture\u2019, (Addison-Wesley 2003)"},{"key":"10.1049\/iet-sen:20080010_r25","unstructured":"Flanagan, D.: \u2018Java in a nutshell: a desktop quick reference\u2019, (O'Reilly 1996)"},{"key":"10.1049\/iet-sen:20080010_r26","unstructured":"Paulson, L.C.: \u2018ML for the working programmer\u2019, (Cambridge University Press 1991)"},{"key":"10.1049\/iet-sen:20080010_r27","unstructured":"INRIA, \u2018Pointers in Caml\u2019. Caml Documentation, Specific Guides, http:\/\/caml.inria.fr\/resources\/doc\/, 2006"},{"key":"10.1049\/iet-sen:20080010_r28","unstructured":"Liskov, B., Moss, E., and Snyder, A.: \u2018CLU reference manual\u2019, et al. (Springer, New York 1984)"},{"journal-title":"Proc. European Conf. Object-Oriented Programming on Object-Oriented Programming Systems, Languages, and Applications","year":"1990","author":"Palsberg","key":"10.1049\/iet-sen:20080010_r29"},{"key":"10.1049\/iet-sen:20080010_r30","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(94)00014-X"},{"journal-title":"Proc. ACM SIGPLAN Conf. Programming Language Design and Implementation","year":"1996","author":"Evans","key":"10.1049\/iet-sen:20080010_r31"},{"key":"10.1049\/iet-sen:20080010_r32","unstructured":"Evans D.: \u2018Splint user manual\u2019. Secure Programming Group, University of Virginia, 5 June 2003"},{"key":"10.1049\/iet-sen:20080010_r33","unstructured":"Evans D.: \u2018Using specifications to check source code\u2019. MIT, MIT\/LCS\/TR 628, June 1994"},{"key":"10.1049\/iet-sen:20080010_r34","doi-asserted-by":"publisher","DOI":"10.1109\/52.976940"},{"key":"10.1049\/iet-sen:20080010_r35","doi-asserted-by":"crossref","unstructured":"Guttag, J.V., and Horning, J.J.: \u2018Larch: languages and tools for formal specification\u2019, (Springer-Verlag 1993)","DOI":"10.1007\/978-1-4612-2704-5"},{"key":"10.1049\/iet-sen:20080010_r36","first-page":"275","author":"Jim","year":"2002","journal-title":"Proc. USENIX Annual Technical Conf."},{"key":"10.1049\/iet-sen:20080010_r37","first-page":"275","volume":"23","author":"Grossman","year":"2005"},{"key":"10.1049\/iet-sen:20080010_r38","unstructured":"Microsoft Developer Network, \u2018C run-time library: SAL annotations\u2019. MSDN Library, Visual Studio 2008, Visual C++ Reference, 2008"},{"key":"10.1049\/iet-sen:20080010_r39","doi-asserted-by":"crossref","unstructured":"Stallman R.: \u2018Using the GNU compiler collection (GCC): GCC Version 4.1.0\u2019. Free Software Foundation, 2005","DOI":"10.1007\/978-1-4302-0219-6_1"},{"key":"10.1049\/iet-sen:20080010_r40","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380110303"},{"key":"10.1049\/iet-sen:20080010_r41","unstructured":"ECMA International, \u2018Eiffel analysis, design and programming language\u2019, ECMA-367, June 2005"},{"key":"10.1049\/iet-sen:20080010_r42","unstructured":"Williams, M.: \u2018Microsoft Visual C# .NET\u2019, (Microsoft Press 2002)"},{"journal-title":"Proc. ACM SIGMOD Int. Conf. Management of Data","year":"2006","author":"Erik","key":"10.1049\/iet-sen:20080010_r43"},{"journal-title":"Proc. European Conf. Object-Oriented Programming (ECOOP)","year":"2005","author":"Bierman","key":"10.1049\/iet-sen:20080010_r44"},{"key":"10.1049\/iet-sen:20080010_r45","unstructured":"\u2018BoogiePL: a typed procedural language for checking object-oriented programs\u2019, Microsoft Research, Technical Report, 2005"},{"journal-title":"Proc. Workshop on Formal Techniques for Java-like Languages","year":"2002","author":"Fa\u0308hndrich","key":"10.1049\/iet-sen:20080010_r46"},{"journal-title":"Int. Conf. Verified Software: Theories, Tools, Experiments (VSTTE)","year":"2005","author":"Barnett","key":"10.1049\/iet-sen:20080010_r47"},{"key":"10.1049\/iet-sen:20080010_r48","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1016\/S1571-0661(04)80777-1","volume":"75","author":"Bonniot","year":"2003","ISSN":"http:\/\/id.crossref.org\/issn\/1571-0661","issn-type":"print"},{"key":"10.1049\/iet-sen:20080010_r49","unstructured":"Bonniot D.: \u2018The nice programming language\u2019. http:\/\/nice.sourceforge.net2005"},{"key":"10.1049\/iet-sen:20080010_r50","unstructured":"Bonniot D.: \u2018Type safety in nice: why programs written in nice have less bugs\u2019, 2005"},{"key":"10.1049\/iet-sen:20080010_r51","unstructured":"Lea K.: \u2018Nully\u2019. https:\/\/nully.dev.java.net, 2005"},{"key":"10.1049\/iet-sen:20080010_r52","unstructured":"JetBrains: \u2018Nullable How-To\u2019. IntelliJ IDEA 5.x Developer Documentation: JetBrains, 2006"},{"key":"10.1049\/iet-sen:20080010_r53","unstructured":"Ekman, T.: \u2018Extensible compiler construction\u2019, 2006, PhD, CS Deparment, Lund University"},{"key":"10.1049\/iet-sen:20080010_r54","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(02)00109-0"},{"key":"10.1049\/iet-sen:20080010_r55","unstructured":"Leavens G.T., Cheon Y.: \u2018Design by contract with JML\u2019, Draft paper, 2005"},{"key":"10.1049\/iet-sen:20080010_r56","first-page":"227","author":"Chalin","year":"2007","journal-title":"Proc 21st European Conf. Object-Oriented Programming (ECOOP)"},{"key":"10.1049\/iet-sen:20080010_r57","first-page":"1","author":"Meyer","year":"2005","journal-title":"Proc. European Conf. Object-Oriented Programming (ECOOP)"},{"key":"10.1049\/iet-sen:20080010_r58","unstructured":"Engelen, A.F.M.: \u2018Nullness analysis of Java source code\u2019, 2006, Master's, Nijmegen Institute for Computing and Information Sciences, Radboud University Nijmegen, The Netherlands"},{"key":"10.1049\/iet-sen:20080010_r59","unstructured":"\u2018Pluggable non-null types for Java\u2019, In Proceeding of TOOLS Europe, 2007 To be Published"},{"journal-title":"Proc. Int. Conf. Principles and Practices of Programming in Java (PPPJ)","year":"2006","author":"Cielecki","key":"10.1049\/iet-sen:20080010_r60"},{"key":"10.1049\/iet-sen:20080010_r61","unstructured":"Gamma, E., Helm, R., Johnson, R., and Vlissides, J.: \u2018Design patterns: elements of reusable object-oriented software\u2019, (Addison-Wesley 1995)"},{"journal-title":"Proc. Conf. Verified Software: Theories, Tools, Experiments (VSTTE)","year":"2008","author":"Chalin","key":"10.1049\/iet-sen:20080010_r62"},{"journal-title":"Proc. ACM Conf. Object-Oriented Programming, Systems, and Applications","year":"2007","author":"Fa\u0308hndrich","key":"10.1049\/iet-sen:20080010_r63"},{"key":"10.1049\/iet-sen:20080010_r64","unstructured":"Leavens G.T., Poll E., Clifton C.,et al.:\u2018JML reference manual\u2019. http:\/\/www.jmlspecs.org, 2008"}],"container-title":["IET Software"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/digital-library.theiet.org\/content\/journals\/10.1049\/iet-sen_20080010?crawler=true&mimetype=application\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,11,12]],"date-time":"2024-11-12T18:28:02Z","timestamp":1731436082000},"score":1,"resource":{"primary":{"URL":"http:\/\/digital-library.theiet.org\/doi\/10.1049\/iet-sen%3A20080010"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,12,15]]},"references-count":64,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2008,12,15]]}},"alternative-id":["10.1049\/iet-sen:20080010"],"URL":"https:\/\/doi.org\/10.1049\/iet-sen:20080010","relation":{},"ISSN":["1751-8806","1751-8814"],"issn-type":[{"type":"print","value":"1751-8806"},{"type":"electronic","value":"1751-8814"}],"subject":[],"published":{"date-parts":[[2008,12,15]]}}}