By: Mike Astarb, Christine Miller, George Sewell, Bobby Mclaughlan.

Slides:



Advertisements
Similar presentations
Introduction to Programming using Matlab Session 2 P DuffourJan 2008.
Advertisements

P5, M1, D1.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
Alternate Software Development Methodologies
NAUG NAUG Knowledge Evening – th February 2007.
 User assignments (product owner)  ‘circle’  1 st sprint: ◦ Scrum Boards (informative workspace)  Product -, release -, sprint -, defect backlog 
Agile
Review: Agile Software Testing in Large-Scale Project Talha Majeed COMP 587 Spring 2011.
Individuals and interactions
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Roles Managers Technical Team Leaders Programmers Customers Database Administrators Instructors.
Testing. What is Testing? Definition: exercising a program under controlled conditions and verifying the results Purpose is to detect program defects.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
1 Shawlands Academy Higher Computing Software Development Unit.
Chapter 3 Agile Software Development (2/2) Yonsei University 2 nd Semester, 2013 Sanghyun Park.
Extreme Programming(XP)
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
One XP Experience: Introducing Agile (XP) Software Development into a Culture that is Willing but not Ready Joe Bergin * Fred Grossman * David Leip **
Testing in Extreme Programming
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Describe the Program Development Cycle. Program Development Cycle The program development cycle is a series of steps programmers use to build computer.
EXtreme Programming: Test-First Copyright Rick Mugridge UoA Rick Mugridge Department of Computer Science University of Auckland
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Extreme Programming.
XP – Extreme Programming
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
UML-1 3. Capturing Requirements and Use Case Model.
CS3100 Software Project Management Agile Approaches.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
The Software Development Process
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Extreme Programming Based on and
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
Extreme programming (XP) Variant of agile Takes commonsense practices to extreme levels © 2012 by Václav Rajlich1.
CHAPTER 14 Classes, Objects, and Games XNA Game Studio 4.0.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Agile. Processes Waterfall Traditional With prototyping Sprial Agile Dynamic Systems Development Method (DSDM) Scrum Crystal eXtreme Programming (XP)
The single most important skill for a computer programmer is problem solving Problem solving means the ability to formulate problems, think creatively.
Agenda: Overview of Agile testing Difference between Agile and traditional Methodology Agile Development Methodologies Extreme Programming Test Driven.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
By Manish Shrotriya CSE MS 4 Point Agile Manifesto 1.Individuals and interactions over processes and tools 2.Working software over comprehensive.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Project Management Software development models & methodologies
AGILE METHODS Curtis Cook CS 569 Spring 2003.
Embedded Systems Software Engineering
Software Development.
Planning User stories are written.
Applied Software Implementation & Testing
What do you need to know about XP?
Design and Implementation
Chapter 3 – Agile Software Development
Coming up: What is Agile?
Refactoring.
CMSC 345 Programming.
Extreme Programming.
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Presentation transcript:

By: Mike Astarb, Christine Miller, George Sewell, Bobby Mclaughlan

Code::Blocks IDE for C++ Google Code w/ Subversion Repository Project Hosting TortoiseSVN for local Repositories Cpptest C++ Testing Suite SDL Multimedia framework for C++ TOOLS, LIBRARIES, AND FRAMEWORKS

Basic Animations and Draws Basic Collision Detection Joystick and Keyboard Control Working Credit Manager Movable Test Character Colliding Test Rock Basic Game Architecture Visual Foundation PROJECT ACCOMPLISHMENTS

BASIC PROGRAM ARCHITECTURE

Architecture BASIC OBJECT RELATIONSHIP ARCHITECTURE

UNPREDICTED ISSUES A few issues came up in our early development period Complexities of SDL Syntax for using inheritance in C++ Syntax for using virtual functions in C++

Number of People on Project: 4 Time Taken: semester Bugs Found: 2 Bugs Fixed: 2 Program: LocMetrics Number of Classes: 10 Source Files: 48 Directories: 19 Lines of Code: 4755 Blank Lines: 908 Non-Technical MetricsTechnical Metrics METRICS

