In software engineering, the programming process is divided into phases which together are called the life cycle of the program. They are:
For each phase, methodologies have been used and described; where a customer-producer relation exists (viz. the users are not part of the same organization as the software suppliers), software standards have been defined ([Mazza94], [Fairclough96]). Despite a tradition that started in the 1970s, the field is still in rapid development, and few methods have been widely accepted. For further reading, browse the Internet, or see [Freeman76], [Wasserman80], [Lehmann80], [Booch87], [McDermid91], [Checkland92], [Marciniak94], [Humphrey95].