1 Integration and Design: Part 4 Is Design continuing to be Dead? Gutsy opening image, and I apologize if it’s too strong: The issue is how much early.

Slides:



Advertisements
Similar presentations
Foundations and Strategies Attention Investment CS352.
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Agile Planning Dealing with Reality. Reality Basic agile principle – don’t expect static plans to hold, be flexible and expect changes.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
S.T.A.I.R.. General problem solving strategy that can be applied to a range problems.
Computer Memory GCSE Computing.
1 Design and Integration: Part 1. 2 What’s a metaphor? Ward Cunningham cites George Lakoff’s book, Metaphors We Live By: Lakoff argues that the assumptions.
8 September Announcements  GIT Class: Friday 3-5 SN 115 (Peter Parente)  Information for Project Links PageProject Links Page  Hot Topics Teams.
8 December Logistics  Sitterson 014 at 8 am Tuesday, Dec 14  Inviting all clients  Schedule will depend on client constraints ( once booked)
1 March Extreme programming. Presentations Tuesday Campus Tour Sami Says Hawks Thursday Read2Me UNCSET Oral Lab NetVis If helpful, invite your client.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Management 421 Computer Science 350. Overview Project Roles Software Development Process Extreme Programming Management/Developer Interaction in Extreme.
Transitioning to XP or The Fanciful Opinions of Don Wells.
18 January Writing a Functional Spec. Administrivia How many teams will want departmental web space vs links to your own space? Please send me your CS.
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Software development process: Problem decomposition and analysis.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
Analytical Thinking.
INCOSE 1 st reactions. One other area that struck me has the sheer number of levels of proficiency—in ours we are going with 5 and the first one is limited.
By Bob Bunson  Simulation of software development project  Fictitious system from Concept to Code  Oriented around the.
1 KAN’S INTRO AND OVERVIEW MODELS Ch1 & 2 in his book Steve Chenoweth, CSSE.
1 Agile is Dumb. 2 Look at Moodle List of Essays Get in groups of 4-5 Divide and read the readings in the category “agile is dumb” – About 20 minutes.
No, Thanks, I’ll Use a Spreadsheet
Agile Programming Principles.
The Agile Primer July 2008 © ThoughtWorks 2008.
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Agile Modeling Theory. 2 Agile Modeling (AM) AM is a chaordic, practices-based process for modeling and documentation AM is a collection of practices.
Overview Prototyping and construction Conceptual design
Revision Techniques that work Tried and tested tips to make learning easier and more fun.
1 e X treme P rogramming D. Dranidis September 2000 CITY College.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 7 Slide 1 Requirements Engineering Processes.
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.
1 Design and Integration: Part 2 Going Agile on Design…
Professional IT Roles Investigate IT professional roles. Find out what each role involves, what the job entails. Identify what personal qualities are needed.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
IT Job Roles & Responsibilities Shannon Ciriaco Unit 2:
1 Planning – Agile Style Highsmith, Ch 7 All kinds of iterations! CSSE579 Session 3 Part 1.
Page 1 Copyright © 1999, RoleModel Software, Inc. An Introduction to Extreme Programming Ken Auer
By: Beverly Flaxington American Management Association.
Requirement Handling
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Extreme Programming (XP) XP is an agile methodology: –aims to be responsive to change Theme running through XP is the importance of communication –amongst.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Extreme programming for programmers Kirill Kalishev SPb Java Users Group 13 Oct 2001 Title.
AP-1 4. Agile Processes. AP-2 Agile Processes Focus on creating a working system Different attitude on measuring progress XP Scrum.
1 Design and Integration: Part 3 To prepare for today’s class, visit Cookie Clicker and plan with it for a few minutes:
Use Cases CS 6961 – Lecture 4 Nathan Dykman. Neumont UniversityCS Lecture 102 Administration Homework 1 is due –Still reviewing the proposal, but.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
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.
OOD teaches a complicated method, best for large systems. Here we teach the ten cent version. OO Design for the Rest of Us 1.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
Developing a growth mindset in the face of challenge
The problem that needs to be solved is if a computer career is for me.
Refactoring and Integration Testing or Strategy, introduced reliably by TDD The power of automated tests.
CSCI N201 Programming Concepts and Database 2 - STAIR Lingma Acheson Department of Computer and Information Science, IUPUI.
25-Feb-16 Extreme Programming. 2 Software engineering methodologies A methodology is a formalized process or set of practices for creating software An.
Refactoring: Improving the Design of Existing Code.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Extreme Programming.
eXtreme Programming (XP) and eXtreme Modeling (XM)
S.T.A.I.R CSCI N207 Data Analysis Using Spreadsheet Lingma Acheson
Coming up: What is Agile?
Agile Development – a new way of software development?
Extreme Programming.
Presentation transcript:

1 Integration and Design: Part 4 Is Design continuing to be Dead? Gutsy opening image, and I apologize if it’s too strong: The issue is how much early design success adversely affects later attempts to change it. Here, Superman wonders, “If Bruce Wayne’s parents’ death is the hinge causing all his Batman behavior, then is that the only important part of his story, doomed to be retold till we’re all tired of it? And how does that affect me, as another comic superhero?”

