Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Quality in an agile world

103 views

Published on

Quality in an Agile world
Over the past two decades, software has infiltrated virtually every aspect of our lives. As a result, software professionals need to design, develop, test and ship our product in ever shortening cycles, making it more a service than a traditional off-the-shelf product. Yet while Cloud Computing has unleashed tremendous capabilities allowing us to scale services to unprecedented size and meet virtually unlimited demand, with a few API call it abstracts away everything but the software itself. As a result, there are massive supporting ecosystems built around concepts such as Software-as-a-Service, Continuous Integration, Continuous Delivery and Test Automation, and practices such as Agile Development, Test-Driven Development, and Micro Service architectures provide a set of guidelines and methodologies that enable us to meet this ever-growing demand for software, delivered faster, with higher quality.

In this session, aimed at Computer Science undergraduates, Alon will survey today's methodologies, best practices, and Application Lifecycle Management processes necessary to build a great service with superb quality. The concept of Continuous Testing will be presented; placing quality at the heart of the daily development cycle and enabling teams to scale without sacrificing quality.

Alon is a software engineer, architect and director of R&D at Sealights (http://www.sealights.io/?pi_campaign_id=730), an Israeli startup that is building the first Continuous Testing platform and has just launched from stealth into open beta.
Alon holds an MBA (the Global MBA / Innovation and Entrepreneurship track) and BA (cum laude, awarded the Efi Arazi scholarship) in Computer Science from IDC. Prior to joining Sealights, he served multiple senior positions at Varonis Systems (NASDAQ: VRNS), and co-founded CodeRun, a startup that built a full-fledged web-based Integrated Development Environment.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Quality in an agile world

  1. 1. Quality in an Agile world Alon Weiss
  2. 2. About me ● 34, Married + 1 ● Architect/Director of R&D at Sealights, 1st employee ○ (just announced a $11M funding round) ● Architect/Group Leader/Project Manager/Team Leader/Engineer at Varonis ● MBA, BA in CS from IDC ● I’ve been coding since I was 6 ● I really love what I do, and I do it with passion
  3. 3. The Software Industry Welcome :-)
  4. 4. A little history of software delivery for PCs ● Pre-packaged software, bundled with the hardware ○ MS-DOS, Macintosh ● Off-the-shelf, physically packaged software ○ MS Office, Games ● Downloadable software (with the Internet) ● Online services (“Software-as-a-service”) ○ Gmail.com, facebook.com
  5. 5. Imagine you need to create a note-taking app
  6. 6. Imagine you need to create a note-taking app ● Audience ● Use cases ● Platforms: Web-based? Mobile? Desktop? ● Features ● UI? UX ● Scale ● Roadmap
  7. 7. Waterfall Source: wikipedia
  8. 8. Waterfall - Who will we need? To provide requirements: Market research “Field work” inputs from sales/marketing Visionaries / Strategists / Evangelists
  9. 9. Waterfall - Who will we need? To create the software design: Software Architects Experts Consultants Additional design tasks: ● UX designers, ● Graphic designers
  10. 10. Waterfall - Who will we need? To actually write the software: Software Engineers
  11. 11. Waterfall - Who will we need? To verify that what you wrote works: Quality Assurance
  12. 12. Waterfall - Who will we need? To maintain & support your software: Support engineers Some engineers to fix bugs Some QA engineers to verify those bugs
  13. 13. Waterfall - Application Lifecycle How do we ensure quality?
  14. 14. Software delivery - Release cycles ● Pre-packaged software, bundled with the hardware ○ Versions usually come out once, rarely modified afterwards ○ Extremely hard/impractical to recall a product or fix a bug after release ● Off-the-shelf, physically packaged software ○ Versions usually come out ~annually ○ Assembly lines, inventories ○ Recalls are costly ● Downloadable software
  15. 15. Scale
  16. 16. Cloud Computing - extremely short review ● We started with “Servers”: ○ Machines that are dedicated to run some software that others can use ○ E.g. Classic Web Server - listen for HTTP(s) traffic and delivers files (usually with some logic running, like user managements, session management to keep track of orders, etc.) ○ Expensive ○ Scattered geographically at different data centers ○ Limited access ○ Hard to maintain (downtime? Load balancing?)
  17. 17. Cloud Computing - extremely short review ● We then had virtualization ○ Operating system-inside-an-Operating system ○ Software layer abstracts a lot of hardware concerns and allows tweaking resource usage: ■ CPU (dedicated cores / metered CPU cycles) ■ Memory (e.g. 2Gb RAM limit) ■ Storage (attached storage, like HDDs/SSDs, e.g. 80Gb) ○ Companies can provide these VMs as a service ■ EC2 ■ Google Cloud
  18. 18. Cloud Computing - extremely short review ● “Get me 10 VMs running Centos 7, each having 4 CPU cores, 8Gb of ram, 40Gb of attached storage, 10Gb network interfaces” ● API-centric ○ Technology agnostic ○ Built for automation ● Additional low-level services ○ Cloud storage ○ Load balancers ○ Private networking
  19. 19. Cloud Computing - higher level services ● Platform as a service ○ “Run this Java application on 10 instances, and scale as required” ● Database-as-a-service ● Message queues ● Higher level automation of cloud services ● Identity & Access management ● Email/SMS ● Many more
  20. 20. Amazon Web Service (AWS)
  21. 21. Cloud computing - why does it matter to me ● No need to provision any hardware. pay-as-you-go ● Your software can reach millions in a few API calls ● Releases can be completely autonomous ● You can easily scale up and down to meet demand or reduce cost ● “Software is eating the world” (Marc Andreessen, 2011)
  22. 22. Modern software development
  23. 23. Continuous Integration Automates a lot of processes that are required to create a “release” ● Automatic Builds ○ Desktop: for Windows 7, Windows 8, Windows 10, 32bit/64bit ○ Web: sometimes different builds for browsers/platforms ○ Mobile: Android, iOS, different form factors ● Source control ○ Where the source code files & assets are stored ● Quality
  24. 24. Continuous Delivery Automates a lot of processes that are required to take an approved “release” and deliver it to customers ● If software is packaged, upload it to some public website/repository (e.g. App Stores) ● If software is a service, gradually upgrade/replace servers with the updated version ○ Continuously monitor the process, to detect quality issues as fast as possible ● Requires a lot automation efforts
  25. 25. Agile development ● “Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross- functional teams. ... Read more about the Agile Manifesto. SCRUM. Scrum is a subset of Agile.” ● A buzz-word, that links to other buzz-words ● Iterative approach - work in short, defined cycles ○ No “Full requirements” ○ No “Grand Design” ○ No “All-or-nothing” ○ Short “QA” sessions ○ Features can be split into multiple cycles
  26. 26. Agile - but not only for developers ● Water-scrum-fall ○ The organization is mostly “waterfall” oriented, but R&D is agile ○ Completely missing the point of Agile development ○ Most companies are like that ● The Lean Startup ○ Completely agile organization ○ How to build a startup - Udacity
  27. 27. Software quality - why does it matter? Lots of competition In app stores, rating is the most important One chance to make a first impression Users may run away if they see too many bugs The product/service need to work, otherwise it’s a waste of your user’s time Unimaginable and uncontrollable number of devices, platforms, configurations, technologies (Unless you are Apple, in which this is kept under control)
  28. 28. We guarantee software quality by testing it ● Unit tests - test code in isolation ○ Your code needs to be testable ○ TDD, BDD ● Component tests - test whole components as a single entity ● UI tests - test the UI component of the service, individually or together with other products ● Integration tests - test multiple components working together
  29. 29. Continuous Testing ● Monitor quality across all components, test phases, and integrate with ○ Unified dashboard that shows all quality-related metrics and info ● Easily address day-to-day R&D issues ○ Does the release meet the criteria to deploy/ship it? ○ What change(s) caused bug X, who made those ○ What changes and new content have been introduced in this new build? ■ Were those changes properly tested? Where and how
  30. 30. Sealights
  31. 31. Thank you!

×