A P RAGMATIC A PPROACH Brent Bradbury Joshua Bruning.

Slides:



Advertisements
Similar presentations
Test Automation Success: Choosing the Right People & Process
Advertisements

1 Software Processes A Software process is a set of activities and associated results which lead to the production of a software product. Activities Common.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Chapter 10 Schedule Your Schedule. Copyright 2004 by Pearson Education, Inc. Identifying And Scheduling Tasks The schedule from the Software Development.
Becoming a Pragmatic Programmer Terry Cheng Nov 18, 2004.
Tietojärjestelmien peruskurssi Software engineering Malin Brännback.
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
Software Reuse Building software from reusable components Objectives
Recall The Team Skills 1. Analyzing the Problem (with 5 steps) 2. Understanding User and Stakeholder Needs 3. Defining the System 4. Managing Scope 5.
Reasons to study concepts of PL
Software Processes: Traditional CSCI102 - Systems ITCS905 - Systems MCS Systems.
Notion of a Project Notes from OOSE Slides - modified.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
COMP8130 and 4130Adrian Marshall 8130 and 4130 Test Management Adrian Marshall.
Systems Development (SD) Presentation Michael Webb IT Director for Medicaid Utah Department of Health UDOH Informatics Brownbag August.
© 2006, Cognizant Technology Solutions. All Rights Reserved. The information contained herein is subject to change without notice. Automation – How to.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
® IBM Software Group © 2006 IBM Corporation PRJ480 Mastering the Management of Iterative Development v2 Module 3: Phase Management - Inception.
Effective Methods for Software and Systems Integration
Software Construction. Implementation System Specification Requirements Analysis Architectural Design Detailed Design Coding & Debugging Unit Testing.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
1 Shawlands Academy Higher Computing Software Development Unit.
Test Organization and Management
© The McGraw-Hill Companies, An Introduction Chapter 1 Software Project Management 4 th Edition Robert Hughes and Mike Cotterell.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
1 Process Engineering A Systems Approach to Process Improvement Jeffrey L. Dutton Jacobs Sverdrup Advanced Systems Group Engineering Performance Improvement.
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
The Software Engineering Process Alan Sexton Based on “UML Distilled”, Fowler & Scott, Addison Wesley 1999.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Chapter 6 : Software Metrics
Software Engineering Management Lecture 1 The Software Process.
111 Notion of a Project Notes from OOSE Slides – a different textbook used in the past Read/review carefully and understand.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
Role-Based Guide to the RUP Architect. 2 Mission of an Architect A software architect leads and coordinates technical activities and artifacts throughout.
BTEC Unit 06 – Lesson 08 Principals of Software Design Mr C Johnston ICT Teacher
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
1 Activities covered by project management Feasibility study Is project technically feasible and worthwhile from a business point of view? Planning Only.
INFO 637Lecture #51 Software Engineering Process II Defining Requirements INFO 637 Glenn Booker.
Cohesion and Coupling CS 4311
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
CS 4850: Senior Project Fall 2014 Object-Oriented Design.
CMSC 345 Fall 2000 Requirements Overview. Work with customers to elicit requirements by asking questions, demonstrating similar systems, developing prototypes,
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
The Software Development Process
Software Engineering 1 Object-oriented Analysis and Design Applying UML and Patterns An Introduction to Object-oriented Analysis and Design and Iterative.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL Requirement Engineering Virtusa Training Group 2004 Trainer: Ojitha Kumanayaka Duration : 1 hour.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Prototyping life cycle Important steps 1. Does prototyping suit the system 2. Abbreviated representation of requirements 3. Abbreviated design specification.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
CSIS 4850: CS Senior Project – Spring 2009 CSIS 4850: Senior Project Spring 2009 Object-Oriented Design.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
How to become a pragmatic programmer By Rick Mason, BusinessGrade.com.
Software Configuration Management
Software Engineering Management
Managing the Project Lifecycle
Recall The Team Skills Analyzing the Problem (with 5 steps)
Software life cycle models
An Introduction to Software Architecture
Presentation transcript:

A P RAGMATIC A PPROACH Brent Bradbury Joshua Bruning

T HE E VILS OF D UPLICATION Imposed Duplication Multiple representations of information Documentation in code Documentation and code Language issues Inadvertent Duplication Impatient Duplication Interdeveloper Duplication DRY – Don’t Repeat Yourself! Make It Easy to Reuse!

O RTHOGONALITY What is Orthogonality? Independence A Nonorthogonal System Benefits of Orthogonality Gain Productivity Changes are localized Promotes reuse M*N*cos(theta) Reduce Risk Diseased sections of code are isolated Less fragile Better tested Isolated interfaces Eliminate Effects Between Unrelated Things

O RTHOGONALITY ( CONT.) Project Teams Design Toolkits and Libraries Coding Keep your code decoupled Avoid global data Avoid similar functions Testing Documentation Living with Orthogonality

R EVERSIBILITY “Instead of carving decisions in stone, think of them more as being written in the sand at the beach.” Flexible Architecture Isolate components Soft, pliable decisions will allow cross-platform compatibility to be built in. Any specific software components should be implemented in a reversible way. If you have to use custom exception calling in C++ for example, implement it with an easily changeable macro.

T RACER B ULLETS Code That Glows in the Dark Users get to see something working early Developers build a structure to work in You have an integration platform You have something to demonstrate You have a better feel for progress Tracer Bullets Don’t Always Hit Their Target Tracer Code versus Prototyping Use Tracer Bullets to Find the Target

P ROTOTYPES AND P OST - IT N OTES Things to Prototype Architecture New functionality in an existing system Structure or contents of external data Third-party tools or components Performance issues User interface design How to Use Prototypes Correctness Completeness Robustness Style

P ROTOTYPES AND P OST - IT N OTES Prototyping Architecture Are the responsibilities of the major components well defined and appropriate? Are the collaborations between major components well defined? Is coupling minimized? Can you identify potential sources of duplication? Are interface definitions and constraints acceptable? How Not to Use Prototypes Be clear that the prototype code is disposable and poor. Be sure to communicate that prototype code is not to be deployed, and manage expectations accordingly.

D OMAIN L ANGUAGES Designing a simple parsable language as a method of capturing requirements can make development faster and more reliable. Implementing a Mini-Language Make your own grammar and language, or Extend an existing language, like Python Data Languages and Imperative Languages Data languages produce some form of data structure, and respresent configuration information. Imperative languages can be executed, and can ease program maintenance by acting as a go-between to high level scripts. Program Close to the Problem Domain

E STIMATING Learning to estimate will give you the “apparently magical” skill to determine the feasibility of a given goal. How Accurate is Accurate Enough? First assess how accurate an estimate the customer needs Choose your units accordingly-- “6 months” sounds general whereas “130 days” sounds very specific

ESTIMATING (CONT.) Where do Estimates Come From? Often from someone who has already done it, bolstered by doing the following… Understand what’s being asked Define assumptions and scope Build a Model of the System A simple mental model will allow you to think through the complexities of the proposed software. Your experience will tell you when to stop refining the model. Break the Model into Components Understand the mathematical complexity of each software component.

ESTIMATING (CONT.) Give Each Parameter A Value Decide which parameters represent critical points in execution, and calculate how much time they’ll take to execute. Calculate the Answers Use all of the small estimations to make a final, large estimation.