Phoenix Software Projects Larry Beaty © 2007 Larry Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is.

Slides:



Advertisements
Similar presentations
© 2005 by Prentice Hall Chapter 13 Finalizing Design Specifications Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F. George.
Advertisements

Developed by Reneta Barneva, SUNY Fredonia
Ch.1 Introduction to Software Engineering The Evolution 1.1 The Evolving Role of Software 1/15 In the early days: User Computer Software = Place a sequence.
Configuration management
1 G2 and ActiveSheets Paul Roe QUT Yes Australia!
CS0004: Introduction to Programming Visual Studio 2010 and Controls.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Programming Creating programs that run on your PC
Programming System development life cycle Life cycle of a program
February 21, 2008 Center for Hybrid and Embedded Software Systems Driving Application: 4D Tele-immersion Future Work Though.
Computer Programming and Basic Software Engineering 4. Basic Software Engineering 1 Writing a Good Program 4. Basic Software Engineering 3 October 2007.
Program Flow Charting How to tackle the beginning stage a program design.
Program Flow Charting How to tackle the beginning stage a program design.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
1 CMSC 132: Object-Oriented Programming II Software Development III Department of Computer Science University of Maryland, College Park.
Copyright © 2001 by Wiley. All rights reserved. Chapter 1: Introduction to Programming and Visual Basic Computer Operations What is Programming? OOED Programming.
Programming Paradigms Imperative programming Functional programming Logic programming Event-driven programming Object-oriented programming A programming.
Copyright © 2011 Pearson Education, Inc. Publishing as Prentice Hall 1 Building Applications.
Your Interactive Guide to the Digital World Discovering Computers 2012.
October 2006 © Copyright 2006, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved.
Introduction to Programming Prof. Rommel Anthony Palomino Department of Computer Science and Information Technology Spring 2011.
Introduction 01_intro.ppt
Program development & programming languages Chapter 13.
October 30, 2008 Extensible Workflow Management for Simmod ESUG32, Frankfurt, Oct 30, 2008 Alexander Scharnweber (DLR) October 30, 2008 Slide 1 > Extensible.
The Design Discipline.
CS413: Java Programming language Applications Applets
M1G Introduction to Programming 2 4. Enhancing a class:Room.
An Introduction Chapter Chapter 1 Introduction2 Computer Systems  Programmable machines  Hardware + Software (program) HardwareProgram.
The Phoenix Project Introduction – El Nolley Sensors – Carl Schu Application Software – Larry Beaty Usage – Germaine Cornelissen © 2007 Ellis S. Nolley.
Implementation Considerations Yonglei Tao. Components of Coding Standards 2  File header  file location, version number, author, project, update history.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
Jaeki Song ISQS6337 JAVA Lecture 16 Other Issues in Java.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
RITA demonstration Juha Taina, Antti Tevanlinna. Rita prototype status Following the preliminary specifications we started Rita prototype implementation.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Programming Lifecycle
Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila.
October, 2006 © Copyright 2006, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved.
History of C 1950 – FORTRAN (Formula Translator) 1959 – COBOL (Common Business Oriented Language) 1971 – Pascal Between Ada.
Just as there are many human languages, there are many computer programming languages that can be used to develop software. Some are named after people,
SE: CHAPTER 7 Writing The Program
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
TEST-1 6. Testing & Refactoring. TEST-2 How we create classes? We think about what a class must do We focus on its implementation We write fields We write.
© 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 10 Slide 1 Chapter 13 Finalizing Design Specifications.
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 Program Planning and Design Important stages before actual program is written.
BOĞAZİÇİ UNIVERSITY DEPARTMENT OF MANAGEMENT INFORMATION SYSTEMS MATLAB AS A DATA MINING ENVIRONMENT.
12/14/2015 Concept of Test Driven Development applied to Embedded Systems M. Smith University of Calgary, Canada 1 Automated Testing Environment Concepts.
Test Stubs... getting the world under control. TDD of State Pattern To implement GammaTown requirements I CS, AUHenrik Bærbak Christensen2.
Object Oriented Analysis and Design 1 Chapter 9 From Design to Implementation  Implementation Model  Forward, Reverse, and Round-Trip Engineering  Mapping.
Computing R&D and Milestones LHCb Plenary June 18th, 1998 These slides are on WWW at:
(1) Test Driven Development Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu.
Chapter 13 Finalizing Design Specifications
Project Deliverables CIS 4328 – Senior Project 2 And CEN Engineering of Software 2.
Evolution of C and C++ n C was developed by Dennis Ritchie at Bell Labs (early 1970s) as a systems programming language n C later evolved into a general-purpose.
Software Engineering Lecture 11 Software Testing Presenter: Josef Hallberg 1.
CSE 219 Final exam review.
Programming Languages
Testing All Input is Evil pt 2.
An Introduction to Programming and VB.NET
Introduction to Computers and Java
Many-core Software Development Platforms
SDLC Model A framework that describes the activities performed at each stage of a software development project.
Design and Programming
Automated Testing Environment
Chapter 7 –Implementation Issues
Testing.
Chapter 13 Finalizing Design Specifications
Testing.
Presentation transcript:

