I'm working on a project where a bunch of software (C++/OO) is being ported to a new hardware environment. A certain percentage of the software modules should be subjectively similar on the new hardware platform.
A code review for some of these modules has shown that the port done is been done with a minimal effort or insight - the developers doing the work are inexperienced, as often happens with porting. However it has also shown that the design of the software is lacking - either over-complicated, handles error conditions badly or just has a bunch of 'code smells'.
I have asked that instead of reviewing code after the port has been 'done', we review the design first. However, I am told that this might not be a good use of time, probably because the existing documented designs are not up to date.
Am I barking up the wrong tree? Is a design process inherently slow? Is there a way to avoid getting bogged down in the full design process. Or is hands on code always the best way to sort things out - even with inexperienced coders?
Update. Thanks for the answers so far. Yes the s/w will be used in many (hopefully) future products/revisions. Also I didn't mention that the code is going to be multi-threaded too (previously a single threaded environment). This alone maybe good enough to indicate "review the design" I would like to proactively (yuck) see if a process of design review can be put into porting. I'm distrustful of just hoping to fix something up when it stops working - if something is found in testing to be fundamentally broken I'd rather not redesign come defect fixing time.