1 Software Development By Rick Mercer with help from these sources: Rational Unified Process Computing Fundamentals with C++, Rick Mercer Designing Object.

Slides:



Advertisements
Similar presentations
SOFTWARE DEVELOPMENT METHODOLOGIES Methodologies Waterfall Prototype model Incremental Iterative V-Model Spiral Scrum Cleanroom RAD DSDM RUP.
Advertisements

SDLC – Beyond the Waterfall
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
Diane Pozefsky. Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will start)
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
29 September Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will.
Agile Process Models. Prescriptive models don’t work It is unrealistic to not have changes. Why? The Agile Manifesto: Individuals and interactions over.
Software Life Cycles ECE 417/617: Elements of Software Engineering
Software Development. Sub Processes Analysis - Environment, Requirements, Use cases Design - Program, Module, Function Implementation Validation - Test,
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
COMP 350: Object Oriented Analysis and Design Lecture 2
Chapter 6 View Alignment Techniques and Method Customization (Part I) Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis.
AgileCamp Presents: Agile Software Development. Good luck in your presentation! This slide deck has been shared by AgileCamp Kit under the Creative Commons.
Software Development Process
BEFORE AGILE METHODS Other Engineering fields development models were used, ie: Waterfall Method: Intensive planning and refactoring before coding is actually.
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Chapter 5 Software Process Models. Problems with “Traditional” Processes 1.Focused on and oriented towards “large projects” and lengthy development time.
Extreme Programming: Introduced Matthew Heusser Excelon Development – xndev.com - Presented to CS 611 at GVSU, 4/6/2005.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
Unified Process versus Extreme Programming. Outline Compare and contrast UP and XP  Processes / Disciplines  Management  Artefacts Risk management.
Agile Software Development: Practices through Values C Sc 335 Rick Mercer.
1 Responsibility Driven Design Responsibility Driven Design, Rebecca Wirfs Brock, 1990 The Coffee Machine Design Problem, Alistair Cockburn, C/C++ User's.
CPSC 2150 August 21, Chapter 1 Object Oriented Software Development This is an introductory course In this chapter we will look at 3 topics Challenges.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Software Specification and Design Sirisin Kongsilp & James Brucker.
Software development process ธนวัฒน์ แซ่ เอียบ. The development process Process –set of rules which define how a development project. Methodology and.
Course Overview & Topics CSc 335: Object-Oriented Programming and Design © Rick Mercer 1.
Extreme Programming (XP). Agile Software Development Paradigm Values individuals and interactions over processes and tools. Values working software over.
June 05 David A. Gaitros Jean Muhammad Introduction to OOD and UML Dr. Jean Muhammad.
Coming up: The Manifesto for Agile Software Development 1 Software Engineering: A Practitioner’s Approach, 7/e Chapter 3 Agile Development Software Engineering:
1-1 C Sc 335 Course Overview Object-Oriented Programming and Design Rick Mercer.
1 Responsibility Driven Design Responsibility Driven Design, Rebecca Wirfs Brock, 1990 The Coffee Machine Design Problem, Alistair Cockburn, C/C++ User's.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
1-1 1) Software Development 2) with TDD at the end By Rick Mercer with help from these sources: Rational Unified Process Computing Fundamentals with C++,
Chapter 1 OBJECT-ORIENTED ANALYSIS AND DESIGN Objectives Describe the book goals and scope Define OOA/D (Object-Oriented Analysis and Design) Illustrate.
Outline Derive some user stories for next Project
Software Engineering. Acknowledgement Charles Moen Sharon White Bun Yue.
Software Design. A well-known phenomenon You will learn…. –Thinking "object oriented“ –Define requirements and analyze the problem domain. –Design of.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Fall 2015CISC/CMPE320 - Prof. McLeod1 CISC/CMPE320 Assignment 1 due tomorrow, 7pm. RAD due next Friday in your Wiki. Presentations week 6. Tomorrow’s lecture.
1/2/12 Chapt 2 Iterative Evolutionary Agile. 1/2/12 (Rational) Unified Process A software development process – Flexible and open Other processes – XP.
1 Responsibility Driven Design Responsibility Driven Design, Rebecca Wirfs Brock, 1990 The Coffee Machine Design Problem, Alistair Cockburn, C/C++ User's.
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
Introduction to Software Engineering Muhammad Nasir Agile Software Development(2)
10 September Interactions  There is no “right answer”  Typically people and product are fixed  … can adapt process  (which is where we will.
Extreme Programming מתודולוגיה לפיתוח פרויקטי תוכנה.
 Son Nguyen, YM & Skype: ng_thanhson.
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.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
School of Business Administration
Software Development.
Software Development methodologies
Outline Derive some user stories for next Project
Waterfall and Agile Quality Techniques
Introduction to Software Engineering
COMP 350: Object Oriented Analysis and Design Lecture 2
Teaching slides Chapter 1.
Lecture 2 Revision of Models of a Software Process
Chapt 2 Iterative Evolutionary Agile.
CSC 354 – System Development Life Cycles & Processes, Fall 2013
Coming up: What is Agile?
References: Eddie Burris, Rick Mercer
Chapter 5: New and Emerging Process Methodologies
System Development Methods
Presentation transcript:

1 Software Development By Rick Mercer with help from these sources: Rational Unified Process Computing Fundamentals with C++, Rick Mercer Designing Object Oriented Software, Rebbeca Wirfs-Brock, Wilkerson, Wiener Object-Oriented Design Heuristics, Arthur Riel

2 Software Challenges  Specifications may be incomplete  Software product is expected to be used for a long time  Ever more complex systems, high expectations  Requirements change  We don't know what the customer wants  The customers don't know what they want

3 One Approach: Waterfall  Software go through several stages called the life cycle  Waterfall model

4 Waterfall Model

5 Waterfall Model (con.)  Waterfall has some severe problems. — The team has to be almost clairvoyant little room for error — places the high risk and difficult elements towards the end  Craig Larman's book[1] provides proof that waterfall has proved to be a terrible way to develop software.[1] — In a two-study, 87% of all investigated projects failed — The waterfall process was the "single largest contributing factor for failure, being cited in 82% of the projects as the number one problem." Rick will now attempt to tell a joke [1] Agile and Iterative Development: a Manager's Guide, Addison-Wesley Professional, 2003 [1]

6 Iterative Software Development  An iteration is a small part of the entire system

7 Rational Unified Process  Practices of RUP — Develop iteratively — Manage changing requirements — Use components such as Java classes — Visually Model with UML — Continuously test  RUP allows you to select from many processes

8 A Process we'll use  Agile Manifesto See  Started with Scrum and XP (Kent Beck’s eXtreme Programming), mid 1990s  Teams often choose from a set of practices  A few Agile practices we are or will be using — Planning game: stories, estimation, iterations — Test Driven Development (TDD) — Pair Programming — Continuous Integration — Sustainable Pace (determine velocity would be nice) — Coding Style (use the same style as team whether you like it or not) — On-site customer (simulated)

9 Responsibility Driven Design Responsibility Driven Design, Rebecca Wirfs Brock, 1990 The Coffee Machine Design Problem, Alistair Cockburn, C/C++ User's Journal, May and June Introducing Object-Oriented Design with Active Learning, Rick Mercer, Consortium for Computing in Small Colleges, 2000

10 In Rebecca Wirfs Brocks' Words Responsibility-Driven Design is a way to design that emphasizes behavioral modeling using objects, responsibilities and collaborations. In a responsibility-based model, objects play specific roles and occupy well-known positions in the application architecture. Each object is accountable for a specific portion of the work. They collaborate in clearly defined ways, contracting with each other to fulfill the larger goals of the application. By creating a "community of objects", assigning specific responsibilities to each, you build a collaborative model of our application. Responsible : able to answer for one's conduct and obligations—trustworthy, Merriam Webster

11 Responsibility Driven Design Summarizing Rebecca in Rick's words 1) Identify candidate objects that model a system as a sensible set of abstractions 2) Determine the responsibility of each object — what an instance of the class must be able to do, — and what each instance must know about itself 3) Understand the system through role play — To help complete its responsibility, an object often needs help from other objects

12 OO Design Principle The Single Responsibility Principle Classes should have a single responsibility  Why? — Cohesion, when high, reduces complexity, makes the system more understandable — Maintenance: Fixing or changing a module should not break other parts of the system

13 First Design a Model Note: design is iterative  Find a set of objects (candidate classes) that model a solution  Each will be a part of the bigger system  Each should have a single responsibility  What are these objects?

14 Find the Objects  Candidate objects may come from — The nouns in the problem statement Underline the noun phrases to look for the objects that could model the system — An understanding of the problem domain knowledge of the system that the problem specification may have missed or took for granted — The words floating around the room Alistair Cockburn