William Bail
Friday June 24th, morning
The development of large, complex software-intensive systems has proven to be a significant and persistent challenge, despite continuing optimism about the chances for success. The experience of government and industry has been less than encouraging, yet the need for new complex systems is ever-increasing. We have had some dramatic failures, yet we still have needs for new and improved systems. When we look at systems that have a need to be highly dependable or even safety-critical, we recognize the urgency in finding solutions---the current situation is clearly untenable. Unfortunately, as we mature our understanding of software development and improve our processes, it seems that the complexity of the systems we want to develop grows almost exponentially. In post-mortem analyses of project failures and ``near-failures", one common root cause that has been identified has been the (mis)treatment of requirements. This result is not surprising since requirements form the foundation of all development. A fragile foundation does not provide a good basis for a sound, dependable system. This tutorial will examine in detail the nature and role of requirements. It will discuss the various types of requirements and their role in development, as well as their impact to system success. The different ways that requirements need to be handled will be analyzed, and recommended techniques for process improvements will be discussed. An overview of traditional approaches will be provided, with an assessment of their strengths and weaknesses. In addition, a set of common challenges will be presented, together with strategies for how to manage them. Sample challenges include the impact of changing requirements and uncertain operational environments. While the tutorial will not specifically address particular approaches to requirements definition (such as tools and techniques), it will characterize classes of these techniques, and provide recommendations for how to select the appropriate ones for projects of interest. The overall goal of the tutorial is to enable the attendees to effectively identify and handle requirements in their systems, as well as to implement improvements to their development processes to avoid common pitfalls that have historically plagued projects. The tutorial will also assist attendees in identifying risk areas within their projects, and in planning for effective mitigation activities.
Since 1990, Dr. Bail has worked for The MITRE Corporation in McLean VA as a Computer Scientist in the Software Engineering Center (SWEC) . MITRE is a not-for-profit corporation chartered to provide systems engineering services to the U.S. Government agencies, primarily the DoD, the FAA, and the IRS. Within MITRE, the SWEC focuses on supporting various programs with consultation, particularly transitioning emerging technologies into practice.
Dr. Bail's technical areas of focus include dependable software design and assessment, error handling policies, techniques for software specification development, design methodologies, metric definition and application, and verification and validation. At MITRE, Dr. Bail is currently supporting the U.S. Navy, focusing on the practice of software engineering within PEO IWS (Integrated Warfare Systems), particularly as applied to large real-time systems. Prior to 1990, Dr. Bail worked at Intermetrics Inc. in Bethesda MD.
Previously, Dr. Bail taught part-time at The University of Maryland from 1983-1986 in the Computer Science Department for undergraduate courses in discrete mathematics, computer architecture, and programming language theory. Since 1989 he has served as an part-time Adjunct Associate Professor at the University of Maryland University College where he develops instructional materials and teaches courses in software engineering, in topics such as Software Requirements, Verification and Validation, Software Design, Software Engineering, Fault Tolerant Software, and others. He has also presented tutorials in Cleanroom Software Engineering at SIGAda in 2000, and at AdaEurope in 2002 and 2003, as well as tutorials in Ada in the early 1990s.
Dr. Bail received a BS in Mathematics from Carnegie Institute of Technology, and an MS and Ph.D. in Computer Science from the University of Maryland.