Presentation on theme: "Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II."— Presentation transcript:
Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II
Software Engineering Process - II 5.2 What are your expectations from this unit? Before You Begin…
Software Engineering Process - II 5.3 Unit Objectives Describe rapid software development approaches. Explain incremental and iterative software development. Identify the advantages and disadvantages of incremental development. Explain the principles of agile development methods. Explain the features of extreme programming and its practices and benefits. Explain the use of software prototyping.
Software Engineering Process - II 5.4 Why Rapid Software Development (RSD) There are many reasons to use RSD. Some of them include: Businesses have to respond to new opportunities. It is impossible to specify the complete requirements. As the requirements change, the system design has to be reworked. RSD processes can produce useful software quickly.
Software Engineering Process - II 5.5 Characteristics of RSD Some characteristics of RSD include: Specification, design, and implementation are concurrent. The design documentation is minimum or generated automatically. The requirements specifications describe the major requirements of the system, and must be complete for each program increment.
Software Engineering Process - II 5.6 Characteristics of RSD (cont.) Software is developed in a series of increments. Changes and new requirements that emerge on evaluation of increments are included in later versions. User interface is developed using an interactive development system.
Software Engineering Process - II 5.7 Incremental Development Involves delivery of system in the form of increments. Delivers the important functionality first. Ensures that customer gets value from the system in the initial stages of development. Facilitates the use of first increment for requirements evaluation. Increases the probability of meeting customer requirements. Ensures commitment from users.
Software Engineering Process - II 5.8 RAD – An Iterative Development Process
Software Engineering Process - II 5.9 Class Activity - 1 Discuss and list the limitations of incremental development.
Software Engineering Process - II 5.10 Limitations of Incremental Development For large systems, process models that generate regular deliverables are preferred to assess progress easily. Incremental development may require new tools and skills to ensure quick delivery. It may be difficult to design a satisfactory contract for lack of formal system specification. Independent validation is difficult as the specification and development is interleaved. Continuous changes may corrupt the structure of the software. Finding maintenance people for specialized RAD tools may become difficult in future.
Software Engineering Process - II 5.11 Prototyping in Large/Critical Systems A prototype can be used to explore requirements and experiment with design solutions. With experience, you can have confidence that client requirements are being met. Prototype is not intended for deployment but for generating common understanding.
Software Engineering Process - II 5.12 Prototyping and Incremental Development In incremental approach, the best understood requirements are implemented first. The architectural structure has to be robust and easy to maintain for years. Throw-away prototyping is used to understand the vague set of requirements. Throw-away prototypes need not be maintainable and reliable.
Software Engineering Process - II 5.13 Agile Methods For small and medium-sized business systems, traditional methods may not be suitable because the overheads involved are high. Agile methods focus on software by using an iterative development process for specification, development, and delivery. Agile methods support business development where the requirements change rapidly. The main aim of agile methods is to deliver the working software quickly to customers.
Software Engineering Process - II 5.14 Agile Methods - Principles Customer involvement Incremental delivery People not process Accommodate change Maintain simplicity
Software Engineering Process - II 5.15 Class Activity - 2 Discuss and list the problems in implementing the principles of agile methods.
Software Engineering Process - II 5.16 Extreme Programming (XP) Features of XP include: Good practices like iterative development and customer involvement are used to extreme levels. Requirements are given as user stories and are implemented as tasks. Programmers work in pairs and develop test before starting development of a task. Tests are executed before a new task is integrated into the system. Gap between each release is short.
Software Engineering Process - II 5.17 Extreme Programming (XP)
Software Engineering Process - II 5.18 XP Practices Incremental planning Small releases Simple design Test-first development Refactoring Pair programming Collective ownership Continuous integration Sustainable pace On-site customer
Software Engineering Process - II 5.19 Testing in XP The features of testing process are: Test-first development Scenario-based incremental test development User involvement in test development and validation Use of automated test harnesses
Software Engineering Process - II 5.20 Testing in XP (cont.) Test-first development is one of the most important innovation of XP. Writing test first, defines the interface and the functionality behavior. Problems of requirement misunderstanding are minimized. Scenario-based requirements are broken down into tasks. Each task describes a discrete feature of the system and one or more unit tests are designed for the task.
Software Engineering Process - II 5.21 Testing in XP (cont.) Acceptance testing by the customer is incremental. The customer helps in developing acceptance tests for the next release. Testing is automated and the testing component is stand-alone. It simulates the submission of input and checks for the output as specified.
Software Engineering Process - II 5.22 Pair Programming - Implementation Programmers work in pairs to develop the software. It does not always involve same pair of people. Pairs are created dynamically. All team members get to work with others.
Software Engineering Process - II 5.23 Pair Programming – Advantages Pair programming: Helps develop common ownership and responsibility for the system. Supports discussion of the working of software before starting development so there are fewer false starts and less rework. Works as inexpensive informal review process as each line of code is checked by two people. Helps code improvement through refactoring.
Software Engineering Process - II 5.24 Refactoring Refactoring is a technique for restructuring an existing body of code. It aims to alter the program’s internal structure without changing its external behavior. Issues with refactoring can be: A sequence of transformations can result in significant restructuring. Each small transformation is less likely to go wrong. The system needs to be kept working after each small refactoring.
Software Engineering Process - II 5.25 Class Activity - 3 Explain how the practices of XP fit into the principles of agile methods.
Software Engineering Process - II 5.26 RAD RAD: Evolved from fourth-generation languages in the 80s. Used for business applications that are data intensive. Organized as a set of tools that help to create, search, display, and present data using different formats. Provides powerful facilities for screen definition and report generation.
Software Engineering Process - II 5.27 RAD (cont.)
Software Engineering Process - II 5.28 RAD – Screen Generation Screen generation facility of a RAD tool must provide for: Interactive form definition, where the developer defines the fields and their organization on the form. Form linking, where the developer defines which field invokes a subsequent form. Field verification, where the developer defines the applicable value ranges or the data types.
Software Engineering Process - II 5.29 RAD – Advantages and Limitations Advantages: Enables quick development of simple applications with small teams. Implements a lot of functionality at a very low cost. Users familiar with the technology do not have to learn new features. Limitations: No explicit system architecture and dependencies between parts of system. Difficult to implement nonstandard user interfaces.
Software Engineering Process - II 5.30 Software Prototyping A software prototype is an initial version of a software system and can be used to get some benefits of the incremental development process. It helps: Demonstrate concepts Try out design options Explore more about the problem and possible solutions
Software Engineering Process - II 5.31 Software Prototyping Software prototypes can be used to: Elicit and validate requirements. Explore software solutions and to support user interface design. Run back-to-back tests with the final system that will be delivered to the customer.
Software Engineering Process - II 5.32 Prototype Development Process
Software Engineering Process - II 5.33 Advantages of Prototyping Improved system usability More likelihood of meeting customer requirements Improved design quality Improved maintainability Reduced development effort
Software Engineering Process - II 5.34 Summary What was your key learning from the unit?