Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
MTAT.03.295
Agile Software Development
Lecture 1: Introduction Luciano García-Bañuelos University of Tartu
Course Objective The objective of this course is to introduce an agile method for software development that takes advantage of the principles of cloud computing and software as a service.
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 1
Lecturers • Luciano García-‐Bañuelos ◦ Email: luciano.garcia <at> ut.ee ◦ Office: Liivi 2-‐311
• Abel Armas-‐Cervantes ◦ Email: abel.armas <at> ut.ee ◦ Office: Liivi 2-‐315
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 2
A bit of history about the course
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 3
Connection with edX CS 169.1x • edX is an iniPaPve backed by several large universiPes (e.g., MIT, Harvard, Berkley) promoPng the use of massive online open courses (MOOCs). The iniPaPve includes: ◦ An open source project with all the code supporPng edX ◦ A web site providing already a large number of courses
• Our course is a direct clone of Berkeley’s CS 169.1x as offered by edX ◦ We have a small private online course (SPOC) for our class
◦ You will be using edX materials, autograders, etc.
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 4
Approach Take two SaaS projects from conception to deployment
◦ Mimic the interaction with non-technical customers
◦ Backend: Ruby on Rails ◦ Frontend: Modern frontend CSS frameworks,
Javascript and AngularJS ◦ Project tracking, Testing, Continuous integration,
Deployment to the cloud
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 5
Agile method – Sneak preview
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 6
Talk to “Customer”
Legacy
Design paherns
User stories (BDD)
Unit test (TDD)
Velocity measurement
Deployment (Cloud)
Agile method – Sneak preview
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 7
Talk to “Customer”
User stories (BDD)
Unit test (TDD)
Velocity measurement
Deployment (Cloud)
Lo-‐Fi UI/Storyboards Balsamiq
Points, velocity, Pivotal tracker
Con>nuous Integra>on Jenkins/
Agile method – Sneak preview
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 8
Talk to “Customer”
User stories (BDD)
Unit test (TDD)
Velocity measurement
Deployment (Cloud)
Cucumber
Ruby
Ruby on Rails
RSpec
Cucumber-‐js
Javascript
AngularJS
Jasmine
Organization of the Course • Lecture (Tuesdays) Practices (Tuesdays/Thursdays)
• SPOC Lectures (Released every Tuesday) ◦ 7 weeks, starting in second week ◦ Probably some additional lectures from Berkeley’s
CS 169.2x
• Project (weeks 11-16) ◦ Presentations on 15-17 December. ◦ Report due on 22 December.
• See details on the course pages: ◦ https://courses.cs.ut.ee/2015/asd/fall ◦ Web page for SPOC still to be confirmed
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 9
Grading • SPOC: 30 points ◦ 5/6 Homework assignments and 4 quizzes
• Project: 30 points ◦ 15 points for the product ◦ Soundness of design and architectural choices ◦ Scope of the solution (how much was implemented?) ◦ Functional correctness/validation (does it work?)
◦ 5 evidence of use of the agile method ◦ 5 points for written documentation ◦ 5 points for presentation
• Exam: 40 points • Participation: up to 10 bonus points
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 10
Teams (4 members)
Hands on with Ruby
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 11
Factorial (version 1)
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 12
def factorial(n) ! if (n < 0) then! raise "Undefined"! end! if (n == 0) then! return 1 ! else! return n * factorial(n -1) ! end!end!!puts factorial(10) !puts factorial(3) !puts factorial(-1)
Factorial (version 2)
INTRODUCTION LUCIANO GARCÍA-‐BAÑUELOS 13
def factorial(n) ! if (n < 0) then! raise "Undefined"! end! if (n == 0) then! return 1 ! else! return n * factorial(n -1) ! end!end!
def factorial(n) ! raise "Undefined" if n < 0 ! if n == 0 then 1 else n * factorial(n -1) end!end!
• Parenthesis can somePmes be omihed
• return is not required (a funcPon returns the result of the last executed statement)