{'fraction_non_alphanumeric': 0.018125323666494046, 'fraction_numerical': 0.0, 'mean_word_length': 4.8545454545454545, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Software FMEA: a learning experience

Product quality is the biggest influencer that determines the bottom-line in a commodity business like consumer electronics. And in a domain like medical industry, the quality/reliability is even more paramount as it directly deals with the safety of human lives. A technique like FMEA (Failure modes and effects analysis) is very useful in such an endeavor to identify potential failure modes and design weaknesses, assess the risk of failures and provide for preventive/corrective actions. This has been proven in the hardware industry for years and a standard practice in those disciplines.
 Software is at the heart of all the products and services, be it consumer devices, medical devices, or banking services etc. In order to provide a reliable and error free product/service it is essential that the potential risks/issues are anticipated well in advance during the requirements/design phase itself and prevented from occurring during the user experience. FMEA is an ideal technique that can be used to accomplish this. However the adoption of this mechanism is relatively nascent in the software industry and copying it as-is from hardware can make this exercise very counter-productive and render it less useful.
 The fundamental question then is -- does this time-proven technique of FMEA really work in a software development scenario? And if yes how is this done? Are there any pitfalls that software teams should be aware of when doing an FMEA? This paper is an attempt to answer all these questions by assimilating the learning's out of defining and deploying software FMEAs. The paper begins by positioning FMEA in the software life cycle, details out the process steps and tailored definitions that can be used in software with some results. The essence of this paper is really the lessons learnt from the experience of deploying FMEAs in various software development projects.