Muutke küpsiste eelistusi

E-raamat: Embedded Software Development for Safety-Critical Systems

(QNX Software Systems, Canada)
  • Formaat: 344 pages
  • Ilmumisaeg: 06-Oct-2015
  • Kirjastus: Auerbach Publishers Inc.
  • Keel: eng
  • ISBN-13: 9781498726719
  • Formaat - PDF+DRM
  • Hind: 54,59 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 344 pages
  • Ilmumisaeg: 06-Oct-2015
  • Kirjastus: Auerbach Publishers Inc.
  • Keel: eng
  • ISBN-13: 9781498726719

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

"I highly recommend Mr. Hobbs' book." - Stephen Thomas, PE, Founder and Editor of FunctionalSafetyEngineer.com

Safety-critical devices, whether medical, automotive, or industrial, are increasingly dependent on the correct operation of sophisticated software. Many standards have appeared in the last decade on how such systems should be designed and built. Developers, who previously only had to know how to program devices for their industry, must now understand remarkably esoteric development practices and be prepared to justify their work to external auditors.

Embedded Software Development for Safety-Critical Systems discusses the development of safety-critical systems under the following standards: IEC 61508; ISO 26262; EN 50128; and IEC 62304. It details the advantages and disadvantages of many architectural and design practices recommended in the standards, ranging from replication and diversification, through anomaly detection to the so-called "safety bag" systems.

Reviewing the use of open-source components in safety-critical systems, this book has evolved from a course text used by QNX Software Systems for a training module on building embedded software for safety-critical devices, including medical devices, railway systems, industrial systems, and driver assistance devices in cars.

Although the book describes open-source tools for the most part, it also provides enough information for you to seek out commercial vendors if thats the route you decide to pursue. All of the techniques described in this book may be further explored through hundreds of learned articles. In order to provide you with a way in, the author supplies references he has found helpful as a working software developer. Most of these references are available to download for free.

Arvustused

"I highly recommend Mr. Hobbs' book." - Stephen Thomas, PE, Founder and Editor of FunctionalSafetyEngineer.com

