商品簡介
Fundamentals of Dependable Computing for Software Engineers presents the essential elements of computer system dependability. The book describes a comprehensive dependability-engineering process and explains the roles of software and software engineers in computer system dependability.
Readers will learn:
Why dependability matters
What it means for a system to be dependable
How to build a dependable software system
How to assess whether a software system is adequately dependable
The author focuses on the actions needed to reduce the rate of failure to an acceptable level, covering material essential for engineers developing systems with extreme consequences of failure, such as safety-critical systems, security-critical systems, and critical infrastructure systems. The text explores the systems engineering aspects of dependability and provides a framework for engineers to reason and make decisions about software and its dependability. It also offers a comprehensive approach to achieve software dependability and includes a bibliography of the most relevant literature.
Emphasizing the software engineering elements of dependability, this book helps software and computer engineers in fields requiring ultra-high levels of dependability, such as avionics, medical devices, automotive electronics, weapon systems, and advanced information systems, construct software systems that are dependable and within budget and time constraints.
作者簡介
John Knight is a professor of computer science at the University of Virginia. Prior to joining the University of Virginia, he was with NASA’s Langley Research Center. Dr. Knight has been a recipient of the Harlan D. Mills award from the IEEE Computer Society and the Distinguished Service award from ACM’s Special Interest Group on Software Engineering (SIGSOFT). He is an editorial board member of the Empirical Software Engineering Journal and was editor of the IEEE Transactions on Software Engineering from January 2002 to December 2005.
目次
IntroductionThe Elements of Dependability The Role of the Software Engineer Our Dependence on Computers Some Regrettable FailuresConsequences of FailureThe Need for Dependability Systems and Their Dependability RequirementsWhere Do We Go from Here? Organization of This Book
Dependability RequirementsWhy We Need Dependability RequirementsThe Evolution of Dependability Concepts The Role of Terminology What Is a System? Requirements and SpecificationFailureDependability and Its AttributesSystems, Software and DependabilityDefining Dependability Requirements As Low as Is Reasonably Practicable (ALARP)
Errors, Faults, and HazardsErrors The Complexity of Erroneous StatesFaults and DependabilityThe Manifestation of Faults Degradation FaultsDesign FaultsByzantine FaultsComponent Failure SemanticsFundamental Principle of DependabilityAnticipated FaultsHazardsEngineering Dependable Systems
Dependability AnalysisAnticipating Faults Generalizing the Notion of Hazard Fault Tree AnalysisFailure Modes, Effects and Criticality AnalysisHazard and Operability Analysis
Dealing with FaultsFaults and Their TreatmentFault AvoidanceFault EliminationFault ToleranceFault ForecastingApplying the Four Approaches to Fault TreatmentDealing with Byzantine Faults
Degradation Faults and SoftwareImpact on Software RedundancyRedundant ArchitecturesQuantifying the Benefits of Redundancy Distributed Systems and Fail Stop Computers
Software DependabilityFaults and the Software LifecycleFormal TechniquesVerification by Model CheckingCorrectness by Construction Approaches to Correctness by Construction Correctness by Construction — SynthesisCorrectness by Construction — RefinementSoftware Fault AvoidanceSoftware Fault EliminationManaging Software Fault Avoidance and Elimination Misconceptions about Software Dependability
Software Fault Avoidance in SpecificationThe Role of SpecificationDifficulties with Natural Languages Specification DifficultiesFormal LanguagesModel-Based SpecificationThe Declarative Language ZA Simple ExampleA Detailed ExampleOverview of Formal Specification Development
Software Fault Avoidance in ImplementationImplementing SoftwareProgramming LanguagesAn Overview of AdaProgramming StandardsCorrectness by Construction — SPARK
Software Fault EliminationWhy Fault Elimination? InspectionTesting
Software Fault ToleranceComponents Subject to Design FaultsIssues with Design Fault ToleranceSoftware Replication Design DiversityData DiversityTargeted Fault Tolerance
Dependability AssessmentApproaches to AssessmentQuantitative AssessmentPrescriptive StandardsRigorous ArgumentsApplicability of Argumentation
Bibliography
Exercises appear at the end of each chapter.