software development at academia, government labs, industry
DESCRIPTION
Software Development at Academia, Government Labs, Industry. John Barker Agenda/Questions: How can the three share development? Possibly cooperation like designer chemistry software? What are the technical challenges? What is the software we are talking about anyways? Who are the customers? - PowerPoint PPT PresentationTRANSCRIPT
Gerhard Klimeck
High Performance Computing Group
GROUPSoftware Development atAcademia, Government Labs, Industry
John Barker Agenda/Questions:
• How can the three share development?
•Possibly cooperation like designer chemistry software?
• What are the technical challenges?
• What is the software we are talking about anyways?
• Who are the customers?
•Academia: students, who learn programming and science/engineering.+ new physical effects, push the science envelope - typically no tool development, small building blocks, fast and dirty
•Government / Government Funded Industry: Government+ software performs the required tasks- typically no realistic commercialization plan
• Industry: Industry, Government, Students=> old style: piecemeal university software together=> new style: build-up new software where there is a commercial market+ stable, functional, documented, maintained, supported- no software / science / engineering research
Gerhard Klimeck
High Performance Computing Group
GROUPA Simulation Tool’s Facets: Physics, Formalism/Technology, and
Marketing
Res
onan
ce
Find
erHybrid
C, FORTRAN
FORTRAN90
Software Engineering
Object-Oriented Principles
Graphica
l
User In
terfa
ce
Material Param.
Database
Batch Run
InterfaceLibrary of Examples
NovelGrid Gen.
Documentation
Tool
Band-
structure
Chargin
g
InterfaceRoughness
Phonons
Alloy
Disord
er
IonizedDopants
Physics
FormalismGreen Function Theory
& Boundary Cond.
• Can one use the strengths of the three software developers academia / government / industry?
• Academia: need to get serious about interacting with government / industry on REAL development
• Don’t re-invent the wheel every time, colaborate on existing packages
• Government/Industry: expect real deliverables from academia not just formulas on paper.
20/50/ 2
• • ••• •
Impurity
Phonon
InterfaceElectron
Transport/Engineering
Quantum Mechanics / Physics
MarketingModel Devices Paying Customers Care About
Gerhard Klimeck
High Performance Computing Group
GROUP
Software Structure :Hybrid C, FORTRAN, and FORTRAN 90
• Advantages of C:
• flexible data design, fast prototyping.
• simple hook-up of the graphical user interface.
• close to the UNIX system level for job scheduling.
• Advantages of FORTRAN
• speed for floating point arithmetic.
• 4x speed-up for the same algorithm comparing C and F77 on HP.
• Advantages FORTRAN90 = FORTRAN + ...
• standardized vector and matrix arithmetic.
• data structures.
• simple parallelization.
GUI
FF
C
F90F90
Motif
Gerhard Klimeck
High Performance Computing Group
GROUP
Revision Control Systems (RCS, CVS)
User gekco: locks and edits file.c r1.3he creates the new r1.4
Users lake, blanks, etc.:can look at the latest publicrevision of file.c (r1.3)
• Several people - one piece of code ?
• Break up the source code into (many) files.• Use a central library system.
• All developers can look at the latest versions. • The files cannot be changed.• Must check out and lock a file before editing.
FORGET about PRIVATE CODE VERSIONS!!!
Library of all files and all revisions
Emacsfacilitates
thecheck-out
&check-in
file.c r1.4 file.c r1.3
r1.2r1.1
file.c r1.4 file.c r1.3
r1.2r1.1
file.c r1.4 file.c r1.3
r1.2r1.1
co file.c
co -l file.c
ci file.c
Gerhard Klimeck
High Performance Computing Group
GROUP
Generic Data Structure I/O
potential=Hartreehbarovertau=0.0066Ec=FALSE< start=45, end=69 >
Translator
Data StructurePotType potentialreal hbarovertauBoolean EcRangeStruct NonEq
Graphical User InterfaceReadCre
ate
File/Batch User InterfaceReadCreate
Dynamic GUI Design.• data structure • member descriptor -> I/O for GUI or files
TheoristSoftwareEngineer
Gerhard Klimeck
High Performance Computing Group
GROUP
Novel Interactive Documentation Tool
• Pseudocode is a step by step description of a program in a natural language (high level and low level)
• Maintain pseudocode and code in one document -> easy to keep it up-to-date
• Generated automatically from comments in the code
• Cross references to
• theory description
• further pseudocode
• the actual code