300 likes | 443 Views
CS427: Software Engineering I. Darko Marinov (slides from Ralph Johnson). Software process. Important part of software engineering Johnson: “The steps a particular group follows to develop software” Purpose of the courses Be able to follow your project’s process
E N D
CS427:Software Engineering I Darko Marinov (slides from Ralph Johnson)
Software process • Important part of software engineering • Johnson: “The steps a particular group follows to develop software” • Purpose of the courses • Be able to follow your project’s process • Be able to improve your process • Be able to choose the right process for your project CS427
Two (of many) processes • Rational Unified Process (RUP) • Object oriented (OO) • Incremental • Commercial, popular • eXtreme Programming (XP) • Used mostly by OO developers, not OO • Incremental • Counterculture, popular CS427
Reminder • Please read the material! • Suggested reading for this class • Extreme Programming Explained by Kent Beck • http://www.extremeprogramming.org/ • http://www.xProgramming.com CS427
eXtreme Programming goals • Minimize unnecessary work • Maximize communication and feedback • Make sure that developers do most important work • Make system flexible, ready to meet any change in requirements CS427
Components of a process • How to understand a new process? • How to compare processes? CS427
Components of a process • Artifacts – what • Things people make • Roles – who • Roles people take • Activities – how • Tasks people do • Workflows – when • Order of steps people follow CS427
Artifacts • Metaphor (XP is evolving) • Stories, sorted into “iterations” • Tasks • Unit tests • Functional tests • Code CS427
Roles • Customer [for project: someone outside of course or someone from your group] • Tester • Developer • Coach • Tracker • Boss CS427
Activities • Writing stories • Planning game • Standup meeting • Writing tests • Making tests work • Refactoring • Integrating CS427
Overall workflow • Customer produces sequence of “stories” • Developers break stories into “tasks” • Developers implement tasks one at a time, working in pairs • Developers implement tasks by • Writing tests for it • Doing “simplest thing” to make tests work • Refactoring until design is simple again CS427
XP practices • On-site customer • The Planning Game • Small releases • Testing • Simple design • Refactoring CS427
XP practices • Metaphor • Pair programming • Collective ownership • Continuous integration • Energized work • Coding standards CS427
Pair programming CS427
Tests • Unit tests (xUnit) • Test each unit of software • Write code only if there is a unit test for it • All unit tests must always run • Written by developers • Functional tests • Test entire package • Written by customer CS427
Continuous integration • Integrate your work after each task • Start with official “release” • Once task is completed, integrate changes with current official release • All unit tests must run after integration CS427
Design Design occurs when developers • Develop metaphor • Break story into tasks • Decide how to implement a task • Refactor CS427
Simple design • Do the simplest thing that could work • For each design problem: • What are some solutions? • Will it work? (yes, no, maybe) • Pick the simplest one that might work CS427
XP planning game CS427
XP planning game • Customer writes stories • Developers estimate • Effort (in man-weeks) • Risk (high, medium, low) • Budget for each iteration • Customer picks enough stories to fill iterations CS427
Planning XP project • Write stories until they are “complete” • Estimate and plan • Execute and measure • Revise plan • Execute and measure • Revise plan • ... CS427
Estimating • If you cannot estimate a story, work on it until you can • Group design session • Prototyping • If story is too long, break it into smaller stories • Divide, conquer… • …and integrate CS427
Revise plan • Measure actual number of story-weeks implemented • Make sure next iteration does not require more than previous iteration • Customer can • Add stories • Revise, remove, reschedule stories • Only developers can estimate stories CS427
Improved estimating • Requires a few iterations to make good estimates • Next iterations are easier to predict than iterations that are far away • Easy to change schedule by changing stories CS427
Summary of XP • Values • Communication • Simplicity • Feedback • Courage • Respect (XP is evolving) • Principles • Practices CS427
RUP vs. XP: Your opinions • How would you compare them? • Which one would you prefer (when)? CS427
Keys to good software • Good people • Understand the problem • Understand the solution • Enough time • Good process CS427
Course info • Wiki http://brain.cs.uiuc.edu:8080/SECourse • Announcements • Grade: 5 homework assignments (15%), project (35%), midterm (15%), final (35%) • Homework 0, create a page if you didn’t • Homework 1 • Project proposal, groups of 3 (may be 2 or 4) • Due September 21 CS427
Next: Project initiation • Suggested reading • Chapters 4, 5, and 7 of Hamlet and Maybee, plus sections 2.3, 2.4, and 2.5 • Catch-up reading • Chapter 1 of Hamlet and Maybee • Some overview of RUP • Some overview of XP CS427