2 Cookie Clicker Design Design this silly game. – In groups of 3-5. – Put an OO design on paper. Then we’ll all discuss issues. Assume your game works like the online one. – Except – you can login and retrieve state. How long would you want to design, before you started coding? Do you need to do aggregate queries?

3 One way to deal with changing requirements is to build flexibility into the design so that you can easily change it as the requirements change. However this requires insight into what kind of changes you expect. A design can be planned to deal with areas of volatility, while that will help for foreseen requirements changes, it won't help (and can hurt) for unforeseen changes. So you have to understand the requirements well enough to separate the volatile areas, and Our observation is that this is very hard. Fowler and Fowler… Can the egg know how the chicken is going to turn out?

4 Does Refactoring Violate YAGNI No, because we have a more complex definition of “simplicity” Simple = the easiest to work with code, overall. If the product lives for 10 years, better-written code really pays off. E.g., living with a big, messy case statement, versus a set of subclasses that do those cases. Pocket knife, after 10 years

5 Design Patterns? Knowing them is good, Fowler thinks (we agree) But just the slightest bit dangerous Using design patterns always has a cost – Good in that everyone knows them. – Maybe not so good if coding to them takes a lot of effort.

6 Design Patterns? And here they are… Lots more in 374

7 Can Refactoring Lead You To Patterns? Maybe – More often, programmers refactor to patterns. Like, To get rid of a talking to some interface that keeps changing, I consolidate where I have to do that, into an “interface” class. Or, To get make a bunch of little variations on a class, I “decorate” it with these separate additions as wrappers. Lots more on refactoring in 375!

8 First keep in mind what you're drawing the diagrams for. The primary value is communication. – Effective communication means selecting important things and neglecting the less important… – Don't draw sequence diagrams for all use cases and scenarios – only [the important ones].. A common problem with the common use of diagrams is that people try to make them comprehensive. – The code is the best source of comprehensive information, as the code is the easiest thing to keep in sync with the code. – For diagrams, comprehensiveness is the enemy of comprehensibility.

9 Are there things worth “planning in”? Desires of the customer Technical Risk Ability to get it right “up front”

10 Personalities weigh in What role does an architecture play when you are using evolutionary design? Again, XPs critics state that XP ignores architecture, that XP's route is to go to code fast and trust that refactoring that will solve all design issues. Interestingly they are right, and that may well be weakness. Certainly the most aggressive XPers - Kent Beck, Ron Jeffries, and Bob Martin - are putting more and more energy into avoiding any up front architectural design. Don't put in a database until you really know you'll need it. Work with files first and refactor the database in during a later iteration. “Uncle Bob” Martin

11 Revisiting the tension In general, however [Architect] conveys a certain gravitas, as in "I'm not just a mere programmer - I'm an architect". This may translate into "I'm an architect now - I'm too important to do any programming". The question then becomes one of whether separating yourself from the mundane programming effort is something you should do when you want to exercise technical leadership. This question generates an enormous amount of emotion

12 Any time you distinguish roles, you have similar problems…

13 What’s an architect have to do? - 1 Desired qualities for a software architect include the following:, 1.The artistic skill to make seemingly simple designs that are easy to grasp and yet which solve complex problems. 2.Analytical skills, such as an ability to find root causes for high-level problems in existing designs, like why a system runs too slowly or is not secure. 3.A systems engineer's understanding of the business, social, and operational environment in which a system needs to operate. An understanding of the domain in which a system will live, as well as technical knowledge. 4.Ability to relate to a wide range of stakeholders, including the client, users, system administrators and suppliers. 5.Communication skills - explaining to a design to the people who need to implement it. 6.A working knowledge of the capabilities of the development organization, and of how to explain to them what to do. This normally includes a high- level of adeptness at using the required technologies. The architect often writes a framework, which is developed further by others on the team.

14 What’s an architect have to do? - 2 And, 7.Knowledge of multiple technologies, from which to choose the right ones for the next job. 8.Ability to conceptualize the strategic requirements for a project, which translate into needed design features. 9.Negotiation skills, so as to stand up for technical decisions that require change by developers and stakeholders. 10.Teamwork skills, such as listening to opinions of other developers and testers. 11.Technical leadership skills, during development and delivery of a system. These include also the selling skills used to convince stakeholders and developers of the soundness of a technical approach. Lots more about this in CSSE 477 !

15 Living in Flatland The fundamental assumption underlying XP is that it is possible to flatten the change curve enough to make evolutionary design work. This flattening is both enabled by XP and exploited by XP. This is part of the coupling of the XP practices: specifically you can't do those parts of XP that exploit the flattened curve without doing those things that enable the flattening.

16 Flat is a state of mind? In his XP 2000 paper, Josh Kerievsky points out a good example of this. He looks at possibly the most public XP code of all - JUnit.JUnit – JUnit uses decorators to add optional functionality to test cases, such things as concurrency synchronization and batch set up code. – By separating out this code into decorators it allows the general code to be clearer than it otherwise would be. – But you have to ask yourself if the resulting code is really simple. For me it is, but then I'm familiar with the Decorator pattern. But for many that aren't it's quite complicated.