This technological manual explores how software engineering principles can be used in tandem with software development tools to produce economical and reliable software that is faster and more accurate. Tools and techniques provided include the Unified Process for GIS application development, service-based approaches to business and information technology alignment, and an integrated model of application and software security. Current methods and future possibilities for software design are covered.
Software engineering is a term that has a very broad definition. This process includes the logical design of a system; the development of prototypes, the automated generation of computer code for the system; the testing, validation and benchmarking of the code and the final implementation of the system. Once a new system is up and running, the software engineering process is used to maintain the system, evaluate its operation, keep track of new versions and refactor and/or reuse the code for other projects.
Over the past 30 years the discipline of software engineering has grown. In some cases, a specific programming paradigm, such as object-oriented, evolved into a broad discipline encompassing design and programming processes, tools and techniques. Several universities offer degrees as well as courses in software engineering. Standards for software engineering have been incorporated and formalized in England, Canada, Australia and the United States. Additionally, software engineering has received recognition from licensing and standards boards such as the Association of Computing Machinery (ACM) Institute of Electrical Engineering (IEEE), ISO 9000 and the Institute for Certification of Computing Professionals (ICCP).
Although many current design practices are focused on object-oriented techniques, this does not limit us to using object-oriented languages. It is quite possible to adopt the methods whether one writes in Fortran, C++ or writes scripts in Perl. In recent times the concept of software engineering has expanded to include not only code generation and system design, but a set of standards and methods that the software engineer should practice.
About the Author
Dr. Joan Peckham is a professor of computer science at the University of Rhode Island. She lives in Kingston, Rhode Island. Scott J. Lloyd is an assistant professor in management information systems at the University of Rhode Island.