The constantly evolving technological infrastructure of the modem world presents a great challenge of developing software systems with increasing size, complexity, and functionality. The software engineering field has seen changes and innovations to meet these and other continuously growing challenges by developing and implementing useful software engineering methodologies. Among the more recent advances are those made in the context of software portability, formal verification* techniques, software measurement, and software reuse. However, despite the introduction of some important and useful paradigms in the software engineering discipline, their technological transfer on a larger scale has been extremely gradual and limited. For example, many software development organizations may not have a well-defined software assurance team, which can be considered as a key ingredient in the development of a high-quality and dependable software product. Recently, the software engineering field has observed an increased integration or fusion with the computational intelligence Cl field, which is comprised of primarily the mature technologies of fuzzy logic, neural networks, genetic algorithms, genetic programming, and rough sets. Hybrid systems that combine two or more of these individual technologies are also categorized under the Cl umbrella. Software engineering is unlike the other well-founded engineering disciplines, primarily due to its human component designers, developers, testers, etc. factor. The highly non-mechanical and intuitive nature of the human factor characterizes many of the problems associated with software engineering, including those observed in development effort estimation, software quality and reliability prediction, software design, and software testing.