Introduction Software: Computer programs, procedures and possibly associated documentation and data pertaining to the operation of a computer system. Software Engineering: Engineering disciple that is concerned with all aspects of software production.
Introduction… Computer science is concerned with theory and fundamentals. Software engineering is concerned with the practicalities of developing and delivering useful software.
Software Programs Developed by individuals for their personal use. Small in size. Limited functionality. Lack good user interface and proper documentation.
Software Products Multiple users. Good user interface. Proper users’ manual. Good documentation support. Systematically designed, carefully implemented and thoroughly tested.
Software Development Life Cycle A series of identifiable stages that a software product undergoes during its lifetime. 1) Project planning, feasibility study. 2) Requirement analysis and specification. 3) Design. 4) Coding. 5) Testing. 6) Maintenance.
Software Development Life Cycle… A life cycle model defines entry and exit criteria for every phase. A phase can begin only when the phase entry criteria are satisfied and can be considered to be complete only when the exit criteria are satisfied.
1. Feasibility Study To determine whether it would be financially or technically feasible to develop the product. Analyze the problem. Collect all information relating to the product.
2. Requirement Analysis & Specification To understand the problem. Identify what is needed from the system, not how the system will achieve its goals. Document the requirements in a SRS document. Two major activities: Problem understanding or analysis. Requirement specification.
Requirement Analysis & Specification… Problem analysis: To understand the problem and its context, and its requirements of the developing system. Requirement specification: Requirements must be specified in the requirement specification document. Translates the ideas into a formal document.
3. Design To plan a solution of the problem specified by the requirements document. First step in moving from the problem domain to the solution domain. Results in three separate outputs: Architectural design High level design Detailed design
4. Coding To translate the design of the system into code in a programming language. Implement the design in the best possible manner. Affects both testing and maintenance phases.
5. Testing Major quality control measure used during software development. Detect defects in the software. Uncover requirement, design and coding errors.
Testing… Unit Testing Different modules or components are tested individually. Integration Test the interconnection between modules. Testing Tested against the system requirements to see if all System Testing requirements are met and performs as specified by the requirements. Acceptance Performed to demonstrate to the client. Testing
Testing… This phase starts with a test plan. Test plan satisfies: Conditions that should be tested. Different units to be tested. Manner in which the modules will be integrated. A test case specification document is produced for different test units.
Testing… The specified test cases are executed and the actual result is compared with the executed output. List report and error report are the final outputs of testing phase.
6. Maintenance Modification of a software product after delivery. Performed to correct faults, to improve performance or other attributes.
Software Life Cycle Models A descriptive and diagrammatic model of a software life cycle. Identifies all the activities required to develop and maintain a software and establishes a precedence ordering among the different activities. The main advantages of adhering to a life cycle model is that it encourages development of software in a systematic and disciplined manner.
Software Life Cycle Models… Otherwise it leads to a problem called 99% complete syndrome. Main models are waterfall model, prototyping model and spiral model.
Classical Waterfall Model Considered to be a theoretical way of developing software. The diagrammatic representation of this model resembles a cascade of waterfalls. This justifies the name of this model.
Classical Waterfall Model…Feasibilitystudy Requirements analysis and specification Design Coding and unit testing Integration and unit testing Maintenance
Classical Waterfall Model… Breaks down the life cycle into an intuitive set of phases. The phases starting from the feasibility study to the integration and system testing phase are known as the development phases. At the end of this phase, the product becomes ready to be delivered to the customer and the maintenance phase commences.
Classical Waterfall Model…1) Feasibility Study: Determine whether it would be financially or technically feasible. Involves analysis of the problem and collection of all relevant documents.
Classical Waterfall Model… The collected data are analyzed to arrive at the following: An abstract problem definition. Formulation of the different strategies for solving the problem. Evaluation of the different solution strategies.
Classical Waterfall Model…2) Requirement analysis and specification: Understand the exact requirements of the customer and to document them properly. Two distinct activities: Requirements gathering and analysis Requirements specification
Classical Waterfall Model… Requirements gathering and analysis: Collect all relevant information regarding the product to be developed from the customer with a view to clearly understand his requirements. Weed out the incompleteness and inconsistencies in the collected requirements.
Classical Waterfall Model… Requirements specification: Requirements are organized into a SRS document. It contains the functional requirements, non-functional requirements and the goals of implementation. SRS document be reviewed and approved by the customer. Serves as a contract between the development team and the customer.
Classical Waterfall Model…3) Design: Transform the requirements specified in the SRS document into a structure. Software architecture is derived from the SRS document. Two design approaches: traditional design approach and object-oriented design approach.
Classical Waterfall Model… Traditional design approach: Based on the data flow-oriented design approach. Consists of 2 important activities: Structured analysis of the requirements specification is carried out where the detailed structure of the problem is examined. During structured design, the results of structured analysis are transformed into the software design.
Classical Waterfall Model… Structured design consists of 2 main activities: Architectural design (high-level design) involves decomposing the system into modules, and representing the interfaces and the invocation relationships among modules. Also referred to as the software architecture. Detailed design (low-level design): Internals of the individual modules are designed in greater detail.
Classical Waterfall Model… Object-Oriented design approach: Various objects that occur in the problem domain and the solution domain are first identified and the different relationships that exist among these objects are identified. Lower development time and effort. Better maintainability of the product.
Classical Waterfall Model…4) Coding and Unit Testing: Translate the software design into source code. Coding phase is also called the implementation phase. The end product of this phase is a set of program modules that have been individually tested.
Classical Waterfall Model… After coding is complete, each module is unit tested. It determines the correct working of the individual modules during unit testing.
Classical Waterfall Model…5) Integration and System Testing: The different modules are integrated in a planned manner. Integration is carried out incrementally over a number of steps. During each integration step, previously planned modules are added to the partially integrated system and the resultant system is tested.
Classical Waterfall Model… After all the modules have been successfully integrated and tested, system testing is carried out. Ensures that the developed system conforms to its requirements laid out in the SRS document.
Classical Waterfall Model… Consists of three different kinds of testing activities. -testing: Performed by the development team. β-testing: Performed by a friendly set of customers. Acceptance testing: Performed by the customer himself after the product delivery to determine whether to accept the delivered product or to reject it.
Classical Waterfall Model… Result of this phase are documented in the form of a test report. Test report summarizes the outcome of all the testing that were carried out during this phase.
Classical Waterfall Model…6) Maintenance: Requires more effort than the effort necessary to develop the product itself. Involves performing any one or more of the following 3 kinds of activities:
Classical Waterfall Model… Corrective maintenance: Involves correcting errors that were not discovered during the product development phase. Perfective maintenance: Involves improving the implementation of the system, and enhancing the system functionalities according to the customer’s requirements.
Classical Waterfall Model… Adaptive maintenance: Required for porting the software to work in a new environment.