Preface xiii
Acknowledgments xvii
About the Author xix
Section I: Background
1 Introduction
3(10)
Dependable, Embedded Software
3(1)
Safety Culture
4(2)
Our Path
6(1)
Choosing the Techniques to Describe
7(1)
Development Approach
7(3)
Today's Challenges
10(2)
References
12(1)
2 Terminology of Safety
13(14)
General Safety Terminology
13(7)
Software-Specific Terminology
20(4)
References
24(3)
3 Safety Standards and Certification
27(20)
Standards Bodies
27(2)
Accreditation and Certification
29(2)
Why Do We Need These Standards?
31(1)
Goal- and Prescription-Based Standards
32(1)
Functional Safety Standards
33(8)
IEC 62304 and ISO 14971
41(2)
Process and the Standards
43(1)
Summary
44(1)
References
45(2)
4 Representative Companies
47(6)
Alpha Device Corporation
47(1)
Beta Component Incorporated
48(1)
Using a Certified Component
48(5)
Section II: The Project
5 Foundational Analyses
53(24)
Analyses
53(1)
Interrelationships
54(2)
Hazard and Risk Analysis
56(5)
Safety Case
61(6)
Failure Analysis
67(5)
Analyses by Example Companies
72(2)
Summary
74(1)
References
74(3)
6 Certified and Uncertified Components
77(12)
SOUP by Any Other Name
77(1)
Certified or Uncertified SOUP
78(1)
Using Non-Certified Components
79(4)
Using a Certified Component
83(2)
Aligning Release Cycles
85(1)
Example Companies
85(4)
Section III: Design Patterns
7 Architectural Balancing
89(8)
Availability/Reliability Balance
90(1)
Usefulness/Safety Balance
91(1)
Security/Performance/Safety Balance
92(2)
Performance/Reliability Balance
94(1)
Implementation Balance
94(1)
Summary
95(1)
References
95(2)
8 Error Detection and Handling
97(26)
Why Detect Errors?
97(1)
Error Detection and the Standards
98(1)
Anomaly Detection
98(14)
Rejuvenation
112(5)
Recovery Blocks
117(3)
A Note on the Diverse Monitor
120(1)
Summary
120(1)
References
120(3)
9 Expecting the Unexpected
123(8)
Design Safe State
123(3)
Recovery
126(1)
Crash-Only Model
127(1)
Anticipation of the Unexpected by the Example Companies
128(1)
Summary
129(1)
References
129(2)
10 Replication and Diversification
131(24)
History of Replication and Diversification
131(1)
Replication in the Standards
132(1)
Component or System Replication?
132(1)
Replication
133(3)
Diversification
136(5)
Virtual Synchrony
141(5)
Locked-Step Processors
146(1)
Diverse Monitor
147(3)
Summary
150(1)
References
150(5)
Section IV: Design Validation
11 Markov Models
155(10)
Markov Models
155(1)
Markov Models and the Standards
156(1)
The Markovian Assumptions
156(2)
Example Calculation
158(4)
Markovian Advantages and Disadvantages
162(1)
References
163(2)
12 The Fault Tree
165(14)
FTA and FMECA
165(1)
Fault Tree Analysis in the Standards
166(1)
Types of Fault Tree
166(1)
Example 1: Boolean Fault Tree
167(2)
Example 2: Extended Boolean Fault Tree
169(2)
Example 3: Bayesian Fault Tree
171(5)
Combining FTAs
176(1)
FTA Tools
176(1)
The Use of FTA
177(1)
References
177(2)
13 Software Failure Rates
179(8)
Underlying Heresy
179(2)
Compiler and Hardware Effects
181(1)
Assessing Failure Rates
182(2)
Modeling the Failures
184(1)
References
185(2)
14 Semi-Formal Design Verification
187(24)
Verification of a Reconstructed Design
188(2)
Discrete Event Simulation
190(9)
Timed Petri Nets
199(8)
Simulation and the Example Companies
207(1)
References
208(3)
15 Formal Design Verification
211(28)
What Are Formal Methods?
211(1)
History of Formal Methods
212(1)
Formal Methods and the Standards
213(3)
Do Formal Methods Work?
216(1)
Types of Formal Methods
217(1)
Automatic Code Generation
218(1)
Spin Modeling Tool
218(7)
Rodin Modeling Tool
225(5)
Formal Modeling by the Example Companies
230(1)
Formal Methods
231(1)
References
232(7)
Section V: Coding
16 Coding Guidelines
239(8)
Programming Language Selection
239(1)
Programming Languages and the Standards
240(1)
Language Features
240(4)
Use of Language Subsets
244(2)
So, What Is the Best Programming Language?
246(1)
References
246(1)
17 Code Coverage Metrics
247(16)
Code Coverage Testing
247(1)
Types of Code Coverage
248(6)
Coverage and the Standards
254(1)
Effectiveness of Coverage Testing
255(1)
Achieving Coverage
256(1)
Combinatorial Testing
257(4)
Summary
261(1)
References
261(2)
18 Static Analysis
263(16)
What Static Analysis Is Asked to Do
263(2)
Static Code Analysis and the Standards
265(1)
Static Code Analysis
265(7)
Symbolic Execution
272(2)
Summary
274(1)
References
275(4)
Section VI: Verification
19 Integration Testing
279(14)
Fault Injection Testing
280(4)
Back-to-Back Comparison Test between Model and Code
284(4)
Requirements-Based Testing
288(3)
Anomaly Detection During Integration Testing
291(1)
References
292(1)
20 The Tool Chain
293(14)
Validation of the Tool Chain
293(1)
Tool Classification
294(1)
BCI's Tools Classification
295(1)
Using Third-Party Tools
295(1)
Verifying the Compiler
296(6)
ADC's and BCI's Compiler Verification
302(3)
References
305(2)
21 Conclusion
307(4)
Section VII: Appendices
A Goal Structuring Notation
311(4)
Background
311(1)
Example
312(2)
GSN or BBN?
314(1)
References
314(1)
B Bayesian Belief Networks
315(12)
Frequentists and Bayesians
315(1)
Prior Probabilities
316(1)
Bayes' Theorem
317(1)
A Bayesian Example
318(1)
What Do the Arrows Mean in a BBN?
319(1)
BBNs in Safety Case Arguments
320(4)
BBNs in Fault Trees
324(1)
BBN or GSN for a Safety Case?
324(2)
References
326(1)
C Notations
327(8)
General Symbols
327(1)
Pi and Ip
328(1)
The Structure Function
329(1)
Components in Parallel and Series
329(1)
Temporal Logic
330(3)
Vector Bases
333(1)
References
334(1)
Index 335
Chris is a programmer at QNX Software Systems with some 40 years of software development experience. His specialty is "Sufficiently Dependable Software," which is software that meets its dependability requirements with the minimum development effort and risk. In particular, he works with software for safety-critical systems that must meet the requirements of international safety standards such as IEC61508, ISO26262, EN50128 and IEC62304. Outside his professional work as a software developer, Chris is the author of several books including "Flying Beyond: The Canadian Commercial Pilot Textbook" and "Embedded Software Development for Safety-Critical Systems."