Planning vs Reacting Designing and Maintaining Software (DAMS)
 Louis Rose

(Long-Lived) Software… … is characterised by change.
 
 How should we approach bug fixing, adding new features, and technical improvements?

Planning Eliciting requirements Producing designs, and deciding between (some of) them Researching, for example, appropriate design patterns Implementing and validating last

Risk: time can be wasted building the wrong thing

Reacting Implementing first, probably via (something like) TDD Discovering requirements Discovering designs and alternatives Just-in-time requirements elicitation and research

Risk: time can be wasted waiting for the product owner

Planning and Reacting I tend to find that I need both. My typical approach:. 1. Discuss requirements with product owner 2. Quickly hack together some code to see whether: •

I’ve understood the requirements sufficiently



There are any challenges that I hadn’t anticipated

3. R&D: sketch habitable solutions on paper, using UML 4. Evaluate solutions and implement the best, using TDD.
 Probably start again at 3. 5. Give to the product owner to validate.
 Probably start again at 1. 6. Put into production for customers to evaluate.
 Probably start again at 1.

Designing and Maintaining Software (DAMS) - GitHub

R&D: sketch habitable solutions on paper, using UML. 4. Evaluate solutions and implement the best, using TDD. Probably start again at 3. 5. Give to the product owner to validate. Probably start again at 1. 6. Put into production for customers to evaluate. Probably start again at 1. Planning and Reacting.

104KB Sizes 0 Downloads 95 Views

Recommend Documents

Designing and Maintaining Software (DAMS) - GitHub
ASTs are tree data structures that can be analysed for meaning (following JLJ in SYAC 2014/15) ... More Cohesive. Avoids Duplication. Clearer. More Extensible.

Designing and Maintaining Software (DAMS) - GitHub
%w.rack tilt date INT TERM..map{|l|trap(l){$r.stop}rescue require l};. $u=Date;$z=($u.new.year + 145).abs;puts "== Almost Sinatra/No Version has taken the stage on #$z for development with backup from Webrick". $n=Module.new{extend. Rack;a,D,S,q=Rack

Designing and Maintaining Software (DAMS) - GitHub
Clear Documentation. Designing and Maintaining Software (DAMS). Louis Rose. Page 2. Bad documentation. Misleading or contradictory find_customer(id). CustomerGateway. Used to look up a customer by their customer number. Page 3. Bad documentation. Red

Designing and Maintaining Software (DAMS) - GitHub
Observers. Designing and Maintaining Software (DAMS). Louis Rose. Page 2. Page 3. Delivery people need to know when pizzas are ready class Pizza def initialize(delivery_person). @delivery_person = delivery_person end def bake cook # blocking call. @d

Designing and Maintaining Software (DAMS) - GitHub
When we are testing the way that a unit behaves when a condition is met, use a stub to setup the condition. Solution: use stubs for queries class Subscription ... def bill(amount) unless payments.exists(subscription_id: id) payments.charge(subscripti