Course Goals. Solve Non-Technical Customer problem Server side: Ruby on Rails Client side: HTML, CSS, AJAX, JavaScript Deploy using cloud computing



Similar documents
CS 169 Software Engineering"

Engineering Software as a Service An Agile Software Approach

Working In Teams vs. Individually. CS 169 Fall 2012 Armando Fox & David Patterson

Service Oriented Architecture(SOA)

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Automated Acceptance Testing of High Capacity Network Gateway

Testing Rails. by Josh Steiner. thoughtbot

The Agile Movement An introduction to agile software development

CS4507 Advanced Software Engineering

Agile Software Development Methodologies and Its Quality Assurance

Software Development Process

Test Automation: A Project Management Perspective

Software Engineering Principles The TriBITS Lifecycle Model. Mike Heroux Ross Bartlett (ORNL) Jim Willenbring (SNL)

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Software Systems Architecture in a World of Cloud Computing. Christine Miyachi SDM Entering Class 2000

How To Develop An Application

ASSURING SOFTWARE QUALITY USING VISUAL STUDIO 2010

Cloud vs. On Premise: Is there a Middle Ground?

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Principles of Software Engineering: Software Methodologies. COSI 120b, Spring 2005

Introduction to Software Project Management. CITS3220 Software Requirements & Project Management

Mobile Test Automation Framework

Agile Techniques for Object Databases

Whitepaper. Agile Methodology: An Airline Business Case YOUR SUCCESS IS OUR FOCUS. Published on: Jun-09 Author: Ramesh & Lakshmi Narasimhan

Integrating Team Foundation Server, Microsoft Test Manager and Coded UI Tests

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

The Learn-Verified Full Stack Web Development Program

Agile Software Development

Bridging the Gap Between Acceptance Criteria and Definition of Done

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

Cloud Computing Software as a Service

Agile and lean methods for managing application development process

Test Driven Development Part III: Continuous Integration Venkat Subramaniam

Agile and lean methods for managing application development process

Introduction to Agile Software Development Process. Software Development Life Cycles

Software Development Life Cycle (SDLC)

SOFTWARE PROCESS MODELS

A Path from Windows Desktop to HTML5

Creating Value through Innovation MAGENTO 1.X TO MAGENTO 2.0 MIGRATION

Computer Science Course Descriptions Page 1

Latest Trends in Testing. Ajay K Chhokra

Chapter 13: Program Development and Programming Languages

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

Automation using Selenium

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

TSG Quick Reference Guide to Agile Development & Testing Enabling Successful Business Outcomes

From Traditional Functional Testing to Enabling Continuous Quality in Mobile App Development

Scalable Web Programming. CS193S - Jan Jannink - 1/12/10

Agile Testing and Extreme Programming

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Fast Feedback: Jenkins + Functional and Non-Functional Mobile App Testing Without Pulling Your Hair

2. Analysis, Design and Implementation

Introduction to Software Engineering: Project Management ( Highlights )

2. Analysis, Design and Implementation

Modern practices TIE-21100/

How To Be Successful At An Agile Software Engineering

Mobile Application Development

ICAgile Learning Roadmap Agile Testing Track

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Tonight s Speaker. Life of a Tester at Microsoft Urvashi Tyagi Software Test Manager, Microsoft

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Software Continuous Integration & Delivery

Course Descriptions. preparation.

Agile Testing (October 2011) Page 1. Learning Objectives for Agile Testing

Ingegneria del Software Corso di Laurea in Informatica per il Management. Agile software development

Software Life Cycles and Configuration Management

Lecture 26 Enterprise Internet Computing 1. Enterprise computing 2. Enterprise Internet computing 3. Natures of enterprise computing 4.

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Mobile Application Testing

IT Home 2015 DevOps 研 討 會

Software Engineering

Specification and Analysis of Contracts Lecture 1 Introduction

Chapter 9 Software Evolution

AGILE SOFTWARE TESTING

Best Practices for Building Mobile Web

Test Driven Development with Continuous Integration: A Literature Review

Génie Logiciel et Gestion de Projets. Software Processes Focus on Extreme Programming

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Web Applications: Overview and Architecture

Exploratory Testing Dynamics

CALCULATING THE COSTS OF MANUAL REWRITES

Java course - IAG0040. Unit testing & Agile Software Development

White Paper Server. SUSE Linux Enterprise Server 12 Modules

GCE APPLIED ICT A2 COURSEWORK TIPS

Introduction to Automated Testing

LoadComplete. by SMARTBEAR

.NET and J2EE Intro to Software Engineering

Basic Trends of Modern Software Development

Transcription:

Course Goals Learn Software Engineering Principles by understanding new challenges, opportunities, and open problems of SaaS Take a SaaS project from conception to public deployment Solve Non-Technical Customer problem Server side: Ruby on Rails Client side: HTML, CSS, AJAX, JavaScript Deploy using cloud computing 1

Engineering Software is Different from Engineering Hardware (Engineering Long Lasting Software 1.1-1.2) David Patterson 2

