Good article. It's a pity Microsoft didn't think through the real-life development cycle for DTS packages.
FWIW, here's what I do with my packages. I pass the Server, database, userid, password, security mode (Windows or SQL) and a logging flag (log execution or not) in as global variables. The first step of my packages is a Dynamic Properties task which sets all the connection properties.
In the case of using a datapump, I also store the source and destination in a table and assign them dynamically at runtime. Generally the source is an SQL statement and the destination is a three part table name.
Because everything is dynamic the packages are easily moved through development, QA, Functional Test, Unit Test and Production.
Colt 45 - the original point and click interface