Software in Medical Devices, by MD101 Consulting - What is a Software Unit? - CommentsBlog about software medical devices and their regulatory compliance. Main subjects are software validation, IEC 62304, ISO 13485, ISO 14971, CE mark 93/42 directive and 21 CFR part 820.2024-03-27T15:32:28+01:00Cyrille Michaudurn:md5:9c06172e7cd5ed0f5b192883b657eabbDotclearWhat is a Software Unit? - Mitchurn:md5:6ad0b1ad5dd9aab648fe6205597bf3132021-06-12T21:21:52+02:002021-06-12T20:21:52+02:00MitchHi Onni,
Many thanks for your feedback.
Testing SW units without instanciating some other components can be a bit artificial. It's possible sometimes by using mock objects or similar artifacts. But it is very likely that you need some other components to test units the appropriate way. Especially when they depend on general-purpose libraries.What is a Software Unit? - Onniurn:md5:60db907eb4d84245914825b57def471e2021-06-11T13:53:52+02:002021-06-11T12:53:52+02:00Onni<p>Hi Mitch,</p>
<p>I really appreciate the work you have put down to decipher the IEC 62304!</p>
<p>The definition of UNIT seems to imply that a UNIT cannot depend on another UNIT. Also in B.5.4 the standard says "UNITS can be tested separately".</p>
<p>Surely it is good to minimize tight dependencies between UNITS. But how am I supposed to e.g. work with general purpose libraries/modules (which are UNITS on their own)? These libraries are usually used extensively everywhere. The standard seems to categorically mandate that UNITS should be implemented in such way that they can be tested in separation even from general purpose libraries/modules.</p>
<p>Please tell me that there's a less restrictive way to interpret the standard.</p>
<p>Any comments appreciated!</p>What is a Software Unit? - Mitchurn:md5:3e5f172dcb52553751987592893f54c72021-04-20T15:25:46+02:002021-04-20T14:25:46+02:00MitchHi Dan,
Thanks for your feedback and comment.
"It looks here that you are describing something similar to "Component based programming". Is that right?"
IEC 62304 doesn't talk about component-based programming. But it's true that the approach of SW items and SW units is similar to component-based programming.
"Is this article saying that the same approach would be useful for class C embedded medical devices?"
Yes, the same approach would be useful for class C embedded MD, since they are similar.
"Is 62304 saying that we must use Component Based Programming and design for class C medical devices?"
No, this is not written neither in the normative part, nor in the annexes.
"What if the amount of software was closer to being more easily represented using plain classes and OO? Would we still be required to "componentise" the software and add interfaces?"
That's possible to consider that the components are equal to the plain old classes and POO if the embedded SW is tiny enough to make the component level redundant or not useful. To make it short, if your software is tiny enough, you can have software units equal to classes. Then no "composentization" is required.
Hope it helpsWhat is a Software Unit? - Danurn:md5:468b4593119dca4dc21560bbbe3094b92021-04-19T12:17:19+02:002021-04-19T11:17:19+02:00Dan<p>Hi,</p>
<p>Thanks for the articles and the information you share, its great! I think this article is very interesting.</p>
<p>What is not clear to me is, 62304 talks about software units and specifying interfaces. It looks here that you are describing something similar to "Component based programming". Is that right? My understanding of component based programming was that it is useful for large scale enterprise systems and implementing micro-services architectures and such. I have read about it in the Ian Somerville books and in the "UML Component" book by Cheeseman and Daniels. Is this article saying that the same approach would be useful for class C embedded medical devices? Is 62304 saying that we must use Component Based Programming and design for class C medical devices? What if the amount of software was closer to being more easily represented using plain classes and OO? Would we still be required to "componentise" the software and add interfaces?</p>
<p>Thanks again!</p>
<p>Dan</p>