34
Software Project Software Project Planning Planning Defining the Project Defining the Project Writing the Software Writing the Software Specification Specification Planning the Development Stages Planning the Development Stages Testing the Software Testing the Software

Software Project Planning Defining the Project Writing the Software Specification Planning the Development Stages Testing the Software

Embed Size (px)

Citation preview

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 ProjectInput WorksheetInput Worksheet

??

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 ProjectProcess WorksheetProcess Worksheet

??

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

Defining the ProjectDefining the ProjectOutput WorksheetOutput Worksheet

??

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