Cyclomatic Complexity directly measures the number of linearly independent paths through a program’s source code Cyclomatic Complexity: 215 Physical lines of code, all lines regardless of content (includes comments, blank lines, ending and starting braces) Executable Physical: 2604 Logical lines of code: Executable Logic: 1376 TECHNICAL METRICS

Whole Team Pair Programming The Planning Game Small/Incremental Design Small Releases Test-driven Development Design Improvement/ Refactoring Collective Code Ownership Continuous Integration Sustainable Pace Coding Standards EXTREME PROGRAMING PRACTICES

The customer should be integrated into the team, active in daily decision making In a way we implemented this practice if we look at our team mates as the customer. Looking at it this way we were than able to ask our customer questions on a daily basis, which we took advantage of fully by asking questions and opinions of each other frequently The only issue with this mode of thinking is that our customer had a computer science background which will not be common in the real world, but was an advantage for us. WHOLE TEAM

Programmers working in pairs program every line of code delivered to the client We did not follow this programming practice precisely in the sense that we did not pair program every single line of code With this being said a lot of the code we produced was written during our pair programming sessions we held on Tuesday evenings We found from pair programming that we produced better code that would not need to be refactored further down the line We also found that pair programming saved time when it came to fixing errors, because syntax errors and most logic errors were eradicated by the second set of eyes which could more easily catch simple mistakes that might be harder to detect as the code becomes more and more complex PAIR PROGRAMMING

Client expresses goals through user stories, team then estimates costs and time, then the client prioritizes user stories. If we again look at ourselves as the customer then we the customer created user stories We then gave all user stories an approximate expected number of hours needed to complete each user story Then we prioritized what user stories should be completed first and which ones could be saved for later. During the semester we accomplished the first eight user stories we found the most important THE PLANNING GAME

The team, as a whole, owns the system software We frequently modified and refactored sections of code regardless of who wrote the code originally We did this for a couple of reasons, we did this when we noticed a code smell and a section of code needed to be refactored or when we were working on a particular user story that required changing previously implemented code. COLLECTIVE CODE OWNERSHIP

Was not a huge part of our project. We created 4 tests that originally work but two have stopped working due to reworking our code for collision. 1. updateTest – checked control state object for an update. 2. getTest – Checks SDL keyboard response 3. Collision – testFalseCollison – test should show that there is no collision.(with the way we reworked our code this test no longer works. testTrueCollison – test should show that there is collision. (again test no longer works at this time.) 4. We also created “test level”. We replaced the credit screen with a scene of ninja on a bridge with a rock to test our collision in a “real world” situation. TEST-DRIVEN DEVELOPMENT

Our releases were delivered every 3 weeks. Our first release was mainly behind the scenes work (working on our headers,.cpps and main game loop). In our second release we were able to display a start/credit screen and were able to enter and take away credits. Our third release allowed for interaction with the game using both keyboard and joystick. 1. First iteration Mainly spikes Completed multiple headers SMALL RELEASES

2. Second iteration Completed five user stories Player should be able to see a menu User should be able input credit Credit manager object needs to display itself as an array of text character objects Credit manager should be able to recognize that a credit was inserted Animated objects need to load a sprite sheet and track display data. 3. Third iteration Completed three user stories Collision objects need to be able to detect their sizes and if they’re in a collision. Start menu should be able to display/animate itself Game should be able to use both keyboard and joystick Fixed bug where holding down the credit button would cause multiple credits to be entered. Fixed bug, collision bug where avatar could enter rock from above SMALL RELEASES(CONT’D)

Followed by using Google Code / Subversion, although not very strictly Never ran into any real issues even when files were not updated immediately CONTINUOUS INTEGRATION

Did not follow the refactoring techniques Moving code Main loop -> Level Adding parameters as they were needed DESIGN IMPROVEMENT

Naming Meaningful names Variables/Files: xIndex, maverickClassName.h Constants/Defines: P1_START Functions Prototypes first, define later Use comments to describe all function prototypes Class files Must have header and implementation files Use #ifndef for all header files CODING STANDARDS

Not a concern Most coding done during meetings Tuesday Nights Pair programming / Team programming Thursday meeting Usually just discussed project details SUSTAINABLE PACE