Software Architecture for LabVIEW

advertisement
How to become a
LabVIEW Professional
and what to expect from your job
Dr. Jan Jacob
Ohio State University, July 29th 2015
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
Introduction
• Jan Jacob
• 1999 - 2007 Physics Diploma (University of Hamburg)
Preparation and Characterization of Side-Gated InAs Spinfilters
• 2007 - 2009 Ph. D. (University of Hamburg)
All-Electrical Spin-Filters
• 2009 – 2012 Postdoc (University of Hamburg)
Experiments, Theory, and Simulations in Semiconductor Spintronics
together with Ohio State, NI, Texas A&M,
U Bochum, U Würzburg
Introduction
• Since 2013 at Werum Software & System AG in
Lüneburg, Germany
• 2013 – 2014 Project Manager
– Wind Tunnel Control Systems
– Maritime Data Acquisition Systems
• Since 2015 Program Manager
– Measurement and Test Systems
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
LabVIEW 101 – and then?
• Lifelong learning 
• Training courses
• Online resources
• Open Source Community
• Community gatherings
Lifelong learning
• You will never be done with learning something new about
software development
• Your chosen development environment (LabVIEW) is
constantly evolving
• Your peers constantly generate new ideas and concepts
• You constantly improve your own skills by using your tools
• And: Don’t forget to share your knowledge!!!
Training Courses
• National Instruments has an extensive set of training
courses for LabVIEW
–
–
–
–
–
–
–
–
–
–
–
Core 1, Core 2
Core 3
LabVIEW Connectivity
Object-Oriented Design and Programming in LabVIEW
Managing Software Engineering in LabVIEW
Advance Architectures in LabVIEW
LabVIEW FPGA
LabVIEW Realtime 1 & 2
LabVIEW Machine Vision
Data Acquistion and Signal Conditioning
and many more…
Training Courses
• Courses can be taken at NI headquarters in Austin, TX
• Courses are offered at local NI Alliance Partners
• Courses can be taken online
• Several online courses are FREE for all users of an academic site license!
Online Resources
• General information: ni.com/labview
• Support: ni.com/support
– Manuals, Download Software, Tutorials, Examples
• Don‘t forget: your academic site license comes with full
phone support!
 call them, if there‘s a problem!
