Software Development Methods And Some Other Stuff.

Slides:



Advertisements
Similar presentations
“Something called agile”
Advertisements

Lena Bigelow Business 550 Presentation SCRUM. -A project management process - Embraces iterative and incremental practices -Concentrates on what is important:
What is Agile? Agile is a software methodology based on iterative and incremental development, where requirements and solutions evolve through collaboration.
ECE44x SCRUM Overview slides adapted from Marty Stepp
Agile Project Management with Scrum
Agile Development and Data With Scrum and TDD Andy Leonard VSTeamSystemCentral.com With thanks to Brian Knight, SQL Server MVP SQLServerCentral.com.
SCRUM John Drew. SCRUM - overview Scrum is a project management discipline that has evolved since the early 1990s to deliver software that meets business.
Intro to Scrum. What is Scrum? An answer to traditional “fixed cost / strict requirements” contracts which had very high rates of failure Recognizes the.
Agile Development.
Scrum CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
A Portrait of Scrum Project Management By Nader Khorrami Rad Project Management Professional (PMP) Certified ScrumMaster (CSM) Professional Scrum Master.
Creating a Program In today’s lesson we will look at: what programming is different types of programs how we create a program installing an IDE to get.
Agile development By Sam Chamberlain. First a bit of history..
International Scrum Institute Accredited Scrum Certifications for Agile Software Practitioners.
Project Management of A Practical Guide to Uppsala.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Software Development Models: Waterfall and Spiral Sung Hee Park Department of Mathematics and Computer Science Virginia State University August 21, 2012.
Managing a Project Using an Agile Approach and the PMBOK® Guide
Introduction to Agile.
Agile Design and SCRUM Brent M. Dingle, Ph.D. “For the last few centuries, … science has been attempting to break matter down into ever smaller bits, in.
Software Development Landscape
Larry Apke Agile Expert
1 Agile Methodology & Programming Ric Holt July 2009.
Software Engineering- Scrum 徐 瑋 Alen 林芳瑜 Flora 1.
Agile Adoption GMAS Product / Practice Teams PMO Meeting – May 2014.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
1 ITSK 2611 Welcome. 2 Operating System 3 What is an OS Resource Manager –Disk –Memory –CPU Device Manager –Printers –Video Card –Sound Card Utility.
Project Workflow. How do you do it? -Discussion-
SCRUM introduction 6 April Scrum Team are known as pigs because they’re committed to delivering Sprint Goal People who are involved but not dedicated.
1 Today’s Plan In Class Exam – Quick Review Thoughts on your Junior Projects, cntd People and Roles on Projects.
Stephen Chief Strategy Officer Telerik
(A radical interpretation) Tomo Lennox Bow Tie computer services Why Agile Works.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
Process is continuously improving Have Definition of Done (DoD) DoD achievable within each iteration Team respects DoD The bottom line Delivering working,
Yeah but.. What do I do? Software Leadership Dan Fleck 2007.
THE AGILE MENTALITY CHAPTER Topics  Why Use Agile and Scrum?  Agile Development –Manifesto for Agile Software Development  Scrum Methodology.
Dr. Nguyen Hai Quan.  Why SCRUM?  What is SCRUM?  Some terms  SCRUM Meetings  Sprint  Estimation  Product backlog  Sprint backlog  Whiteboard.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Virtually Agile Astro Sabre (Matt Ganis) IBM, Senior Technical Staff Member Hawthorne, NY - September 20, 2007.
AGILE - IMPLEMENTATION (C) CLARION TECHNOLOGIES. ability to move quickly and easily…. AGILE MEANING (LITERALLY)
Using Scrum to Improve Teamwork, Communication, Quality and Speed
Yeah but.. What do I do? Software Leadership Dan Fleck 2007.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
The Agile Manifesto Some thought starters for Ogilvy on how to work with Agile and SCRUM approaches to managing projects.
© 2015 albert-learning.com How to talk to your boss How to talk to your boss!!
Software Process Models.
Introduction to Agile. Introduction Who is this guy?
#msdevcon Community Track IMPLEMENTATION OF SCRUM Bernardin Katić Insa Investment Software AG.
Managing Agile Software Development Teams Using Scrum AKA: Wrangling Developers for Fun and Profit!
Agile Methodology. -Dhanashree Kumkar -Plus91 Technologies.
Using Scrum to Improve Teamwork, Communication, Quality and Speed.
Informed Traveler Program and Applications Agile / Scrum Overview Jerry Inberg.
CMPS 116 Software Design Project. Introduction Instructor: Dr. Huahai Yang IBM Research – Almaden Former SUNY Albany Programming.
Introducing an Agile Process to an Organization By Mike Cohn and Doris Ford IEEE Computer.
Project Workflow.
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile Scrum Management
Agile Development -- an overview
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Scrum CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Agile Development -- an overview
Agile practices for documentation teams
Adjective: Able to move quickly and easily. Principles and Values
Scrum Science NGSS: Engineering, Technology, Applications of Science
Software Development In Agile
Presentation transcript:

Software Development Methods And Some Other Stuff

The Plan for Today 1.Software Development Processes 2.Professional Development

Software development process…basically how to structure a team to get your large software project built on time.

The Waterfall* Requirements GatheringDesignProgrammingTesting/BugfixingDeployment *this is not a genuine software process 1 month 3 months 1 month

