1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.

Slides:



Advertisements
Similar presentations
The Secrets of Practical Verification… © 2008 Think Verification.
Advertisements

Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
© 2010 Bennett, McRobb and Farmer1 Use Case Description Supplementary material to support Bennett, McRobb and Farmer: Object Oriented Systems Analysis.
Informatics 43 – April 16, Homework 1 What is the purpose and goal of each section in the document? Two audiences: non-technical users and technical.
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.
1 Day-to-day planning – “Old school” How planning leads to success Parts of Phillips, Ch 4 CSSE579 Session 5 Part 1.
1 Steve Chenoweth Tuesday, 10/04/11 Week 5, Day 2 Right – Typical tool for reading out error codes logged by your car’s computer, to help analyze its problems.
The Unified Software Development Process - Workflows Ivar Jacobson, Grady Booch, James Rumbaugh Addison Wesley, 1999.
Lecture 2 Teams Principles What makes a good project Project Definition Project Plan.
Individuals and interactions
Individuals and interactions
Illinois Institute of Technology
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
1 CHAPTER 2 DATABASE MODELING IN THE WORKPLACE. 2 Ch2: Database Modeling in the Workplace The only fool is the data model designer who assume to know.
Introduction to Computer Technology
1 KAN’S INTRO AND OVERVIEW MODELS Ch1 & 2 in his book Steve Chenoweth, CSSE.
1 Testing – Part 2 Agile Testing In which we talk about nothing, because having unit tests solves all problems forever. Really. It’s not a subtitle balance.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Object Oriented Analysis and Design Introduction.
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Incorporating Pragmatic Usability Testing Into a Software Test Plan Carla Merrill, Ph.D. Focused Design focuseddesign.com
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
Invitation to Computer Science, Java Version, Second Edition.
1 Designing the Architecture CSSE 477 Software Architecture Steve Chenoweth, Rose-Hulman Institute Week 3, Day 1, Monday, September 19, 2011.
Testing E001 Access to Computing: Programming. 2 Introduction This presentation is designed to show you the importance of testing, and how it is used.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Marie desJardins University of Maryland, Baltimore County.
1 Planning – Agile Style Highsmith, Ch 7 All kinds of iterations! CSSE579 Session 3 Part 1.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
What IS a Journeyman Programmer? Why this program?
AP-1 5. Project Management. AP-2 Software Failure Software fails at a significant rate What is failure? Not delivering it on time is an estimation failure.
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
CS 4850: Senior Project Fall 2014 Object-Oriented Design.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Individuals and interactions
1 Design and Integration: Part 3 To prepare for today’s class, visit Cookie Clicker and plan with it for a few minutes:
Product Management Or.. The most important thing most startups forget to do.
Fall 2015 ECEn 490 Lecture #8 1 Effective Presentations How to communicate effectively with your audience.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Project.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Evaluating Requirements
The Last Lecture CS 5010 Program Design Paradigms "Bootcamp" Lesson © Mitchell Wand, This work is licensed under a Creative Commons Attribution-NonCommercial.
An Agile Requirements Approach 1. Step 1: Get Organized  Meet with your team and agree on the basic software processes you will employ.  Decide how.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Interactions. The prey, the pack, and the hunt Your goal is to meet your customer’s needs That goal, and nothing else, is the prey Not throwaway prototypes.
CSCI 383 Object-Oriented Programming & Design Lecture 7 Martin van Bommel.
The Year of the Curriculum: Life Without Levels The programme consists of a bridging unit and five further units: © Curriculum Foundation1 Bridging Unit.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Poka-yoke in software A software products company sells application software to an international market. The pull-down menus and associated mnemonics provided.
1 Testing A little terminology you’re surely familiar with… Black Box White Box Integration Acceptance Regression.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
In today’s lesson we will be looking at: what we mean by the software development lifecycle the phases in the lifecycle We will focus particularly on testing:
CompSci 230 Software Construction
CSC 221: Computer Programming I Spring 2010
CSC 221: Computer Programming I Fall 2005
Dilbert Scott Adams Manage It! Your Guide to Modern, Pragmatic Project Management. Johanna Rothman.
Informatics 121 Software Design I
Advantages OF BDD Testing
Get Good at DevOps: Feature Flag Deployments with ASP
CSE 303 Concepts and Tools for Software Development
Presentation transcript:

1 Design and Integration: Part 2

2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture slides

