software development • Particularly valuable in distributed settings • Some of this is simply review of topics covered in the ESaaS MOOC ◦ Refresher for 169 Alumni ◦ Also you’ll be explaining these to students ◦ Really understanding all of these critical for managing distributed teams
to real customer needs • Chores - got to be done • Acceptance/Unit test cycle - quality control and communications • Version control - git and github • Deploy to the Cloud - PaaS/IaaS • Spiking
among stakeholders • To closely tie requirements to business needs • To form the basis for acceptance testing • To provide engaging way of capturing requirements
direct, obvious value to the customer • Chores are typically essential jobs establishing internal framework or critical support to one or more stories • Chores are an ongoing cost of doing business • Chores are not necessarily menial or basic jobs- they are often very complex and require the same skill and experience that feature stories would What Are Chores?
effect on business-valued output in that they reduce velocity (they are not assigned points) • Chores can represent ‘code debt’, and/or points of dependency on other teams • Chores tend to emerge over time • Tracker automatic velocity calculation frees you from having to account for the cost of chores The Impact of Chores
other stories • Chores may affect more than one story and/or team ◦ Coordination and participation across teams or pairs may be necessary • Stories may rely on several inter-related chores which should be prioritized to reduce delays if possible Managing Chores
TDD = Test Driven Development • Essentially the same thing, although BDD tries to have higher level descriptions of expected behaviour ◦ Some tools designated as BDD, e.g. rspec, cucumber • BDD arguably a type of TDD, so both are about watching tests fail before they pass ◦ Red, Green, Refactor
entire stack ◦ See also System testing • Integration tests: check two or more components • Unit tests: check a single component http://en.wikipedia.org/wiki/Software_testing
- a cucumber feature that describes one aspect of the behavior of the code you wish you had • Run the feature and observe yellow (unimplemented) and/or red (failing) steps • Implement the feature ◦ implement step definitions ◦ repeat TDD (rspec) cycle until feature goes green • Repeat for next scenario
example for one thing - a single aspect of the functionality • Run the spec and watch it go red • Write the simplest code to make your example go green • Refactor • Repeat for each bit of functionality needed to make the cucumber pass
• Allows: ◦ Reverting files or entire project to a previous state ◦ Comparing changes over time ◦ View of who modified the source last ◦ Collaboration between multiple developers • Clients don’t checkout single files, they clone the entire repository • Many types available - we focus on git What is Version Control?
senile elderly or childish person • Linus Torvalds: “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” • Alternatively: “Global Information Tracker” Why is it called “Git”? http://www.urbandictionary.com/define.php?term=git
"Your Name" # Sets the default name for git to use when you commit $ git config --global user.email [email protected]. com # Sets the default email for git to use when you commit User setup
First stage all of the changes you want in a single “commit” • Create a commit • Several commits can be pushed to git repository at once Git staging area
servers • Various companies offer hosting at different levels of granularity ◦ IaaS: Infrastructure as a Service, e.g. AWS ◦ PaaS: Platform as a Service, e.g. Heroku Deploying to the Cloud
virtual box on which you can deploy • Responsibility is outsourced to the Service Provider • Often on a ‘pay as you use’ basis, e.g. AWS IaaS - Key concepts Storage ❏ replication ❏ backup ❏ archiving Networking ❏ hardware ❏ load balancing ❏ firewall ❏ security Server ❏ computation power ❏ preloaded OS
• Deployment ◦ Easy as pushing to a git repository $ git push heroku master • Run your commands or rake tasks... $ heroku run rake db:migrate $ heroku run rake routes Getting started...
# lists all configuration variables $ heroku config:add NAME=VALUE # set a new variable $ heroku config:remove NAME # remove an existing variable App configuration
implied behavior in order to estimate a story appropriately • Technical: ◦ Research or prototyping to gain confidence in a specific technological approach • Functional: ◦ Minimize functional risk ◦ understand user interaction Motivation
performance or load impact of a user story • Evaluate a specific technology that can be applied to a solution • Gaining understanding of a desired approach before committing new functionality Technical Spikes
a user might interact with the system • Used to get user feedback on presentation size, style, and charting attributes • Often delivered as user interface mockups, wireframes, page flows, etc Functional Spike
use SPIKE extensively • Learn how to embrace and effectively address this uncertainty in each iteration • Spiking should be reserved for the more critical and larger unknowns An Exception, not the Rule!