Warning: Anecdotal evidence follows....
In my experience, at least here in the Australian market - the terms Programmer, Software Developer and Software Engineer are more or less interchangeable (I've held all three for doing the exact same actual work).
The "Software Engineering Director" described in your CNN link is not the same as "Software Engineer". It is really more like a high level technical project manager role. This sort of person wouldn't actually program much, if at all. This role has little to do with your typical "Software Engineer" - which is often just a glorified title for an intermediate to senior programmer.
The "Software Architect" described in the link essentially sounds like a high level team leader, the type who designs the overall structure of a software system and then probably farms off some of the grunt work to more junior programmers. This is the sort of person who heads a project and probably reports to the "Software Engineering Director" - in a large company where lots of teams write various products, especially where integration between them is required.
TL;DR version: 1) Software Engineer is often just a glorified title for "programmer", maybe indicating being somewhat senior. 2) Software Architect probably roughly fits in with a high level team lead who has the responsibility of designing the overall architecture of the project. 3) Software Engineering Director is a high level project manager, the type who possibly reports to the highest levels and probably doesn't touch the code at all.