What is Software Engineering?

Size: px
Start display at page:

Download "What is Software Engineering?"

Transcription

1 COSC 3351 Software Software Life Cycle (I) Spring 2008 What is Software Engineering? Real world problems are large and complex. Solving problems requires multiple steps Analyzing: Break the problems into pieces that can be understood Describe the large problem as a collection of small problems Relationships between the small problems are essential Synthesis: putting together a large structure from small building blocks 1

2 Software Engineering? (II) To solve a problem you need: A method or technique: a formal procedure for producing some results A tool: instrument or automated system for accomplishing something Makes a method more accurate Makes a method more efficient A procedure: combination of tools and techniques that produce a particular product. A paradigm: represents a particular approach or philosophy for building software. What is Software Engineering? (III) Computer Science Customer Theories Computer Functions Problem Software Engineering Tools and Techniques to Solve Problems 2

3 What is a process? Definition: Series of steps involving activities, constraints and resources that produce an intended output Characteristics: Describes all major activities Uses resources, subject to a set of constraints Produces intermediate or final products May be composed of subprocesses, that are linked in some way Has entry and exit criteria, such that we know when the action begins and ends Activities are organized in a sequence Has a set of guiding principles that explain the goal of each activity Significance of processes When the process involves building of a product, people refer to it as a life cycle Processes impose consistency and structure on a set of activities Important if you know how to do something well and you want to pass that information along. Creating a process model help to find inconsistencies and redundancies 3

4 Popular software process models Waterfall model Waterfall model with prototyping V model Phased Development: increments and iterations Spiral model Agile methods Requirement Analysis Waterfall model Program Coding Unit and Integration Acceptance 4

5 Waterfall model (II) Requirements analysis: How should the target system look like? What are the required features? Result: a document stating the requirements of the customer : What are the fundamental properties of a system which fulfills the requirements stated in the document? Describes appearance and functionality to the end-user Complete description of the functions and interactions involved Waterfall model (III) Program : If system design is approved by the customer, start to generate design documents of individual components Based on a well-defined description of the software project as a system Unit testing Test a small component of the code Combinations of input and expected output Erroneous input Will be re-executed daily 5

6 Waterfall model (IV) Integration testing: bring together multiple small pieces and test the combined functionality testing: test the overall system Correctness Performance Usability Delivery: ship product to customer Waterfall model (V) Drawbacks Imposes a project management model on system development Can not account for changes to products or requirements: if a particular step is finished, it does not allow for going back and making changes Presents a manufacturing view of the world. 6

7 Waterfall Model with prototyping Requirement Analysis Program Prototype Coding Unit and Integration Acceptance V-Model Relates testing activities to analysis and design Requirement Analysis Verify design Verify design Acceptance Program Unit and Integration Coding 7

8 Phased development: incremental development is designed and delivered in pieces Enables users to have some functionality while the rest is being developed Part 2 Part 1 Part 1 Part 3 Part 2 Part 1 Phased development: iterative development Full system is delivered Functionality of subsystems is improved with each new release Part 3 Part 3 Part 2 Part 2 Part 1 Part 1 Part 3 Part 2 Part 1 8

9 Spiral model Related to iterative development Introduces a step to evaluate risks and alternatives Spiral model (II) - Steps 1. Define system requirements 2. A preliminary design is created for the new system. 3. A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product. 4. A second prototype is evolved by a fourfold procedure: a. evaluating the first prototype in terms of its strengths, weaknesses, and risks; b. defining the requirements of the second prototype; c. planning and designing the second prototype; d. constructing and testing the second prototype. 5. The preceding steps 2, 3 and 4 are iterated until the customer is satisfied 6. The final system is constructed, based on the refined prototype and tested. 9

10 Agile methods Loose collection of software practices of developers who did not want to adhere to the strict rules of the other models Main ideas: Value individuals and interactions over processes and tools Invest more time in producing working software over documentation Focus on customer collaboration rather than on contract negotiations Respond to change rather than create a plan Agile methods some of the 12 facets of Extreme Programming The planning game: customer define in stories how the system should work. Developers estimate the resources necessary to implement it. Once the stories are written, users prioritize the requirements Small release: is designed such that functionality can be delivered as soon as possible. Simple design: Only address current needs On-site customer 10

11 Agile methods some of the 12 facets of Extreme Programming Write tests first: Functional tests written/provided by customer. Refactoring: Revisit requirements and design whenever necessary. Change is part of the process. Pair programming: Two programmers work on one piece of the code at one workstation. Collective ownership: Any developer can make changes to any part of the system. Programming pairs are changed frequently. Continuous integration 11