selected scholarly activity
-
books
-
chapters
- SDI: A violation of professional responsibility. 145-152. 2017
- Precise Documentation: The Key to Better Software. 125-148. 2011
- The Use of Mathematics in Software Development. Lecture Notes in Computer Science. 4-5. 2011
- Tabular Expressions and Total Functional Programming. Lecture Notes in Computer Science. 219-236. 2008
- Open Source Software Development: Future or Fad?. 107-122. 2005
- A Family of Mathematical Methods for Professional Software Documentation. Lecture Notes in Computer Science. 1-4. 2005
- Software Inspections We Can Trust. Lecture Notes in Computer Science. 153-154. 2004
- On a ‘Buzzword’: Hierarchical Structure. 429-440. 2002
- On the Criteria To Be Used in Decomposing Systems into Modules. 411-427. 2002
- The Secret History of Information Hiding. 398-409. 2002
- On a ‘Buzzword’: Hierarchical Structure. 499-513. 2001
- Software Documentation and the Verification Process. Lecture Notes in Computer Science. 1-1. 2001
- Invited Talk: A Software Engineering Program of Lasting Value (Abstract). Lecture Notes in Computer Science. 1-1. 2000
- Invited Talk: Making Mathematical Methods More Practical for Software Developers (Abstract). Lecture Notes in Computer Science. 9-10. 2000
- An Easily Extensible Toolset for Tabular Mathematical Expressions. Lecture Notes in Computer Science. 345-359. 1999
- Software Engineering: An unconsummated marriage (extended abstract). Lecture Notes in Computer Science. 1-3. 1997
- Tabular Representations in Relational Documents. 184-196. 1997
- Language-free mathematical methods for software design extended abstract. Lecture Notes in Computer Science. 2-4. 1995
- Teaching programming as engineering. Lecture Notes in Computer Science. 470-481. 1995
- The future of industrial formal methods. Lecture Notes in Computer Science. 236-242. 1995
- Some theorems we should prove. Lecture Notes in Computer Science. 155-162. 1994
- A formal approach to computer systems requirements documentation. Lecture Notes in Computer Science. 452-474. 1993
- Software — Allheilmittel und Rauschgift (Festansprache). 10-20. 1992
- Functional Specifications for Old (and New) Software. 3-14. 1990
- SDI: A Violation of Professional Responsibility. 351-363. 1988
- On the Criteria to Be Used in Decomposing Systems into Modules. 479-498. 1972
-
conferences
- Apresentação/Foreword. 2014 Brazilian Symposium on Software Engineering. viii-xi. 2014
- The use of mathematics in software development (extended abstract). Lecture Notes in Computer Science. 4-5. 2011
- Software Engineering: Multi-person Development of Multi-version Programs. Lecture Notes in Computer Science. 413-427. 2011
- From requirements to architecture. Proceedings of 9th International Conference on New Trends in Software Methodologies, Tools and Techniques, SoMeT_10. 2010
- A documentation approach for the self-adaptive system design. 22ND INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING & KNOWLEDGE ENGINEERING (SEKE 2010). 791-796. 2010
- Document based rational software development. Knowledge-Based Systems. 132-141. 2009
- Connecting Good Theory to Good Practice: Software Documentation: A Case Study. Lecture Notes in Informatics (LNI), Proceedings - Series of the Gesellschaft fur Informatik (GI). 17-20. 2008
- Fault Propagation in Tabular Expression-Based Specifications. Proceedings - International Computer Software and Applications Conference. 180-183. 2008
- Automated Test Data Generation and Reliability Assessment for Software in High Assurance Systems. Proceedings of IEEE International Symposium on High Assurance Systems Engineering. 237-244. 2007
- Precise Documentation of Critical Software. 10th IEEE High Assurance Systems Engineering Symposium (HASE'07). 237-244. 2007
- "No silver bullet" reloaded. Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion. 1026-1030. 2007
- Precise software documentation. Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion. 725. 2007
- Tabular Expression-Based Testing Strategies: A Comparison. Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007). 134-134. 2007
- Tabular Expression-Based Testing Strategies: A Comparison. Testing: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007). 134. 2007
- Resolving Dilemmas in Software Engineering Education. Software Engineering Education Conference, Proceedings. xix-xix. 2007
- Segregated failures model for availability evaluation of fault-tolerant systems. Conferences in Research and Practice in Information Technology Series. 55-61. 2006
- Specification of Software Component Requirements Using the Trace Function Method. 2006 International Conference on Software Engineering Advances (ICSEA'06). 50. 2006
- Component Interface Documentation What do we Need and Why do we Need it?. Frontiers in Artificial Intelligence and Applications. 3-21. 2006
- Availability Evaluation of Hardware/Software Systems with Several Recovery Procedures. Proceedings - International Computer Software and Applications Conference. 473-478. 2005
- Disciplined methods of software specification: a case study. International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II. 428-437. 2005
- Document driven disciplined development of software. 2005 Australian Software Engineering Conference. 2-3. 2005
- Using information about functions in selecting test cases. Proceedings of the first international workshop on Advances in model-based testing - A-MOST '05. 1-7. 2005
- Modularity in the new millennium: A panel summary. Proceedings - International Conference on Software Engineering. 723-724. 2003
- The limits of empirical studies of software engineering. 2003 International Symposium on Empirical Software Engineering, 2003. ISESE 2003. Proceedings.. 2-5. 2003
- Software engineering research agendas panel (SERA) "What can't we do, but need to learn how to do?". Proceedings - International Conference on Software Engineering. 698. 2001
- Systematic documentation of requirements. Proceedings of the IEEE International Conference on Requirements Engineering. 248-248. 2001
- Requirements-based monitors for real-time systems. Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis. 77-85. 2000
- Requirements documentation: why a formal basis is essential. Proceedings of the IEEE International Conference on Requirements Engineering. 81-82. 2000
- Two positions on licensing. Proceedings of the IEEE International Conference on Requirements Engineering. 154-155. 2000
- Building on rock: from mills'program functions to tabular notation. Proceedings. Science and Engineering for Software Development: A Recognition of Harlin D. Mills Legacy (Cat. No. PR00010). x-xi. 1999
- Software engineering - Old problems, new problems, and unsolved problems. Lecture Notes in Computer Science. 530-530. 1997
- Software engineering: An unconsummated marriage. Lecture Notes in Computer Science. 1-3. 1997
- Teaching For Change. Proceedings Tenth Conference on Software Engineering Education and Training. 174-175. 1997
- Table transformation tools: why and how. Proceedings of 11th Annual Conference on Computer Assurance. COMPASS '96. 3-11. 1996
- Applying mathematical software documentation. COMPASS - Proceedings of the Annual Conference on Computer Assurance. 273-285. 1995
- Applying mathematical software documentation: an experience report. COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'. 273-284. 1995
- Language-free mathematical methods for software design extended abstract. Lecture Notes in Computer Science. 1-4. 1995
- Generating a test oracle from program documentation. Proceedings of the 1994 international symposium on Software testing and analysis - ISSTA '94. 58-65. 1994
- Software aging. Proceedings - International Conference on Software Engineering. 279-287. 1994
- Documentation for safety critical software. Proceedings - International Conference on Software Engineering. 315-323. 1993
- Documentation of requirements for computer systems. Proceedings of the IEEE International Conference on Requirements Engineering. 198-207. 1993
- On satisfying timing constraints in hard-real-time systems. IEEE Transactions on Software Engineering. 70-84. 1993
- Simulating the behaviour of software modules by trace rewriting. Proceedings - International Conference on Software Engineering. 14-22. 1993
- Trace rewriting systems. Lecture Notes in Computer Science. 343-356. 1993
- Pre-run-time scheduling of processes with exclusion relations on nested or overlapping critical sections. Eleventh Annual International Phoenix Conference on Computers and Communication [1992 Conference Proceedings]. 774-782. 1992
- On satisfying timing constraints in hard-real-time systems. Proceedings of the conference on Software for citical systems. 132-146. 1991
- WHY WE WOULD NEVER TRUST THE SDI SOFTWARE.. Proceedings - IEEE Computer Society International Conference. 91-92. 1986
- ACTIVE DESIGN REVIEWS: PRINCIPLES AND PRACTICES.. Proceedings - International Conference on Software Engineering. 132-136. 1985
- WRITING SOFTWARE REQUIREMENTS - AN ENGINEER'S VIEW.. 120. 1985
- A rational design process: How and why to fake it. Lecture Notes in Computer Science. 80-100. 1985
- MODULAR STRUCTURE OF COMPLEX SYSTEMS.. Proceedings - International Conference on Software Engineering. 408-417. 1984
- ENHANCING REUSABILITY WITH INFORMATION HIDING.. 240-247. 1983
- ON THE USES OF SYNCHRONIZATION IN HARD-REAL-TIME SYSTEMS.. 101-109. 1983
- On the Uses of Synchronization in Hard-real-time Systems. MILCOM 1983 - IEEE Military Communications Conference. 754-759. 1983
- Rapid prototyping by means of abstract module specifications written as trace axioms. Proceedings of the workshop on Rapid prototyping -. 45-49. 1982
- A procedure for designing abstract interfaces for device interface modules. Proceedings - International Conference on Software Engineering. 195-204. 1981
- Designing software for ease of extention and contraction. Proceedings - International Conference on Software Engineering. 264-277. 1978
- Using assertions about traces to write abstract specifications for software modules. Lecture Notes in Computer Science. 211-236. 1978
- Response to undesired events in software systems. Proceedings - International Conference on Software Engineering. 437-446. 1976
- Abstract types defined as classes of variables. Proceedings of the ACM SIGMOD International Conference on Management of Data. 149-154. 1976
- DESIGN AND SPECIFICATION OF THE MINIMAL SUBSET OF AN OPERATING SYSTEM.. 23-38. 1976
- INFLUENCE OF SOFTWARE STRUCTURE ON RELIABILITY.. 358-362. 1975
- Software engineering or methods for the multi-person construction of multi-version programs. Lecture Notes in Computer Science. 225-235. 1975
- The influence of software structure on reliability. ACM SIGPLAN Notices. 358-362. 1975
- The design of the virtual memory aspects of a virtual machine. Proceedings of the workshop on virtual computer systems on -. 184-190. 1973
- A course on software engineering techniques. Proceedings of the second SIGCSE technical symposium on Education in computer science - SIGCSE '72. 154-159. 1972
- Some conclusions from an experiment in software engineering techniques. Proceedings of the December 5-7, 1972, fall joint computer conference, part I on - AFIPS '72 (Fall, part I). 325-329. 1972
- More on simulation languages and design methodology for computer systems. Proceedings of the May 14-16, 1969, spring joint computer conference on XX - AFIPS '69 (Spring). 739-739. 1969
- On the use of transition diagrams in the design of a user interface for an interactive computer system. Proceedings of the 1969 24th national conference on -. 379-385. 1969
- SODAS and a methodology for system design. Proceedings of the November 14-16, 1967, fall joint computer conference on - AFIPS '67 (Fall). 449-474. 1967
- State table analysis of programs in an algo-like language. Proceedings of the 1966 21st national conference on -. 391-400. 1966
-
journal articles
- Software Engineering: A Profession in Waiting. Computer. 54:62-64. 2021
- A case against mission-critical applications of machine learning. Communications of the ACM. 62:9-9. 2019
- Software Structures: A Careful Look. IEEE Software. 35:68-71. 2018
- An interview with Dave Parnas. Communications of the ACM. 61:25-27. 2018
- Toward an equation that anticipates AI risks. Communications of the ACM. 61:8-9. 2018
- The real risks of artificial intelligence. Communications of the ACM. 60:27-31. 2017
- Software Systems Engineering programmes a capability approach. Journal of Systems and Software. 125:354-364. 2017
- Abolish software warranty disclaimers. Communications of the ACM. 58:8-9. 2015
- On the significance of Turing's test. Communications of the ACM. 57:8-9. 2014
- When predicting, start with humility. Communications of the ACM. 55:8-9. 2012
- The use of mathematics in software quality assurance. Frontiers of Computer Science. 6:3-16. 2012
- Software Engineering - Missing in Action: A Personal Perspective. Computer. 44:54-58. 2011
- A Comparison of Tabular Expression-Based Testing Strategies. IEEE Transactions on Software Engineering. 37:616-634. 2011
- The risks of stopping too soon. Communications of the ACM. 54:31-33. 2011
- Defining the meaning of tabular mathematical expressions. Science of Computer Programming. 75:980-1000. 2010
- A family of computer systems for delivering individualized advice. Knowledge-Based Systems. 23:645-666. 2010
- Risks of undisciplined development. Communications of the ACM. 53:25-27. 2010
- Documenting and verifying systems assembled from components. Frontiers of Computer Science. 4:151-161. 2010
- From requirements to architecture. Frontiers in Artificial Intelligence and Applications. 217:3-36. 2010
- Really Rethinking 'Formal Methods'. Computer. 43:28-34. 2010
- Point/Counterpoint. IEEE Software. 26:56-59. 2009
- Computer systems availability evaluation using a segregated failures model. Quality and Reliability Engineering International. 24:447-465. 2008
- Stop the numbers game. Communications of the ACM. 50:19-21. 2007
- Which is riskier. Communications of the ACM. 50:112-112. 2007
- Forum. Communications of the ACM. 50:7-9. 2007
- Authors respond [9]. Communications of the ACM. 49:13. 2006
- Proof depends on evidence[5]. Communications of the ACM. 49:12. 2006
- Wikipedia risks. Communications of the ACM. 48:152-152. 2005
- Goals for software engineering student education. ACM SIGSOFT Software Engineering Notes. 30:6-8. 2005
- Using information about functions in selecting test cases. ACM SIGSOFT Software Engineering Notes. 30:1-7. 2005
- Structured programming: A minor part of software engineering. Information Processing Letters. 88:53-58. 2003
- The role of inspection in software quality assurance. IEEE Transactions on Software Engineering. 29:674-676. 2003
- Inspection's role in software quality assurance. IEEE Software. 20:16-20. 2003
- Preface. Electronic Notes in Theoretical Computer Science. 44:221-223. 2003
- The Tabular Method for Relational Documentation. Electronic Notes in Theoretical Computer Science. 44:1-26. 2003
- Licensing software engineers in Canada. Communications of the ACM. 45:96-98. 2002
- Requirements-based monitors for real-time systems. IEEE Transactions on Software Engineering. 28:146-158. 2002
- Inside risks: computers. Communications of the ACM. 44:168-168. 2001
- Requirements-based monitors for real-time systems. ACM SIGSOFT Software Engineering Notes. 25:77-85. 2000
- Priority scheduling versus pre-run-time scheduling. Real-Time Systems. 18:7-23. 2000
- Parnas on Parnas. ACM SIGSOFT Software Engineering Notes. 24:47-49. 1999
- Inside risks: ten myths about Y2K inspections. Communications of the ACM. 42:128-128. 1999
- On code reuse. ACM SIGSOFT Software Engineering Notes. 24:4-4. 1999
- Software engineering programs are not computer science programs. IEEE Software. 16:19-30. 1999
- Who taught me about software engineering research?. ACM SIGSOFT Software Engineering Notes. 23:26-28. 1998
- Priority Scheduling Versus Pre-Run-Time Scheduling. IFAC-PapersOnLine. 31:53-60. 1998
- Successful software engineering research. ACM SIGSOFT Software Engineering Notes. 23:64-68. 1998
- Using test oracles generated from program documentation. IEEE Transactions on Software Engineering. 24:161-173. 1998
- “Formal methods” technology transfer will fail. Journal of Systems and Software. 40:195-198. 1998
- Software engineering programmes are not computer science programmes. Annals of Software Engineering. 6:19-37. 1998
- Software engineering (extended abstract). ACM SIGSOFT Software Engineering Notes. 22:1-3. 1997
- Software engineering. Communications of the ACM. 40:128-128. 1997
- Mathematical methods: What we need and don't need. Computer. 29:28-29. 1996
- Why software jewels are rare. Computer. 29:57-60. 1996
- A logic for describing, not verifying, software. Erkenntnis: An International Journal of Scientific Philosophy. 43:321-338. 1995
- Functional documents for computer systems. Science of Computer Programming. 25:41-61. 1995
- On ICSE's “most influential” papers. ACM SIGSOFT Software Engineering Notes. 20:29-32. 1995
- On the computational complexity of the maximum trade problem. Acta Mathematicae Applicatae Sinica. 10:434-440. 1994
- Precise documentation of well-structured programs. IEEE Transactions on Software Engineering. 20:948-976. 1994
- Simulating the behavior of software modules by trace rewriting. IEEE Transactions on Software Engineering. 20:750-759. 1994
- Predicate logic for software engineering. IEEE Transactions on Software Engineering. 19:856-862. 1993
- On satisfying timing constraints in hard-real-time systems. ACM SIGSOFT Software Engineering Notes. 16:132-146. 1991
- Assessment of safety-critical software in nuclear power plants. NUCLEAR SAFETY. 32:189-198. 1991
- Evaluation of safety-critical software. Communications of the ACM. 33:636-648. 1990
- Scheduling processes with release times, deadlines, precedence and exclusion relations. IEEE Transactions on Software Engineering. 16:360-369. 1990
- On iterative constructs. ACM Transactions on Programming Languages and Systems. 12:139-141. 1990
- Education for computing professionals. Computer. 23:17-22. 1990
- On synchronization in hard-real-time systems. Communications of the ACM. 31:274-287. 1988
- Why Engineers Should Not Use Artificial Intelligence. INFOR: Information Systems and Operational Research. 26:234-246. 1988
- Active design reviews: Principles and practices. Journal of Systems and Software. 7:259-265. 1987
- Warum ich an SDI nicht mitarbeite: Eine Auffassung beruflicher Verantwortung. Informatik-Spektrum. 10:3-10. 1987
- Correction to “a rational design process: How and why to fake it”. IEEE Transactions on Software Engineering. SE-12:874-874. 1986
- Star Wars Software. Science. 233:403-403. 1986
- Star Wars Software. Science. 233:403-403. 1986
- Star Wars Software. Science. 233:403-403. 1986
- A rational design process: How and why to fake it. IEEE Transactions on Software Engineering. SE-12:251-257. 1986
- Software aspects of strategic defense systems. Communications of the ACM. 28:1326-1335. 1985
- Software aspects of strategic defense systems. ACM SIGSOFT Software Engineering Notes. 10:15-23. 1985
- Technical correspondence. Communications of the ACM. 28:534-538. 1985
- The Modular Structure of Complex Systems. IEEE Transactions on Software Engineering. SE-11:259-266. 1985
- The Parnas papers. ACM SIGCAS Computers & Society. 14,15:27-37. 1985
- Software Engineering Principles. INFOR: Information Systems and Operational Research. 22:303-316. 1984
- A generalized control structure and its formal definition. Communications of the ACM. 26:572-581. 1983
- A technique for software module specification with examples. Communications of the ACM. 26:75-78. 1983
- Using Documentation as a Software Design Medium. Bell Labs Technical Journal. 60:1941-1977. 1981
- Designing Software for Ease of Extension and Contraction. IEEE Transactions on Software Engineering. SE-5:128-138. 1979
- DESIGNING SOFTWARE FOR EASE OF EXTENSION AND CONTRACTION. 1978
- Design and Specification of the Minimal Subset of an Operating System Family. IEEE Transactions on Software Engineering. SE-2:301-307. 1976
- Abstract types defined as classes of variables. ACM SIGPLAN Notices. 11:149-154. 1976
- Abstract types defined as classes of variables. SIGMOD Record. 8:149-154. 1976
- On the Design and Development of Program Families. IEEE Transactions on Software Engineering. SE-2:1-9. 1976
- Use of the concept of transparency in the design of hierarchically structured systems. Communications of the ACM. 18:401-408. 1975
- Significant event simulation. Communications of the ACM. 18:323-329. 1975
- The influence of software structure on reliability. ACM SIGPLAN Notices. 10:358-362. 1975
- On the need for fewer restrictions in changing compile-time environments. ACM SIGPLAN Notices. 10:29-36. 1975
- On a solution to the cigarette smoker's problem (without conditional statements). Communications of the ACM. 18:181-183. 1975
- ON THE NEED FOR FEWER RESTRICTIONS IN CHANGING COMPILE-TIME ENVIRONMENTS. 1975
- Information streams sharing a finite buffer: other solutions. Information Processing Letters. 3:16-21. 1974
- On the criteria to be used in decomposing systems into modules. Communications of the ACM. 15:1053-1058. 1972
- Comment on deadlock preventive method. Communications of the ACM. 15:840-841. 1972
- A technique for software module specification with examples. Communications of the ACM. 15:330-336. 1972
- A course on software engineering techniques. SIGCSE Bulletin (Association for Computing Machinery, Special Interest Group on Computer Science Education). 4:154-159. 1972
- AFIPS, JOINT COMPUTER CONFERENCE, FALL ANAHEIM, CALIF, DEC 5-7 1972.. AFIPS Conf Proc, Fall Jt Comput Conf. 41. 1972
- Comments on ?A comparison of two synchronizing concepts by P.B. Hansen?. Acta Informatica. 1:375-376. 1972
- Concurrent control with “readers” and “writers”. Communications of the ACM. 14:667-668. 1971
- On simulating networks of parallel processes in which simultaneous events may occur. Communications of the ACM. 12:519-531. 1969
- Letters to the editor: on improving the quality of our technical meetings. Communications of the ACM. 11:537-538. 1968
- State table analysis of programs in an ALGOL-like language. Communications of the ACM. 9:481-481. 1966
- On facilitating parallel and multiprocessing in ALGOL. Communications of the ACM. 9:257-257. 1966
- On the preliminary report of C 3 S. Communications of the ACM. 9:242-243. 1966
- A language for describing the functions of synchronous systems. Communications of the ACM. 9:72-76. 1966
-
reports
- Documentation for safety critical software. Atomic Energy of Canada Limited, AECL (Report). 11-29. 1993