1 / 47

Software Project Planning

Software Project Planning. Defining the Project Writing the Software Specification Selecting a Development Plan Selecting a Testing Plan. Defining the Project. Input-Process-Output model Define the input Define the process Define the output Define the hardware

nielsens
Download Presentation

Software Project Planning

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Project Planning • Defining the Project • Writing the Software Specification • Selecting a Development Plan • Selecting a Testing Plan UHCO Graduate Course in MATLAB

  2. Defining the Project • Input-Process-Output model • Define the input • Define the process • Define the output • Define the hardware • Define the development tools UHCO Graduate Course in MATLAB

  3. Defining the ProjectInput-Process-Output model Process File File UHCO Graduate Course in MATLAB

  4. Defining the ProjectDefine the Input • What information is needed to perform the software task? • What information is fixed or assumed? • What information does the user provide? • What information is read from files? • What information is received real-time? • signals, images, responses UHCO Graduate Course in MATLAB

  5. Defining the ProjectInput Examples • Subject/Patient information • Stimulus parameters • Spreadsheet data • Image data • Data acquired from recording hardware • User’s choice of processing options • User’s choice of output options UHCO Graduate Course in MATLAB

  6. Defining the ProjectInput Methods • Graphic User Interface (GUI) Controls • radio buttons, checkboxes, pushbuttons, edit boxes, sliders, pull-down lists, menus • Command line questions and answers • Files (spreadsheet, image, database) • Acquisition hardware • analog to digital converter boards • digital input/output boards • cameras • frame-grabbers UHCO Graduate Course in MATLAB

  7. Defining the ProjectInput Worksheet • ? UHCO Graduate Course in MATLAB

  8. Defining the ProjectDefine the Process • What does the program do? • How does the program respond to the user’s input? • What is the sequence of events? • What computations take place? • How must the units be scaled? • How must the data be manipulated? UHCO Graduate Course in MATLAB

  9. Defining the ProjectProcess Examples • Produce a stimulus and/or gather results • Compute statistics on subject performance • Filter or enhance an image • Evaluate eye movement signals • Evaluate neurophysiology signals • Simulate a model • Fit data to a model UHCO Graduate Course in MATLAB

  10. Defining the ProjectProcess Methods • Sequence of events • GUI control and menu selections • Control statements (if/while/for blocks) • Data driven • Computations • MATLAB functions and toolboxes • Stimulus generation (in memory) • Psychophysics Toolbox • Cambridge Research Systems toolbox UHCO Graduate Course in MATLAB

  11. Defining the ProjectProcess Worksheet • ? UHCO Graduate Course in MATLAB

  12. Defining the ProjectDefine the Output • Data • Results • Record of input information • Record of data processing or collection • GUI • Feedback to user • Enabling/disabling controls • Experiment control UHCO Graduate Course in MATLAB

  13. Defining the ProjectOutput Examples • Data • Experiment record and results • Simulation parameters and results • Statistical or computational results • Experiment control • Stimulus and sound feedback • Triggers, shutter control • Starting/stopping devices • Capturing images or signals UHCO Graduate Course in MATLAB

  14. Defining the ProjectOutput Methods • Data Output • Text files • Binary files • Image files • Export to Microsoft Excel • GUI output • Images • Graphical plots • Changes to what is displayed on the user interface UHCO Graduate Course in MATLAB

  15. Defining the ProjectOutput Methods (continued) • Experiment Control • Stimulus Presentation • Psychophysics Toolbox • Cambridge Research Systems libraries • Serial port control messages • Data acquisition cards and libraries • Devices that support ActiveX control UHCO Graduate Course in MATLAB

  16. Defining the ProjectOutput Worksheet • ? UHCO Graduate Course in MATLAB

  17. Software Specification • Style • Purpose • Benefits • Organization UHCO Graduate Course in MATLAB

  18. Software SpecificationStyle • Uses Present Tense • Write this document as if the project already exists, and you are describing it. This approach allows your specification to serve as: • The program’s “User Guide” • The foundation of your methods section in papers • A visualization tool for making your program a reality • Use consistent names • Name of program • Experiment parameters • Captions, column headings, descriptions UHCO Graduate Course in MATLAB

  19. Software SpecificationPurpose • Document your design decisions • If programming for self: clarifies design • If hiring it done: explains to others • Organize user interface design • Describe equipment and tools • Describe format of input and output • Describe sequence of events UHCO Graduate Course in MATLAB

  20. Software SpecificationBenefits • Record of design decisions • Envision “Methods” section of resulting publication • Reminder between design, testing and use • Discussion tool for other users • What to include for different user needs • Arrangement and labeling of GUI • Prototype for software interface • Easier to rewrite document than code UHCO Graduate Course in MATLAB

  21. Software SpecificationOrganization • Introduction • User Interface (input, output) • Parameters (input) • Typical Sequence (process) • Computations (process) • Graphic Results (output) • File Formats (input, output) • References UHCO Graduate Course in MATLAB

  22. Software Specification“Introduction” Section • Describes purpose of software • Gives overview of software • Introduces specific terminology • Includes relevant background in literature • Describes overview of hardware • Describes development tools • MATLAB, Psychophysics Toolbox, etc. UHCO Graduate Course in MATLAB

  23. Software Specification“User Interface” Section • Gives an overview of GUI layout • Organization of GUI windows • Arrangement of GUI controls • Lists options or preferences • Give brief description of purpose of each menu or control, but describe specific details in the most appropriate section that follows. UHCO Graduate Course in MATLAB

  24. Software Specification“Parameters” Section • Describes parameters in detail • Provides details that relate to parameters (rather than in GUI section) • purpose • units • default values • acceptable ranges • Summarize parameters in a table for quick reference UHCO Graduate Course in MATLAB

  25. Software Specification“Typical Sequence” Section • Describes the typical sequence of events • Describes what happens when the user makes different selections • Describes error handling • For repeating operations, (psychophysics trials, batch processes) describes sequence as a numbered list UHCO Graduate Course in MATLAB

  26. Software Specification“Computations” Section • Describe computations as you would in the methods section of a paper • Supply all necessary information to perform the computations • For extensive, complex computations • Reference descriptive documents • Reference existing software • Give details in an appendix rather than make this section excessively long UHCO Graduate Course in MATLAB

  27. Software Specification“Graphic Results” Section • Plots • Axes and scaling • Axes titles • Markers and lines • Images • Data format (uint8, double, indexed) • True color or colormap preferences • Meaning of intensity scale • Overlays (i.e. pupil boundary, centroids) UHCO Graduate Course in MATLAB

  28. Software Specification“File Formats” Section • Includes both input and output file formats • Describes the rows and columns of tab-delimited text files or Excel output • Identifies graphic file format (TIFF, JPG) • Describes any naming conventions • Indicates if files are to be overwritten or appended UHCO Graduate Course in MATLAB

  29. Software Specification“References” Section • Contact information for software tools • Contact information for special hardware • References to related manuals • hardware • software • References to related publications • computations • experiment methods UHCO Graduate Course in MATLAB

  30. Development Plan • The Chronological Approach • The Availability Approach • The Feasibility Approach • The Generic Approach • The ‘They Did It This Way’ Approach • Select a Plan UHCO Graduate Course in MATLAB

  31. Development PlanThe Chronological Approach • Add each block of code in sequential order • First write code that receives all the inputs • Next write code that does first stage processing • Next add code that depends on first stage • Continue until all results are available • Produce results and record them to files UHCO Graduate Course in MATLAB

  32. Development PlanThe Availability Approach • Some code depends on hardware. Write that code when new hardware arrives or when existing hardware is not otherwise scheduled for subjects. • Some code depends on software. Order software tools early. • Write user interface code or file formatting code at any time. UHCO Graduate Course in MATLAB

  33. Development PlanThe Feasibility Approach • Sometimes it is not clear that a new experiment system or simulation will work. If it does not, then there is no purpose to adding a fancy user interface or producing output files. Start with the part that you are least confident will work. Once you prove that part works, the rest of the program development is worth the effort. UHCO Graduate Course in MATLAB

  34. Development PlanThe Generic Approach • If you must wait on some aspect of software design, it can be beneficial to write routines that you expect to use over and over: • Writing or reading standard file types • Unit or file conversions • Subject response or feedback methods • Standard stimuli UHCO Graduate Course in MATLAB

  35. Development Plan“They Did It This Way” • Research software can often be changed in minor ways to perform similar yet distinct experiments. • Re-using code can save time. • Be sure to UNDERSTAND the content and format of the parameters and results for existing code that you re-use. UHCO Graduate Course in MATLAB

  36. Development PlanChoose a Plan • Choose a Plan • Considering all the constraints and approaches, decide what parts of your code to implement, in what order. • Estimate how long each part will require for coding • Keep the scope realistic UHCO Graduate Course in MATLAB

  37. Testing Plan • All software has “bugs” • Create a plan for testing, based on • Definition of the program’s inputs, processes and outputs • Software Specification • Error checking is a subset of testing • Include error checking as a part of your testing plan, to verify that your software handles potential errors well UHCO Graduate Course in MATLAB

  38. Testing Plan Input-Process-Output Model • Verify Inputs • Do files open properly? • Is it open in another application? • Identify bad file formats • Did user open the wrong text file? • Did the user type incorrectly? • Did the user forget to enter some information? • Do the input devices initialize properly? • Create situations that fail UHCO Graduate Course in MATLAB

  39. Testing PlanInput-Process-Output Model • Verify Processes • Computations: start with data sets that produce known results • Break up complex processes into smaller units that can be tested on their own • Unit conversions: display intermediate results UHCO Graduate Course in MATLAB

  40. Testing Plan Input-Process-Output Model • Verify Outputs • Measure brightness/size/timing of stimuli • Examine output files with another application • Always examine first runs of a new release before starting full-scale collection for a study • Compare results with expected results from known data sets UHCO Graduate Course in MATLAB

  41. Testing PlanCompare with Specification • User Interface: Ask naïve users to try your program • Parameters: Does the program alert users to invalid values? • Computations • Graphic Results • File Formats UHCO Graduate Course in MATLAB

  42. Testing PlanMATLAB Methods • Remove semicolons and view values • If removing the semicolon generates too much output, use disp() to show specific results that are meaningful • Generate intermediate .mat files that verify each step of your process • Use tic and toc to verify timing • Examine the return value from functions that provide status or error codes UHCO Graduate Course in MATLAB

  43. Software Project Planning • Conclusions • Define the software as clearly as possible before starting the code. It is generally easier to write the documents than the code • Input-Process-Output worksheets • Formal Specification • Plan Development and Testing • Define managable stages and steps • Incorporate testing into design of code UHCO Graduate Course in MATLAB

  44. Thanks for your attention. Questions? UHCO Graduate Course in MATLAB

  45. Defining the ProjectInput Worksheet • ? UHCO Graduate Course in MATLAB

  46. Defining the ProjectProcess Worksheet • ? UHCO Graduate Course in MATLAB

  47. Defining the ProjectOutput Worksheet • ? UHCO Graduate Course in MATLAB

More Related