• Advanced Application Development: ni.com/largeapps
• CompactRIO Developer‘s Guide:
ni.com/pdf/products/us/fullcriodevguide.pdf
Online Resources
• NI Community: ni.com/community/
– Forums: forums.ni.com
– Groups: ni.com/groups
– Idea Exchange: ni.com/ideas
• Great Source for Reference Designs and Code
Libraries provided by NI System Engineering:
http://forums.ni.com/t5/Reference-DesignDiscussions/ct-p/ReferenceDesignDiscussions
Open Source Community
• Open Source: Software developed by nice guys, who want
to share their work with the rest of the world
• Be careful:
– Can be buggy
– Has licenses attached (do NOT breach license agreements!)
• Resources:
– OpenG
– LAVA
– All (or most) tools can be downloaded and installed using the VI
Package Manager (included in newer LabVIEW versions –
otherwise download from JKI.net)
Community gatherings
• NI Week
– 1st Week of August in Austin, TX, 5000+ attendees
• NI Days
– October/November, Chicago, Boston, Toronto…
• LabVIEW Developer Days
– April/May, 14 Cities (closest: Cincinnati)
• Seminars and User Group Meetings
– All year long, regional and virtual
• Summer of LabVIEW WebCast Series
• WebCasts on demand (800+)
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
Software Architecture in LabVIEW
• Are you a software architect???
(probably yes – at least to some extend…)
• It’s basically the same as in all languages 
• Different levels of architecture
–
–
–
–
–
System architecture
Hardware architecture
Software architecture
Architecture of the whole software
Architecture of a single process of the software…
• Here: Last three bullets
Software Architecture in LabVIEW
• Disclaimer: This is not a substitution for the
Advanced Architectures course!
• Very brief overview / reminder of some basic
concepts
• If you know what’s on the next slides good!
If not  enjoy some more lifelong learning ;-)
Software Architecture in LabVIEW
• Concepts:
– Data Flow
– State Machine
– Master / Slave
– Producer / Consumer
– Queued Message Handler / Queued State
Machine
– Object Oriented Pattern
(becoming more and more important!)
Software Architecture in LabVIEW
• Do not re-invent the wheel!
• Use design-patterns to write code that is easily understood by other
developers
• Rely on proven and well tested concepts
• But: Don’t use them without thinking!
• And: tailor your design patterns to your needs!
•
•
•
•
 start from common design patterns
 extend them to meet your specific needs
 keep the extensions modular, so that you can re-use your code
 keep your code well documented
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
General Software Development
Guidelines
• Always have the full software lifecycle in
mind!
– Specification
– Development
– Testing
– Deployment
– Routine Operation
– Maintenance / Support
– Expansion
General Software Development
Guidelines
• Write a specification! (even for smaller problems)
– Thinking about your requirements before
implementing code ensures that you have a well
defined picture of the problem
– This helps to get clear requirements that are testable
– This allows to define a suitable software architecture
– This avoids to forget important features
General Software Development
Guidelines
• Use Source Code Control!
– Check in / check out your code
– Restore previous version
– Work together on larger projects
– Document changes to the code
– Merge / Diff versions of code
– Create branches, if you want to try something new
– Create tags for release versions
General Software Development
Guidelines
• Test your code!
– Unit test for each function
– Integration tests for the whole software
– Test as early as possible
• Why?
– You want reliable software!
– You want to be sure that your code really does what
you specified earlier!
– Test cost (time) of fixing a bug increases along the
timeline of the project!
General Software Development
Guidelines
• Manage your builds!
–
–
–
–
Nightly build
Latest stable version
Beta versions
Write release notes
• Why?
– You don’t want to work with an old buggy version!
– You want to ensure that you’re only working with a stable
version and not with risky trials from last night!
– You want to be sure which version you’re using, and what
it does!
General Software Development
Guidelines
• Keep your code modular!
– One process for one set of functions
– Have common interfaces / interface types
– Keep functions independent of interfaces, work
with “connectors” instead
– Keep processes flexible by applying configuration
to them instead of hard-coding settings
– Separate functions and user interface
– Think in abstraction layers
General Software Development
Guidelines
• Keep your code clear and easy to maintain!
– Invest in error handling
– Provide descriptive and meaningful feedback on
errors, warnings, messages
– Allow easy tracking of bugs by having a well
defined task for each function of your code (more
VIs is often better!)
– Be careful when fixing something in place A! it
could affect places B, C, D,…!
General Software Development
Guidelines
• Keep your code extensible!
– Going from N to N+1 should be easy!
•
•
•
•
•
•
Add function
Add interface
Add hardware
Add process
Add instance of process
…
General Software Development
Guidelines
• The whole package: Continuous Integration!
• Combine
– Source Code Control
– Requirements Tracking
– Build Management
– Deployment Management
– Code Reuse and 3rd Party Code Management
General Software Development
Guidelines
• General Workflow
–
–
–
–
–
–
–
–
Repository commit triggers Build Management
BM pulls code from repository
BM pulls code from Package Management
BM triggers build machine
Build is executed
Tests are run
Requirements Management is updated
Package Management or delivery directory is updated
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
Prepare for a
Software Development Job
• Basically: Do the same as for any other job application
• General remark: form and content of an application letter,
CV, etc. is irrelevant for your personal skills
• BUT: on the other side aren’t highly qualified scientists and
engineers, but pretty simple-minded HR employees!!!
• Follow the rules
• Learn how to write your paperwork in such a way that they
like it!
(at least if you apply at a large company…)
Prepare for a
Software Development Job
• What might happen in the application
process?
– Written application
•
•
•
•
On your own initiative
On a open position advertisement
Via Mail / E-Mail (free form)
Via online portal (has to fit their form…)
– Assessment center
– Interview
– Negotiation
Prepare for a
Software Development Job
• What helps (at least, if your applications makes its way to MY
desk)?
– Plausible timeline in the CV
• No empty spots, studied in the expected time, did not start N studies and
didn’t finish any
• If your CV isn’t a straight line, but has its turning points  EXPLAIN THEM!
– Proven knowledge of relevant software development tools (job
dependent)
– But, MORE IMPORTANT: Proven general software development
knowledge
– Good results in relevant courses
• Apply at financial / insurance company  there should be some economy in
your coursework
• Apply at a DAQ-company  there should be some physics, electronics, etc.
Prepare for a
Software Development Job
• What helps (at least, if your applications
makes its way to MY desk)?
– Real-World work experience
– Demonstrated willingness of travel
– Proven team-compatibility
Prepare for a
Software Development Job
• What helps in an assessment center?
– Basically NOTHING…!
– Follow the rules and play their game
– Prepare yourself with resources about assessment
centers in general and at the specific employer in
particular
Prepare for a
Software Development Job
• What helps in an interview?
– Be yourself!
– Be prepared to be asked questions about the
company your applying with!
– Do not only answer questions, talk freely
– Ask you own questions!
• The first one shouldn’t be “MONEY…!?” ;-)
• Have a list of questions prepared
Prepare for a
Software Development Job
• What do I try to learn about a candidate in an interview?
– Is the candidate suitable for the job?
(in terms of qualification)
– Is the candidate suitable for the job?
(in terms of work attitude)
– Is the candidate suitable for the job?
(in terms of fitting into the specific team and the company in
general)
– Is the candidate suitable for the job?
(in terms of long-term perspectives for the candidate and the
company)
– Is the candidate suitable for the job?
(in terms of working with and for me)
Prepare for a
Software Development Job
• Negotiations…
– Know your market value
– Know the payment structure in that type of business in
that region, in a company of such size
– Add a reasonable amount to have something for
negotiation, but don’t exaggerate!
– See the whole package!
Money isn’t the only component…!
• Free coffee, water, etc., Flexible working hours, Annual leave,
Amount of travel, Handling of extra hours
• Atmosphere!!! (you’re at work most of your time!!!)
Outline
• Introduction
• LabVIEW 101 – and then?
• Software Architecture for LabVIEW
• General Software Development Guidelines
• Prepare for a Software Development Job
• Daily life in an IT-Company
Daily life in an IT-Company
THANK YOU FOR YOUR ATTENTION!
Download