Download presentation
Presentation is loading. Please wait.
Published byMervin Collins Modified over 9 years ago
1
CS3500 Software Engineering Agile Software Development (1) Agile software development, proposed in 2001 by the non-profit Agile Alliance, has four basic recommendations: Individuals and interactions between them have priority over processes and tools Working software takes precedence over comprehensive documentation Customer collaboration more important than contract negotiation Ability to respond to change more important than sticking blindly to a plan
2
CS3500 Software Engineering Agile Programming (2) Iterations
3
CS3500 Software Engineering Agile Programming (3) Agile believes that “great software comes from great people” and that everything else is secondary. “People” includes all project stakeholders – developers, users, customers (system owners). Users work closely with developers right through the lifecycle, not just at the beginning of it. Constant customer feedback makes it unnecessary to have a formal contract Intense collaboration means that it is not necessary to document those parts of project that serve the purpose of knowledge transfer
4
CS3500 Software Engineering Agile Programming (4) Conventional requirements analysis is replaced in agile development by user stories – features & functions that the users would like the system to deliver Conventional” system design & implementation are replaced by a combination of acceptance testing and test-driven development, and refactoring Tests an app program must pass to be accepted by customer “Intentional programming” – the programmer codes with the future test in mind Improvements to the structure of the system without changing its behaviour Time & money cost of implementing each story? Customer can select which for each iteration
5
CS3500 Software Engineering Agile Programming (5) Agile development encourages Pair programming Two programmers work together – one codes and the other observes and asks questions. The roles change when one wants to “prove a point” by taking over the keyboard. The pair also switch roles at least once a day. Hoped for outcome? Collective ownership and shared responsibility.
6
CS3500 Software Engineering Agile Programming (6) In Agile development, “conventional” integration and deployment is replaced by continuous integration and short cycles. Agile development does not mean lack of planning. Interim delivery dates are carefully planned. Each iteration is normally planned to short cycles of 2 weeks - this is a minor delivery for customer. A major delivery (e.g. all or part of a a product ready to be put into production) is the result of about six 2-week cycles.
7
CS3500 Software Engineering Agile Programming (7) The main danger in the Agile development model is the risk of ending up with the discredited “build-and-fix” approach in which the software is essentially “hacked” in order to force it to deliver functionality to users. The future will show if agile development can scale up to large and complex systems. Risks? Time & budget over-runs Maintenance problems (documentation lacking, structural defects) Legal liability issues in the event of system “failures” due to responsibilities shared between developers and customers and possible lack of precise & formal contracts.
8
CS3500 Software Engineering Exploratory Programming (1) Exploratory programming is a method that can be applied to software development when - the requirements are unclear the domain area is not well understood, or the feasability of achieving the objectives is in doubt
9
CS3500 Software Engineering Exploratory Programming (2) Exploratory programming was popular during the ’80’s and ’90’s using development environments such as provided by Smalltalk - interactive (program and “see”) rapid program building & modification ease of debugging
10
CS3500 Software Engineering Exploratory Programming (3) Exploratory programming particularly popular with AI applications - the approach of progressively gathering/analysing requirements and developing a formal specification may just not work! AI problem What exactly IS the problem? Other/better solutions? What are the factors? Feasible to solve? ? Let’s discover Solution strategies As we go along! Let’s discover solution strategies as we go along! Algorithms? Data?
11
CS3500 Software Engineering Exploratory Programming (4) So – the exploratory programming approach is, in practise, the same as the open-ended prototyping model where the product of the final iterations is kept and used as the operational software. The main difference is that we associate exploratory programming with problems Involving AI, and forecasting/prediction. Establish outline requirements Implement Test, evaluate performance Accept- able? Revise, add factors, adjust behaviours, etc No Yes User(s) Deliver Validation going on here!
12
CS3500 Software Engineering Exploratory Programming (5) I want software which will improve the chances of my winning by betting on horse racing outcomes – MAKE ME A SYSTEM WHICH WILL BEAT THE BOOKIES! OK! Let’s start! In each race bet on the horse that has the best record in the last 5 races!
13
CS3500 Software Engineering Exploratory Programming (6) Hmmmm Not bad! Better than I was doing last year! Now, let’s include the jockey rating First attempt
14
CS3500 Software Engineering Exploratory Programming (7) Hmmmm Even better! Wonder if factoring in the handicap will make a difference? Second attempt Make later look at condition of ground, parentage, etc, etc?? 3 rd, 4 th, 5 th, 6 th, etc attempts
15
Exploratory Programming (8) In exploratory programming, progressively add to and refine the algorithm to improve the forecasting ability of the software. Improve the algorithm by a combination of including more factors in determining outcomes and (b) by adjusting the importance rating (weighting) of factors
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.