************
Requirements
************
Software developers will come from different backgrounds, have different skills and experience and may use different development environments and tools. Whilst one developer may prefer to have formal training and extensive experience in a particular programming language or concept before tackling a task, another may be comfortable to use their experience in other languages or platforms to pick things up as they go.
As a result, it is not possible to come up with a definitive list of all the skills, experience and tools that a developer **must** have or use in order to undertake development and support of the HLU Tool. Therefore the following is just a guide to the applications, websites and tools that a developer **may** wish to use and the skills & experience that a developer **may** need.
.. index::
single: Requirements; Skills
.. _requirements_skills:
Developer Skills
================
The following is a list of programming concepts, languages, skills & experience that developers **may** need before attempting to develop or support the HLU Tool and associated guides.
* An understanding and experience of general software development concepts such as design, coding, testing, debugging, issue management and deployment.
* Experience of programming and debugging applications with Microsoft's `Visual Studio `_.
* Experience in C#, .NET and object-oriented programming concepts.
* Ability to write Structured Query Language (SQL).
* An understanding of how relational databases work and Relational Database Management Systems (RDBMS) such as `Microsoft SQL Server `_ and `Microsoft Access `_.
* Familiarity with Microsoft's .Net Framework component `LINQ (Language Integrated Query) `_.
* Experience of using `ArcGIS Desktop `_, in particular for creating & editing data and performing basic geoprocessing functions such as split & merge.
* A understanding of `ArcObjects `_ and experience of developing with ArcObjects in .NET.
* Experience of using `MapInfo Professional `_, in particular for creating & editing data.
* Experience of developing `MapBasic `_ programs, a BASIC-like programming language used to create custom applications for use with MapInfo.
* A General understanding of `XML `_ and `XAML `_ used to write Windows Presentation Foundation (WPF) applications. WPF is used for the tool's user interface.
* Understanding of source code version control system concepts and features, particularly `Git `_ and `GitHub `_.
* Familiarity with `GitHub Flavoured MarkDown `_ text syntax used for GitHub ReadMe files, issues and comments.
* Ability to read/write `reStructuredText markup syntax `_ used to create the user, technical and developer's guides.
* How online documentation repositories such as `ReadTheDocs `_ work.
.. index::
single: Requirements; Applications
.. _requirements_applications:
Applications
============
The following is a list of applications that you are likely to need as a minimum to develop and support the HLU Tool:
* Microsoft Visual Studio Professional 2012 (or later)
* Microsoft .Net Framework 3.5 (or higher)
* ArcGIS 10.1 (or later)
* MapInfo 8 (or later)
* SQL Server Express 2008 (or later)
* Microsoft Access 2000 (or later)
* Git for Windows
* GitHub for Windows
* InstallShield Limited Edition
.. raw:: latex
\newpage
.. index::
single: Requirements; Websites
.. _requirements_websites:
Websites
========
The following are websites that you will need to use and become familiar with when developing and supporting the HLU Tool and associated user, technical and developer's guides:
`GitHub repository `_
Hosts the source code for the tool and accompanying user and technical guides (including this developer's guide), and is also used as the `issue tracker `_ for any agreed known issues and proposed change requests for the tool.
See :ref:`source_control_github` and :ref:`issue_tracking` for more details.
`ReadTheDocs online guides `_
Creates and hosts the `User Guide `_, `Technical Guide `_ and `Developer's Guide `_ (this guide) for the tool.
See :ref:`documentation_rtd` for more details.
`ALERC Forum `_
Hosts a discussion forum available to Local Record Centres (LRCs) for the HLU Tool and associated Habitat Framework.
See :ref:`user_forum` for more details.
.. index::
single: Requirements; Tools & Extensions
.. _requirements_tools:
Tools & Extensions
==================
The following is a list of free tools and extensions that may be useful when developing and maintaining the tool or the associated user, technical and developer's guides.
`Active Python `_
A cross-platform distribution of Python that provides a one-step installation of all essential Python modules.
`Sphinx `_
A python based documentation generator that can generate HTML, PDF and other output formats.
`Notepad 2-mod `_
A fast and light-weight Notepad-like text editor with syntax highlighting.
`Sublime Text 3 `_
The latest version of the sophisticated text editor for code and markup languages.