From a practical point of view, in my limited experience with about 8
510k projects that had significant software components and about an equal number with firmware as an important component, the software developers and project managers don't understand what an SDS is let alone what its value is. FDA should either drop it from the list of required documents, or do a much better job explaining what it's supposed to document. The other documents in the guidance make intuitive sense, or don't take much explaining to get their rationale across.
the SDS always stands out as an outlier - what it is, why do we need to do it, and can we just combine it with the SRS or the architecture?
I usually do the SDS after the fact, but keep it consistent with the architecture.
In response, to other comments on this thread, I don't see how source code can be part of SDS. source code is the medical device. it's the final output, not some intermediate step along the way. granted that source code should be expected to change in response to requirement changes and detected bugs, but this malleability doesn't make it either an SDS or an SRS.
I have observed this scenario often enough that it seems normal:
1) there is a discussion about what the software is supposed to do.
2) some coding happens.
3) somebody generates a flow chart or an architecture diagram that describes what this early version of the software does.
4) there is more discussion, and new requirements and constraints are spoken of.
5) the flow chart is updated.
6) then the final coding is done.
7) it's checked against the flow chart, and either or both are modified as necessary.
8) there are multiple rounds of testing until the software is done.
9) at this point, it's possible to write the SRS, architecture, hazard analysis. The overall device hazard analysis (assuming this is not a software-only device) has been long done, and it may be supplemented now that the software is completed. the product specifications were also done a long time ago, and they may be supplemented now that the exact role of the software is known. Steps 7 and 8 may take a long time and include many iterations.