Modern computer-based systems have many required characteristics, including performance, concurrency, timeliness, availability, dependability, safety and security. Aging computer-based systems are being reengineered to exploit distributed and highly parallel hardware platforms, in order to accommodate increased functional requirements and to achieve dependability. Simultaneously, reengineering is introducing modern software engineering principles such as component layering, encapsulation and information hiding, in order to reduce maintenance burdens and to simplify future enhancement. This paper summarizes a process for reengineering of computer-based systems to achieve these goals. The process incorporates experience gained through the reengineering of the Weapons Selection module and the Surface Operations module of the AEGIS Weapon System. A key component of the reengineering process is themission critical software architecture (MCSA), a hierarchical view of systems that includes the abstraction levels of programs, tasks, packages, procedures, and statements. To guide the reengineering processes of software transformation, concurrency metrics are defined at the procedure, package and task levels of the MCSA. The paper defines the intermediate representation (IR) needed to compute the metrics, and shows how to use the IR to compute several metrics: the percentage of concurrency within procedures and packages, and the amount of potential concurrency among tasks. The metrics are important in any reengineering approach that iteratively transforms design and code, or that deals with system configuration (the integration of software, hardware and humanware).