the entire lifecycle of an application of piece of software typically contains planning requirements gathering design phase coding testing training and transition ongoing operations and maintenance decommissioning