UCSoft White Paper Our Changing World of the Software Industry From Guesswork to Scientific Work of Software Engineering Jerry Zhu, Ph.D. UCSoft 2727 Duke Street, Suite #602 Alexandria, VA 22314 (phone) 703 461 3632 (fax) 866 201 3281
[email protected] Abstract Software engineering is an immature field much like civil engineering before scientific revolution when engineering requirements were specified based on personal opinions, resulting in imprecise, incomplete, and unstable requirements. During the time before Isaac Newton, there was no consensus to mandate how bridges should be built, and because everyone followed his or her own methods, most bridges fell down. The same is true for software engineering as a huge diversity of software development methodologies is seen in the market today. After Newton, when physics and mathematics were well established, civil engineers would be able to specify requirements in terms of scientific principles, resulting in precise, concise, and stable requirements. Accordingly, consensus and standards of how to build bridges emerged. When those standards are followed, bridges do not fall down. For software engineering to achieve the same success of modern civil engineering, scientific knowledge, rather than personal opinions, are needed to structure and represent problem domain. Requirements represented in scientific principles are precise, concise, and stable and become a solid foundation from which all other design activities are derived. Accordingly, software engineers, like modern civil engineers, are transformed from practical artists to scientific professionals. There has been continuous progress in computer languages, integrated development environments, and network protocols. But in terms of progress in scoping and representing problem space, there has been none.