The Waterfall* Requirements GatheringDesignProgrammingTesting/BugfixingDeployment *this is not a genuine software process 1 month 3 months 1 month No feedback in the system.

Example of a development process: Scrum

There is a set of desired features called the “product backlog”. These features generally are thought up by the stakeholders and then developers estimate how much time they think each feature will take to develop.

Every “sprint” (usually about 30 days) the stakeholers select which features will be implemented. On bigger projects other teams might weigh in too. But one way or another, a set of features is chosen that takes 1 sprint worth of developer time (as computed by the developer estimates).

Every day, the developers have a very brief meeting together where they say what they did yesterday and what they’ll do today. They work, and they keep track of which features are finished from this sprint’s backlog.

At the end of the sprint, the developers deliver a new working product to the stakeholders who use it and usually that makes them think of some new features they would like which also go in the backlog. Usually there’s an end of sprint meeting where folks discuss what went well/poorly.

Things to notice about Scrum: 1.It provides regular incremental deliverables 2.It has a system that ensures negotiation between developers and the stakeholders: Developers estimate how long each item in the backlog will take Stakeholders decide which will be put into the sprint backlog 3.There are only 3 official kinds of meetings the whole process: Sprint planning meeting where the sprint backlog is decided (this meeting actually has two parts that I’m not getting into) Daily short meeting Sprint retrospective meeting (this meeting actually has two parts that I’m not getting into) 4.Focused on development

Software Development Processes Agile Methods (the ‘new’ hotness) Designed for small teams Fast turn-around is more important that perfect quality Have a small number of well specified procedures Non-agile Methods (still useful) Accommodate large projects often will many other roles (dedicated tester, maybe different roles for junior and advanced programmers, different types of managers, etc.) Generally have more procedures, sometimes forms Even with this, the goal is still to get development working at high speed

An Example of a More Complex Procedure At the beginning of every month the custom C++ libraries that drive the website framework are refreshed from the latest “good” version in source control, they are pushed to “devo” the test server Over the next two weeks, if you want to get something launched you deploy it to devo. This can be webpage perl code or custom C++ libraries. The webpage stays up for testing but if there’s a bug or two it’s understandable. One week before the end of the month, the QA team does a comprehensive test of devo. If anything is still broken it’s considered “blocking the push” and people get paged. At the end of the week, everything on devo is promoted to “master” a website that is like the real website but not accessible to the external world. TA team does another test, and people get paged if there’s problems. At the end of that testing, master is pushed to “production” the live external website, QA tests one more time and the launch is finished.

Things can get a little complex (and there can be drama) Projects can literally have ~100 developers involved with them, all working on different schedules and having different problems. Managing that is a full time job (often the person who does this called a technical program manager). Remember that it’s your job to solve technical problems, so focus on what it’s going to take to get the problem solved, not your ego It is often easier to solve the problem than to convince the person who’s problem it is to admit that it’s their job to solve the problem

You end up working on the networking framework at a video game company. After 4 months, you launch an improved version of the networking framework to universal acclaim. 2 weeks later, a random developer contacts you. He’s noticed that his part of the game has started to sporadically “pause” every couple seconds for no discernable reason. He insists that the only thing he has changed is using your new framework. No other developers have reported any slowness problems. You can’t think of any plausible reason why your framework would cause sporatic slowdowns like this. He tells you that this pausing behavior is blocking a major launch. He says this at 4:57pm on a Friday with the clear expectation that you will spend your weekend fixing this. What do you do? 1.Cancel your Friday night plans and spend the next 2.5 hours getting your system set up so you can reproduce his problem. THEN you start debugging. 2.Complain to your boss about this crackpot and try and get him to give you permission to ignore this. 3.Agree that you’ll look into this without making any specific time commitment, then head out of the office for the weekend and turn off your cell phone 4.Something else (your suggestions welcome!)

Main Things to Remember About Software Development Methods A good method… 1.Provides incremental deliverables 2.Eases negotiation between stakeholders and developers 3.Allows you to focus on development

The Plan for Today 1.Software Development Processes 2.Professional Development

To Be a Good Software Developer 1.You need to master development tools – The command line – Compilation tools like make – Source control system – Scripting languages (for quick jobs) – Other languages, challenging libraries (to improve your flexibility and give you new ideas) 2.You need to improve your environment by building tools and infrastructure 3.(Optional) A portfolio

To Be a Good Software Developer You need to master development tools – The command line – Compilation tools like make – Source control system – Scripting languages (for quick jobs) – A programmatic editor (e.g. emacs or vi) – Other languages, challenging libraries (to improve your flexibility and give you new ideas)

To Be a Good Software Developer You need to improve your environment by building tools and infrastructure Time spent building tools for yourself and your team pays off the long run (and, incidentally, tends you get you a pretty good reputation)

Reputation & Building a Portfolio Participation in groups like the XXX users group (e.g. python users group) keeps your ideas fresh, provides collaborators for interesting projects, and is a network for getting other jobs (or more good developers on your existing team) Ditto for well-known open source projects When you do something cool, put it out there! Even if it’s not the coolest code in the world, it establishes you a someone who goes above and beyond as a programmer

To Be a Good Software Developer 1.You need to master development tools 2.You need to improve your environment by building tools and infrastructure 3.A portfolio Your company should be interested in helping you do these things.