Engineering Software is Different from Hardware Q: Why so many SW disasters and no HW disasters? Ariane 5 rocket explosion Therac-25 lethal radiation overdose Mars Climate Orbiter disintegration FBI Virtual Case File project abandonment A: Nature of the 2 media and subsequent cultures that developed 3

Independent Products vs. Continuous Improvement Cost of field upgrade HW HW designs must be finished before manufactured and shipped Bugs: Return HW (lose if many returns) SW Expect SW gets better over time Bugs: Wait for upgrade HW decays, SW long lasting 4

Legacy SW vs. Beautiful SW Legacy code: old SW that continues to meet customers' needs, but difficult to evolve due to design inelegance or antiquated technology 60% SW maintenance costs adding new functionality to legacy SW 17% for fixing bugs Contrasts with beautiful code: meets customers' needs and easy to evolve 7

Legacy Code: Vital but Ignored Missing from traditional SWE courses and textbooks Number 1 request from industry experts we asked: What should be in new SWE course? Will have legacy lectures and programming assignments later in course 8

Question: Which type of SW is considered an epic failure? Beautiful code Legacy code Unexpectedly short-lived code Both legacy code and unexpectedly short lived code 9

Development processes: Waterfall vs. Spiral vs. Agile (Engineering Long Lasting Software 1.3) David Patterson 10

Development Processes: Waterfall vs.sprial vs. Agile Waterfall lifecycle or development process A.K.A. Big Design Up Front or BDUF 1. Requirements analysis and specification 2. Architectural design 3. Implementation and Integration 4. Verification 5. Operation and Maintenance Complete one phase before start next one Why? Earlier catch bug, cheaper it is Extensive documentation/phase for new people 11

How well does Waterfall work? Works well for SW with specs that won t change: NASA spacecraft, aircraft control, Often when customer sees it, wants changes Often after built first one, developers learn right way they should have built it 12

How well does Waterfall work? Plan to throw one [implementation] away; you will, anyhow. - Fred Brooks, Jr. (received 1999 Turing Award for contributions to computer architecture, operating systems, and software engineering) (Photo by Carola Lauber of SD&M www.sdm.de. Used by permission under CC-BY-SA-3.0.) 13

Spiral Lifecycle Combine Big Design Up Front with prototypes Rather than document all requirements 1st, develop requirement documents across the iterations of prototype as they are needed and evolve with the project 14

Spiral Lifecycle (Figure 1.1, Engineering Long Lasting Software by Armando Fox and David Patterson, Beta edition, 2012.) 15

Spiral Problems Iterations involve the customer before the product is completed, which reduces chances of misunderstandings However, iterations 6 to 24 months long, so there is plenty of time for customers to change their minds! And the users exclaimed with a laugh and a taunt: It s just what we asked for, but not what we want. 16

