1. 1. Software specification: methods, techniques and tools for the definition of the functionalities of the software and constraints on its operations; includes requirements analysis and definition, which should be understood and agreed by customers, users and development team.
2. 2. Software development: comprehends methods, techniques, and tools to design software architecture and develop it; includes system and software design, which partitions software requirements, generates the overall system architecture and detailed design, and software implementation, when software design is realized in sets of programs.
3. 3. Software validation: comprehends methods, techniques, and tools to guarantee that the produced software does what the customer wants; includes unit program tests and system testing;
4. 4. Software evolution: comprehends methods, techniques, and tools to evolve the software to meet changing customer needs; each evolution cycle can be considered a small software development cycle.