Phoenix Software Projects Larry Beaty © 2007 Larry Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved.

© Copyright 2005, Christopher J. Adams. © Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Architectural components implies 3 software projects/components Embedded Software Analysis Software (Sphygmochron) Reference Data Workstation and Database

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Software Development Embedded Analysis Reference I II Vision     Requirements     Definition  Design   Code/Test  Documentation Post-release Support Languages C VB Java Fortran DB DB, C/C++ Java  Indicates some activity has taken place or is in progress

© Copyright Christopher J. Adams Copying and distribution of this document is permitted in any medium, provided this notice is preserved. 13 March 20054

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Embedded Software Project Example Project Deliverables  Selection of the development environment and microprocessor platform.  Design of hardware prototype.  Design of interface to sensor: RF link.  Layout and fabrication of a printed circuit board containing the designs  Bill of material  Evaluation of the completed prototypes.  Public invention disclosure and release.  A written report.

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Analysis Software I Analysis software currently is VB macro in Excel New code is expected to be developed via Test Driven Development –COMUnit framework was adapted –Example tests developed Runs today as spreadsheet and web CGI Produces Sphygmochron reports and charts

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Analysis Software II Expected to replace VB/spreadsheet Expected to extend analysis algorithms Expected to be Java Prototype work defined, not started will include frameworks for:  Numerical analysis  2D graphics  Persistence  Error handling  Report generation  Data interchange — import of collected data and export of analyses

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May 20078

© Copyright 2005, Christopher J. Adams. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May 20079

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Definition: Test Driven Development A software development process –Not a testing technique, per se, but depends heavily on testing as a tool Write tests first – the tests determine what code is to be written Testing is done in a fine-grained fashion

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Cost of development Time CostCost Traditional TDD

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Technique Write a single failing test Run the failing test –“Proves” that the test is correct Write minimal code that fixes the test Run the test again –“Proves” that the code is correct Refactor towards a better design Run the test again –“Proves” that the better code is still correct

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Elements of the test execution User Interface

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Elements of the test execution User Interface

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May The function to be tested Demo testing part of a standard deviation function in the original spreadsheet code The calculation is done in two steps, according to a standard deviation formula often used in programs that keep “running sums” as they traverse over data: –Add up the samples and the sum of samples –“Finish” the calculation according to this formula:

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Public Sub testFinishStdDevWith3DataPoints(oTestResult As TestResult) Dim result As Double ' the data points are 7,8,9 result = FinishStdDev(3, , ) oTestResult.AssertEqualsDouble 1, result, 0.1 End Sub The first Test function

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Write stub function Doesn’t actually compute the return value yet Function FinishStdDev(N, sumOfSamples, sumOfSquares) FinishStdDev = 0 End Function

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Run tests, test fails

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Implement function to be tested Here’s the function from the original Sphygmochron spreadsheet. I’m leaving a few lines commented out because we don’t need them yet. (I’m “implementing” the smallest possible bit of the code to make the test pass.) Function FinishStdDev(N, sumOfSamples, sumOfSquares) temp = ((N * sumOfSquares) - (sumOfSamples ^ 2)) / (N * (N - 1)) 'If temp < 0 Then ' temp = temp * -1 'End If FinishStdDev = Sqr(temp) End Function

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Run tests, test now passes

© Copyright 2007, Larry A. Beaty. Copying and distribution of this document is permitted in any medium, provided this notice is preserved. May Wrap-up I took 4 lines of code from the original Sphygmochron code and made it a testable function I found a divide-by-zero error, an apparently unnecessary and poorly-coded “absolute value” function, and a missed opportunity for detecting bad input data, all in what we thought were 4 correct lines of code Refactoring tests gave me a very easy (1-line) mechanism to use to write future tests for this function If any future programmer changes the function, my tests prevent from breaking functionality that I know is important today TDD enabled me to do this by encouraging thinking about valuable test cases before implementing the parts of the function