Peres s Law If a problem has no solution, it may not be a problem, but a fact, not to be solved, but to be coped with over time. Shimon Peres (winner of 1994 Nobel Peace Prize for Oslo accords) (Photo Source: Michael Thaidigsmann, put in public domain, See http://en.wikipedia.org/wiki/file:shimon_peres_wjc_90126.jpg) 17

Agile Manifesto, 2001 We are uncovering better ways of developing SW by doing it and helping others do it. Through this work we have come to value Individuals and interactions over processes & tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. 18

Agile lifecycle Embraces change as a fact of life: continuous improvement vs. phases Developers continuously refine working but incomplete prototype until customers happy, with customer feedback on each Iteration (every ~2 weeks) Agile emphasizes Test-Driven Development (TDD) to reduce mistakes, written down User Stories to validate customer requirements, Velocity to measure progress 19

Agile Iteration/ Book Organization (Figure 1.5, Engineering Long Lasting Software by Armando Fox and David Patterson, Beta edition, 2012.) 20

Question: What is NOT a key difference between Waterfall and Spiral and Agile lifecycles? Waterfall uses long phases, Agile uses quick iterations, Spiral long iterations Waterfall has no working code until end, Sprial & Agile working code each iteration Waterfall & Spiral use written requirements, but Agile does not use Waterfall written & Spiral have architectural design anything phases, but you cannot incorporate SW architecture into the Agile lifecycle 21

Assurance: Testing and Formal Methods (Engineering Long Lasting Software 1.4) David Patterson 22

Assurance Verification: Did you build the thing right? Did you meet the specification? Validation: Did you build the right thing? Is this what the customer wants? Is the specification correct? Hardware focus generally Verification Software focus generally Validation 2 options: Testing and Formal Methods 24

Testing Exhaustive testing infeasible Divide and conquer: perform different tests at different phases of SW development Upper level doesn t redo tests of lower level System or acceptance test: integrated program meets its specifications Integration test: interfaces between units have consistent assumptions, communicate correctly Module or functional test: across individual units Unit test: single method does what was expected26

More Testing Coverage: % of code paths tested Regression Testing: automatically rerun old tests so changes don t break what used to work Continuous Integration Testing: continuous regression testing vs. later phases Agile => Test Driven Design (TDD) write tests before you write the code you wish you had (tests drive coding) 27

Limits of Testing Program testing can be used to show the of bugs, but never to show their! Edsger W. Dijkstra (received the 1972 Turing Award for fundamental contributions to developing programming languages) (Photo by Hamilton Richards. Used by permission under CC-BY-SA-3.0.) 28

Limits of Testing Program testing can be used to show the presence of bugs, but never to show their absence! Edsger W. Dijkstra (received the 1972 Turing Award for fundamental contributions to developing programming languages) (Photo by Hamilton Richards. Used by permission under CC-BY-SA-3.0.) 29

Formal Methods Start with formal specification & prove program behavior follows spec. Options: 1. Human does proof 2. Computer via automatic theorem proving Uses inference + logical axioms to produce proofs from scratch 1. Computer via model checking Verifies selected properties by exhaustive search of all possible states that a system could enter during execution 30

Formal Methods Computationally expensive, so use only if Small, fixed function Expensive to repair, very hard to test E.g., Network protocols, safety critical SW Biggest: OS kernel 10K LOC @ $500/LOC NASA SW $80/LOC This course: rapidly changing SW, easy to repair, easy to test => no formal methods 31

Question: Which statement is NOT true about testing? With better test coverage, you are more likely to catch faults While difficult to achieve, 100% test coverage insures design reliability Each higher level test delegates more detailed testing to lower levels Unit testing works within a single class and module testing works across classes 32

Productivity: Conciseness, Synthesis, Reuse, and Tools (Engineering Long Lasting Software 1.5) David Patterson 33

Productivity Moore s Law => 2X resources/1.5 years HW designs get bigger Faster processors and bigger memories SW designs get bigger Had to improve HW & SW productivity 4 techniques 1. Clarity via conciseness 2. Synthesis 3. Reuse 4. Automation and Tools 34

Clarity via conciseness 1. Syntax: shorter and easier to read assert_greater_than_or_equal_to(a,7) vs. 2. Raise the level of abstraction: HLL programming languages vs. assembly lang Automatic memory management (Java vs.c) Scripting languages: reflection, metaprogramming 35

Synthesis Software synthesis BitBlt: generate code to fit situation & remove conditional test Research Stage: Programming by example 37

Reuse Reuse old code vs. write new code Techniques in historical order: 1. Procedures and functions 2. Standardized libraries (reuse single task) 3. Object oriented programming: reuse and manage collections of tasks 4. Design patterns: reuse a general strategy even if implementation varies 38

Automation and Tools Replace tedious manual tasks with automation to save time, improve accuracy New tool can make lives better (e.g., make) Concerns with new tools: Dependability, UI quality, picking which one from several We think good software developer must repeatedly learn how to use new tools Lots of chances in this course: Cucumber, RSpec, Pivotal Tracker, 39

Question: Which statement is TRUE about productivity? Copy and pasting code is another good way to get reuse Metaprogramming helps productivity via program synthesis Of the 4 productivity reasons, the primary one for HLL is reuse A concise syntax is more likely to have fewer bugs and be easier to maintain 40

DRY Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. Andy Hunt and Dave Thomas, 1999 Don't Repeat Yourself (DRY) Don t want to find many places have to apply same repair Refactor code so that can have a single place to do things 41

Software as a Service (SaaS) (Engineering Long Lasting Software 1.6) David Patterson 42

Software as a Service: SaaS Traditional SW: binary code installed and runs wholly on client device SaaS delivers SW & data as service over Internet via thin program (e.g., browser) running on client device Search, social networking, video Now also SaaS version of traditional SW E.g., Microsoft Office 365, TurboTax Online Instructors think SaaS is revolutionary 43

6 Reasons for SaaS 1. 2. 3. 4. No install worries about HW capability, OS No worries about data loss (at remote site) Easy for groups to interact with same data If data is large or changed frequently, simpler to keep 1 copy at central site 5. 1 copy of SW, controlled HW environment => no compatibility hassles for developers 6. 1 copy => simplifies upgrades for developers and no user upgrade requests 44

SaaS Loves Agile & Rails Frequent upgrades matches Agile lifecycle Many frameworks for Agile/SaaS We use Ruby on Rails ( Rails ) Ruby, a modern scripting language: object oriented, functional, automatic memory management, dynamic types, reuse via mix-ins, synthesis via metaprogramming Rails popular e.g., Twitter 45

Why take time for Ruby/Rails? 10 weeks to learn: SaaS, Agile, Pair Programming, Behavior Driven Design, LoFi UI, Storyboards, User Stories, Test Driven Development, Enhance Legacy Code, Scrum, Velocity, JavaScript, Design Patterns, UML, Deployment, Security Part time (taking 3 other classes or full time job) Only hope is highly productive language, tools, framework: We believe Rails is best See Crossing the Software Education Chasm, A. Fox, D. Patterson, Comm. ACM, May 2012 46

Which is WEAKEST argument for a Google app s popularity as SaaS? Don t lose data: Gmail Cooperating group: Documents Large/Changing Dataset: YouTube No field upgrade when improve app: Search 47