3 From Yesterday – Continuous Integration What is the corresponding old-school practice for continuous integration? Why is testing (ideally automated testing) so important in continuous integration? When does continuous integration fail?

4 So - How would you integrate this? Imagine you’re working with a company that’s building a deployment process. You’ve got several “services” each of which maintains content. The deployment consists of 3 steps: 1.Prepare 2.Deploy 3.Rollback (maybe) Managed by a “Deployment Manager” (DM) service. Both the services and the DM are under development. The final deployment can’t be tested unless every service has correctly deployed. Say each service and the DM are developed by a different person. How do you handle integration? Say each service and the DM are developed by a different team. How would you handle integration? In groups of 3-5, write down ideas that would reduce the risk of this integration process. (Building and delivering the DM itself, AND new versions of the services.)

5 Section 1’s ideas Have a fake place to deploy it to, etc.: – Fake the deployment manager (mock it). Or, – Fake the services. Getting one to fail is tricky. Like, sending garbage data. Make a big fancy spec document. – Provides visibility. Find a way to build it piecemeal. – Do something serially. – How do you test the DM if there’s nothing to deploy?

6 Related tips - Build repeatability Crucial for continuous integration – Requires that multiple people know how to build, and – You can avoid subtle bugs Can you “build any version” as you come out with new ones? – E.g., existing features customers are using How to patch these? They used an old version of the operating system

7 Related to continuous integration Continuous delivery Harder Typical desired scenario – Code – build – test today – Deliver tonight Gives you a continuous flow of features to your customers Works a lot better with SOA’s

8 Opportunistic Refactoring What do you refactor your code to do?  Rule 1: Enable whatever you know best comes next!  Rule 2: Make your code easy to use: Reduce duplication Be more explanatory (note: agile equivalent of documentation here) Improve the “smell” Improve the design is of course the goal, but this can be a tricky business We’ll have a full look at refactoring in CSSE 375…

9 Phillips: A strategic quote There are morale issues. Many creative people are offering solutions or parts of solutions, yet the business may be dictating significant design parameters such as language, operating system, hardware, and user interface.

10 And Another frustration of design is that sinking feeling that you are reinventing the wheel. The current design is similar to the design of last year’s project. It is just different enough to cause us to repeat the entire design process. If only we had made the last design more general- purpose. “Let’s make a better one of these…”

11 “Old school” Design Some other key thoughts from Phillips: Design is about finding foresight with the same 20/20 vision as hindsight. (p 259) Design is a visibility technique and a visibility product. – It’s both a process and an artifact. (p 259) It’s creating many solutions to a problem, then choosing one according to a set of criteria, – And then socializing that solution. (p 260)

12 More Phillips Some people do not make good designers because they cannot work with design’s sloppy nature. – Iteration is one way to work through design frustration. (p 261) Find at least 3 major deficiencies in your first design. – If you can’t find them, have someone else take a look. (p 261)

13 And more Designing without abstraction leads to failure. (p 262) Most customers are tired of developers after the grueling requirements activities. (p 264) Writing requirements in English only is a mistake. (p 265) Loose coupling means that the implementation of one unit does not depend on the implementation of another. (p 265) – Decoupling is often “social.”

14 More The most common design secrets to hide are items that have a high probability of changing. (p 266) The most important step in designing for reuse is to decide to design for reuse. (p 267) The first step in evaluating design decisions is to base those decisions on criteria you selected ahead of time. (p 268)

15 Why talk about design now? You’ll get this, in depth, in 374 and 477! Had bits and pieces in every CSSE class. Don’t say: Because it’s the heart of creating software.

16 And You need the big picture of software projects. – This is the course where you get it. And – You have to do design and planning how to run the project, at the same time. – Like, who you need on the project depends on: – What skills you need to pull it off, which – Depends on the design.

17 The standard design sequence In all of engineering, it goes like this. 1.You at least need a good problem statement. – It should cover functional and non-functional requirements in generality. 2.You do the high-level design from that. – Top-down, with lots of alternatives. – Then pick from those, based on lots of criteria. – This is Phillips’ “Abstraction” (p 262) 3.Then you use the detailed requirements to fill-in the detailed design. – Bottom-up. – Do you need to express this, beyond coding? Like? Why?

18 High-level design looks like good brainstorming Try not to mix these two: – Coming up with new ideas. – Picking one, and focusing on how to do it well. But, – For everything beyond coding, you have to maintain it forever! – So – Is it throwaway?