1 Design and Integration: Part 1 Nuggets about Design vs Project Management.

Slides:



Advertisements
Similar presentations
Ninth Lecture Hour 8:30 – 9:20 pm, Thursday, September 13
Advertisements

CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Processes. Outline Definition of process Type of processes Improvement models Example Next steps… 1.
Intro to Scrum. What is Scrum? An answer to traditional “fixed cost / strict requirements” contracts which had very high rates of failure Recognizes the.
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.
E-commerce Project Erik Zeitler Erik Zeitler2 Lab 2  Will be anounced and scheduled later  We will deploy Java Server Pages on a Tomcat server.
Individuals and interactions
Individuals and interactions
Week 8 Implementation Design Alex Baker. Implementation Design System Design – Describes what the system should do Implementation Design – Describes what.
Illinois Institute of Technology
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 CMSC 132: Object-Oriented Programming II Software Development III Department of Computer Science University of Maryland, College Park.
SE 555 Software Requirements & Specification 1 SE 555 Software Requirements & Specification Prototyping.
Chapter 9 – Software Evolution and Maintenance
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
TDD,BDD and Unit Testing in Ruby
Effective Methods for Software and Systems Integration
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Welcome to the wonderful world of……. . A Quick & Easy Guide.  What IS ?  A quick, easy and convenient way to send a letter to friends, family.
Software Engineering 2003 Jyrki Nummenmaa 1 REQUIREMENT SPECIFICATION Today: Requirements Specification Requirements tell us what the system should.
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.
1 Today’s Plan In Class Exam – Quick Review Thoughts on your Junior Projects, cntd People and Roles on Projects.
 CS 5380 Software Engineering Chapter 8 Testing.
Today’s class 1.Refamilizaring ourselves with the big picture. 2.Debriefing preliminary reflections and user research. 3.Characterizing the user/audience.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
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.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Project.
Exchange Design Best Practices Tools for Successful Flow Design and Implementation 1.
CS 111 – Nov. 22 Chapter 7 Software engineering Systems analysis Commitment –Please read Section 7.4 (only pp ), Sections –Homework #2.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Model View Controller A Pattern that Many People Think They Understand, But Has A Couple Meanings.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Copyright © 2015 Curt Hill Software Development Paradigms What do you need to know?
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
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.
CS 350 – Software Design Expanding Our Horizons – Chapter 8 The traditional view of objects is that they are data with methods. Sometimes objects could.
24 January Software Engineering Processes Risk Management.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki The Project.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 5 Lecture # 4 – October 5, 2004.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2000 Session 4 Lecture # 3 - September 28, 2004.
Evaluating Requirements
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
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.
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…
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.
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:
What is a Functional Spec?  Defines what the functionality will be NOT how it will be implemented  Describes features of the software product product's.
CSE 374 Programming Concepts & Tools
Enterprise Content Management, Shared Services, & Contract Management
Advantages OF BDD Testing
Gathering Systems Requirements
CSE 303 Concepts and Tools for Software Development
Internet Engineering Course
Gathering Systems Requirements
Product Development & Planning
Presentation transcript:

1 Design and Integration: Part 1 Nuggets about Design vs Project Management

2 This week Exam 2 – due on Moodle last night. This week’s topic – How design and testing tie in with project management. This week’s project / presentation activities: – The usual questions, this time on program management and governance, but fewer of them than usual! Reminder – Two courses to consider for summer… – Software architecture – Already discussed (See slides on our web site). – Systems engineering – See slides on last week’s opening slide set Could be interesting to be more knowledgeable about what your own systems engineers do! Might be even more fun if you and someone else in your group take it together. Ask Cindy about financial support. Let me know ASAP if you are interested. Next week – – Teamwork!

3 A goal of both - 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 your groups, 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 Some previous classes’ 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 Also related to continuous integration Continuous delivery – Harder to do! 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 have a full look at refactoring in other courses…

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)