Question

In software design, we usually take care of UML diagrams and architecture design.

But in case of a data analysis software, we must pay attention to design algorithms and stuff like that. Consider the case of a face detection software which needs AI. Do we need to design AI part of the software explicitly in software design?

P.S: My manager says that it must set clear in feasibility study and be so clear that we could design it in design steps. Is he correct?

Was it helpful?

Solution

From my experience, it is better to start with the algorithm itself. Analyze the algorithm, find out what data flows it requires, what data structures should be used, etc. This approach enables you to build the software around the most complex part of it and thus foresee and manage the risks associated with it. This will also help make implementation easier and more optimal.

If an algorithm is in a separate [independent] module, such analysis could be done after the high-level architecture is developed. But still the analysis should be completed before any decisions regarding implementation are made.

Side Note: Pay special attention on choosing the data structures that the algorithm will work with. Data structures can hide some of the complexity inside them thus making the implementation more maintainable.

OTHER TIPS

All algorithmical parts, especially such of higher complexity, should be well encapsulated behind a deliberately designed API. This will dramatically increase decoupling, which is one of the core design principles, IMHO.

Consequently, the algorithm needs to be designed as detailed as necessary, such that this API becomes a clear enough shape to put it into the overall picture and further changes to that API will be minimized.

You want to minimize risk while reducing the initial efforts, which is more or less a tradeoff in which you have to find the optimal balance point. You can't completely eliminate the risk of further API changes in that stage, but you can strive to avert avoidable mistakes and reduce the impact of such changes as much as possible.

Licensed under: CC-BY-SA with attribution
scroll top