Software project proposals, solicited from various sources across an organization, could significantly vary in strategic value, overlap in functionality, and assume conflicting technical infrastructure. Without a holistic approach toward project selection and planning, the resulting project portfolio will likely incur undue risk while delivering poor return on investment. We propose a two-stage optimization procedure. In the first stage, project characteristics such as strategic alignment, perceived benefits, cost, and risk are considered to maximize portfolio value. In the second stage, inter-project dependencies and team expertise are used to determine how projects are assigned to programs and in what sequence they should be carried out. Future extension on the proposed optimization procedure is also discussed.