Software Project PlanningSoftware Project Planning
Defining the ProjectDefining the Project
Writing the Software SpecificationWriting the Software Specification
Planning the Development StagesPlanning the Development Stages
Testing the Software Testing the Software
Defining the ProjectDefining the Project
Input-Process-Output modelInput-Process-Output model
Define the inputDefine the input
Define the processDefine the process
Define the outputDefine the output
Define the hardwareDefine the hardware
Define the development toolsDefine the development tools
Defining the ProjectDefining the ProjectInput-Process-Output modelInput-Process-Output model
Process
File
File
Defining the ProjectDefining the ProjectDefine the InputDefine the Input
What information is needed to perform the What information is needed to perform the software task?software task?
What information is fixed or assumed?What information is fixed or assumed?
What information does the user provide?What information does the user provide?
What information is read from files?What information is read from files?
Defining the ProjectDefining the ProjectInput ExamplesInput Examples
Subject informationSubject information
Stimulus parametersStimulus parameters
Spreadsheet data Spreadsheet data
Image data Image data
Data acquired from recording hardwareData acquired from recording hardware
User’s choice of processing optionsUser’s choice of processing options
User’s choice of output optionsUser’s choice of output options
Defining the ProjectDefining the ProjectInput MethodsInput Methods
Dialog boxesDialog boxes radio buttons, checkboxes, pushbuttons, edit radio buttons, checkboxes, pushbuttons, edit
boxes, sliders, pull-down lists, menusboxes, sliders, pull-down lists, menus
Command line questions and answersCommand line questions and answers
FilesFiles
Data acquisition cardsData acquisition cards
Frame grabber cardsFrame grabber cards
Defining the ProjectDefining the ProjectDefine the ProcessDefine the Process
What is the sequence of events?What is the sequence of events?
What are the computations?What are the computations?
How must the data be rearranged?How must the data be rearranged?
How must the units be scaled?How must the units be scaled?
Defining the ProjectDefining the ProjectProcess ExamplesProcess Examples
Produce a stimulus and/or gather resultsProduce a stimulus and/or gather results
Compute statistics on subject performanceCompute statistics on subject performance
Filter or enhance an imageFilter or enhance an image
Evaluate eye movement signalsEvaluate eye movement signals
Evaluate neurological signalsEvaluate neurological signals
Simulate a modelSimulate a model
Fit data to a modelFit data to a model
Defining the ProjectDefining the ProjectProcess MethodsProcess Methods
Sequence of eventsSequence of events Menu drivenMenu driven Dialog box selectionsDialog box selections Data dependentData dependent
Scripts or functionsScripts or functions
Matlab toolboxesMatlab toolboxes
MATVISMATVIS
Psychophysics ToolboxPsychophysics Toolbox
Defining the ProjectDefining the ProjectDefine the OutputDefine the Output
Record of input informationRecord of input information
Record of data processing or collectionRecord of data processing or collection
Temporary feedback during data Temporary feedback during data processing or collectionprocessing or collection
Defining the ProjectDefining the ProjectOutput ExamplesOutput Examples
Stimulus controlStimulus control
Experiment resultsExperiment results
Simulation resultsSimulation results
Computational resultsComputational results
Defining the ProjectDefining the ProjectOutput MethodsOutput Methods
Text filesText files
Binary filesBinary files
Image filesImage files
Graphical plotsGraphical plots
Stimulus control signalsStimulus control signals
Changes to the user interfaceChanges to the user interface
Software SpecificationSoftware Specification
PurposePurpose
BenefitsBenefits
OrganizationOrganization
Software SpecificationSoftware SpecificationPurposePurpose
Document your design decisionsDocument your design decisions If programming for self: clarifies designIf programming for self: clarifies design If hiring it done: explains to othersIf hiring it done: explains to others
Organize user interface designOrganize user interface design
Describe equipment and toolsDescribe equipment and tools
Describe format of input and outputDescribe format of input and output
Describe sequence of eventsDescribe sequence of events
Software SpecificationSoftware SpecificationBenefitsBenefits
Record of design decisionsRecord of design decisions Envision “Methods” section of resulting Envision “Methods” section of resulting
publicationpublication Reminder between design, testing and useReminder between design, testing and use
Discussion tool for other usersDiscussion tool for other users What to include for different user needs What to include for different user needs Arrangement and labeling of interfaceArrangement and labeling of interface
Prototype for software interfacePrototype for software interface Easier to rewrite than codeEasier to rewrite than code
Software SpecificationSoftware SpecificationOrganizationOrganization
IntroductionIntroduction
User interface User interface
ParametersParameters
Sequence of events Sequence of events
ComputationsComputations
Graphic resultsGraphic results
File formatsFile formats
Reference informationReference information
Software SpecificationSoftware SpecificationOrganization: IntroductionOrganization: Introduction
Describes purpose of softwareDescribes purpose of software
Gives overview of softwareGives overview of software
Describes overview of hardwareDescribes overview of hardware
Describes development toolsDescribes development tools MATLABMATLAB Psychophysics ToolboxPsychophysics Toolbox VSG2/5VSG2/5 ActiveXActiveX
Software SpecificationSoftware SpecificationOrganization: User interfaceOrganization: User interface
Organization of menusOrganization of menus
Organization of dialog boxesOrganization of dialog boxes
Arrangement of items on dialog boxesArrangement of items on dialog boxes
Options or preferences Options or preferences
May be appropriate to incorporate these May be appropriate to incorporate these details in the other sectionsdetails in the other sections
Software SpecificationSoftware SpecificationOrganization: ParametersOrganization: Parameters
Describe parametersDescribe parameters purposepurpose unitsunits default valuesdefault values acceptable rangesacceptable ranges
Summarize parameters in a table for quick Summarize parameters in a table for quick referencereference
Software SpecificationSoftware SpecificationOrganization: SequenceOrganization: Sequence
Describe the sequence of events as a Describe the sequence of events as a numbered listnumbered list
Describe what happens when the user Describe what happens when the user makes different selectionsmakes different selections
Describe error handlingDescribe error handling
Software SpecificationSoftware SpecificationOrganization: ComputationsOrganization: Computations
Describe computations as you would in Describe computations as you would in the methods section of a paperthe methods section of a paper
Supply all necessary information to Supply all necessary information to perform the computationsperform the computations
For complex computationsFor complex computations reference descriptive documents reference descriptive documents reference existing software reference existing software
Software SpecificationSoftware SpecificationOrganization: Graphic ResultsOrganization: Graphic ResultsPlotsPlots Axes and scaling Axes and scaling Axes titlesAxes titles Markers and linesMarkers and lines
ImagesImages Data format (uint8, double, indexed)Data format (uint8, double, indexed) ColormapColormap Meaning of intensity scaleMeaning of intensity scale
Software SpecificationSoftware SpecificationOrganization: File FormatsOrganization: File Formats
Describe the rows and columns of tab-Describe the rows and columns of tab-delimited text filesdelimited text files
Select graphic file format for outputSelect graphic file format for output
Include both input and output file formatsInclude both input and output file formats
Describe any naming conventionsDescribe any naming conventions
Indicate if files are to be overwritten or Indicate if files are to be overwritten or appendedappended
Software SpecificationSoftware SpecificationOrganization: Reference Info.Organization: Reference Info.Contact information for software toolsContact information for software tools
Contact information for special hardwareContact information for special hardware
References to related manualsReferences to related manuals hardwarehardware softwaresoftware
References to related publications References to related publications computationscomputations experiment methodsexperiment methods
Development StagesDevelopment Stages
The Chronological ApproachThe Chronological Approach
The Availability ApproachThe Availability Approach
The Feasibility ApproachThe Feasibility Approach
The Generic ApproachThe Generic Approach
The ‘They Did It This Way’ ApproachThe ‘They Did It This Way’ Approach
Development StagesDevelopment StagesThe Chronological ApproachThe Chronological Approach
Add each block of code in sequential orderAdd each block of code in sequential order First write code that receives all the inputsFirst write code that receives all the inputs Next write code that does first stage Next write code that does first stage
processingprocessing Next add code that depends on first stageNext add code that depends on first stage Continue until all results are availableContinue until all results are available Produce results and record them to filesProduce results and record them to files
Development StagesDevelopment StagesThe Availability ApproachThe Availability Approach
Some code depends on hardware. Write Some code depends on hardware. Write that code when new hardware arrives or that code when new hardware arrives or when existing hardware is not otherwise when existing hardware is not otherwise scheduled for subjects.scheduled for subjects.
Some code depends on software. Order Some code depends on software. Order software tools early.software tools early.
Write user interface code or file formatting Write user interface code or file formatting code at any time.code at any time.
Development StagesDevelopment StagesThe Feasibility ApproachThe Feasibility Approach
Sometimes it is not clear that a new Sometimes it is not clear that a new experiment system or simulation will work. experiment system or simulation will work. If it does not, then there is no purpose to If it does not, then there is no purpose to adding a fancy user interface or producing adding a fancy user interface or producing output files. Start with the part that you are output files. Start with the part that you are least confident will work. Once you prove least confident will work. Once you prove that part works, the rest of the program that part works, the rest of the program development is worth the effort.development is worth the effort.
Development StagesDevelopment StagesThe Generic ApproachThe Generic Approach
If you must wait on some aspect of If you must wait on some aspect of software design, it can be beneficial to software design, it can be beneficial to write routines that you expect to use over write routines that you expect to use over and over:and over: Writing or reading standard file typesWriting or reading standard file types Unit or file conversionsUnit or file conversions Subject response or feedback methodsSubject response or feedback methods Standard stimuliStandard stimuli
Development StagesDevelopment Stages“They Did It This Way”“They Did It This Way”
Research software can often be changed Research software can often be changed in minor ways to perform similar yet in minor ways to perform similar yet distinct experiments.distinct experiments.
Re-using code can save time.Re-using code can save time.
Be sure to UNDERSTAND the content and Be sure to UNDERSTAND the content and format of the parameters and results for format of the parameters and results for existing code that you re-use.existing code that you re-use.
Testing the SoftwareTesting the Software
Verify units of measureVerify units of measure
Verify format of filesVerify format of files
Ask naïve users to try your user interfaceAsk naïve users to try your user interface
Measure brightness/size/timing of stimuli Measure brightness/size/timing of stimuli
Perform calculations on known data setsPerform calculations on known data sets