1 / 15

CS3500 Software Engineering

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

ellie
Download Presentation

CS3500 Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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) Time & money cost of implementing each story? Customer can select which for each iteration • 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

  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 Let’s discover Solution strategies As we go along! 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! Feasible to solve? What exactly IS the problem? AI problem Other/better solutions? Let’s discover solution strategies as we go along! ? Algorithms? What are the factors? Data?

  11. CS3500 Software Engineering Exploratory Programming (4) User(s) Establish outline requirements Implement 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. Deliver Test, evaluate performance Accept- able? Yes No Validation going on here! Revise, add factors, adjust behaviours, etc

  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 WILLBEAT 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) First attempt Not bad! Better than I was doing last year! Hmmmm Now, let’s include the jockey rating

  14. CS3500 Software Engineering Exploratory Programming (7) Second attempt Even better! Hmmmm Wonder if factoring in the handicap will make a difference? Make later look at condition of ground, parentage, etc, etc?? 3rd, 4th, 5th, 6th, 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

More Related