You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Oct 11, 2024. It is now read-only.
As a user I want to get auto-suggestions for sensor identifiers So I can quickly find what I need.
a) discovery profile identification value elements are covered.
Database Backend
DAB3
Accepted
As a user I want to get auto-suggestions for sensor keywords So I can quickly find what I need.
a) SensorML keywords (discovery profile) are stored in Solr. b) A simple search website with a text box and auto-suggest pop-up (HTML and Javascript) c) Unit tests for keyword search.
insert sensor info DAO and search sensor DAO
Database Backend
DAB4
Accepted
As a user I want to get auto-suggestions for short sensor descriptions. So I can quickly find what I need.
a) gml:descriptions from discovery profile are stored in Solr.
Database Backend
DAB5
Accepted
As a user I want to get auto-suggestions for sensor classifiations So I can quickly find what I need.
a) classification value from discovery profile is stored.
Database Backend
DAB6
Accepted
As a user I want to access data time periods for which data is available So I can estimate if it is suitable for my use case.
a) validtime from discovery profile is added to index. b) java time classes can be used internally for filtering
Database Backend
DAB8
Accepted
As a user I want to get auto-suggestions for contacts So I can quickly find what I need.
a) contacs from discovery profile is stored.
Database Backend
DAB9
Accepted
As a user I want to find out through which interfaces the sensor data is available So I can directly know if I can download data.
a) interfaces (only the value elements) from discovery profile are stored.
Database Backend
DAB10
Accepted
As a user I want to get auto-suggestions for inputs and outputs of a sensor So I can quickly find the information that I need.
a) inputs and outputs from discovery profile is stored. b) name c) unit of measurement
Database Backend
DAB12
Accepted
As a maintainer of an OSS server I want to know how fast my search database is So I can decide whether to invest in better architecture
a) JMeter Tests for keyword search based on OpenSearch interface. b) jmx configuration file in test/resources
As a developer I want to have a test-set-up with many sensors So I can test database configuration and get comparable results
a) 1000 testsensors with a set of different keywords, identifiers and descriptions b) data is inserted into both databases using the harvesting mechanism
Database Backend
DAB7
As a developer I want to have a test-set-up with many sensors So I can test database configuration and get comparable results
a) test harvesting b) use harvesting for unit tests c) get to know the harvesting interface > SIR specification d) take a look at harvesting code
Database Backend
DAB15
As a developer I want to compare the performance of different database backends in a written performance report So I can make a decision on which one to use when.
a) JMeterTest for PostGres b) Test reports for 1000-sensor-test are presented on a wiki page c) use BOTH the SIR interface and the open search binding for queries, and autocomplete as well. d) at different load levels: 1 request per secon, 10 requests per second, 100 requests per second. e) all combinations of binding and database
Database Backend
DAB16
As a mainainter of an OSS server I want to be solr as fast as possible with reasonable hardware requirements So I can deliver good service to users.
As a user I want to discovery time series data for a specific location So I can find sensors near me.
a) open search interface supports geolocation > http://www.opensearch.org/Specifications/OpenSearch/Extensions/Geo/1.0/Draft_2 b) radius parameter is implemented c) box parameter is implemented d) all acceptance criteria are covered by unit tests and integration tests e) an integration test checks for functionality of spatial filtering by having multiple sensors at different locations
As a user I want to discovery time series data for a specific time So I can find sensors who have recent data.
a) open search interface implements temporal extension > http://www.opensearch.org/Specifications/OpenSearch/Extensions/Time/1.0/Draft_1 b) temporal search works against solr using open search binding c) temporal search works against solr backend using SIR binding d) all acceptance criteria are covered by unit tests and integration tests e) temporal search is based on the begin and end fields of a detailed sensor description f) temporal extension is added to OpenSearch description document
Database Backend
DAB11
Accepted
As a user I want to apply all search parameters simultenously So I can filter out all sensors not fitting my use case
a) keyword and temporal search work together (IT) b) keyword and spatial search work together (IT) c) temporal and spatial search work together (IT) d) keyword, spatial and temporal search work together (IT)
Database Backend
DAB18
As a maintainer of an OSS server I want to use MongoDB as storage backend So I can rely on the scalable and fast infrastructure
maybe look at this later... strongly depends on how to store the XML then. If we try this then use morphia > https://github.com/mongodb/morphia
Database Backend
DAB19
As a maintainer of an OSS server I want to store XML data in a special XML database So I can query efficiently and store data effectively.
As a user I want to type any combination of workds into the search field and get auto-suggestions So I can find what I am looking for very easily.
a) Solr DAO has a method that searches all indexed fields. b) Autocomplete supports multiple words coming from different fields c) Autocomplete supports any order of words.
Database Backend
DAB21
Accepted
As a developer I want to performance test the OpenSearch binding with solr So I can
Database Backend
DAB22
Accepted
As a developer I want to performance test the SIR binding with solor So I can
Database Backend
DAB24
Accepted
As a developer I want to performance test the SIR binding with PGSQL So I can
Database Backend
DAB23
Accepted
As a developer I want to performance test the OpenSearch binding with PGSQL So I can
Database Backend
DAB25
As a mainainter of an OSS server I want to use Hibernate mappings So I can use any relational DB that I want
As a user I want to I want to have the json response containing the details of the sensor if they exist So I can Retrieve a complete description
Database Backend
DAB30
As A user I want to Search by many words in the query box So I can As much results containing possible points of interest as possible.
a) manually create test dataset that contains five sensors at different locations and with different keywords b) create unit tests with mocked database testing the correct functionality of the temporal search c) create unit tests with mocked database testing the correct functionality of the spatial search d) create integration tests with test dataset testing the correct functionality of the spatial search (only the sensors that actually are within the search range are returned) e) create integration tests with test dataset testing the correct functionality of the temporal search (only the sensors that actually are within the time range are returned) f) OpenSearch Interface accept many words search returning all results that contain one or many of the search words. g) Border cases for the radial search with lat/lon/distance with OpenSearch binding and the boundingbox search with SIR binding are covered. h) Filtering work as expected (Temporal + spatial) in combination, which is tested by more extensive (manually authored) test data and integration tests
Database Backend
DAB31
As a developer I want to Delete a given sensor using ID So I can delete sensors when needed
a) The Sensor info is altered to allow deletion of a sensor by query b) sensors are not really deleted, but only marked as "deleted" in the PostGreSQL database. c) Sensors are actually deleted from the Solr database d) a "hard" delete is possible using the RESTful resource and a parameter "erase=true"
Database Backend
DAB32
As a developer I want to trust the existing implementation of the Solr backend So I can use it
a) all CRUD operations implemented b) creating/inserting of sensors work c) deleting of sensors work d) inserting/deleting of references works e) updating of sensors works f) reading of sensors works
"works" = unit test and integration test is written
Database Backend
DAB13
As a developer I want to use the Java Persistence API So I can easily add fields for storage.
As an external developer I want to write my own havester in Javascript So I can trigger open sensor search to query my proprietary interface and integrate my own sensors.
a) Javascript is only allowed to access specific classes (sandboxing) to insert sensor information, effectively only one class "ScriptHarvester" for starters... b) The script file is stored in a database or as a file together with the following user provided (i.e. they must come from user/service interface) the attributes: quartz scheduling settings, user name, version string c) The script file is stored together with the automatically added attributes: scriptIdentifier (numeric identifier, sequential), lastScriptUpdate, scriptUploadDate, lastRunDate, lastRunResult (as a String), scriptVersion (numeric, is just increased with every change of the script) d) script versions are based on semantic versioning, using https://github.com/zafarkhaja/java-semver
Harvesting Framework
HAR4
As an adminstrator I want to use a stable and powerful scheduling backend So I can easily handle many different harvesting jobs.
a) existing scheduling is changed to Quartz b) quartz scheduler is injected with guice c) jobs are persisted to some database (provided by quartz?!) d) SOS harvesting works with quartz
As a sensor web expert I want to let the OSS harvest my OGC Web Service (OWS) So I can discover sensors from my own public SOS.
a) Javascript wrapper for OWS harvesting takes service type (e.g. SOS, SPS) and service URL b) Javascript wrapper to SOS harvesting exists, i.e. a user can submit a Javascript file just giving the SOS URL and optionally the names of the offerings that should be used, then the existing Java harvester is started form Javascript c) the Javascript API accepts any string that Quartz accepts to set the harvesting schedule
Harvesting Framework
HAR2
Accepted
As a user I want to log in So I can manage my harvester
a) A user can manage harvesting scripts by token b) A user can manage harvesting scripts by user account c) admin user level: can do everything d) user user level: can mange his scripts e) Database table that stores users and their passwords f) Database table that stores user IDs and the scripts that they manage
Harvesting Framework
HAR20
Accepted
As a maintainer of an OSS server I want to restrict user harvesting script rights So I can be sure that they do not break my system.
a) Utility classes from here are checked if useful: https://github.com/cloudbees/rhino-sandbox b) Rhino's sandbox feature restricts all access to a specific new Java class that allows insertion of sensors
Harvesting Framework
HAR13
As a user I want to discover sensors from Xively So I can see where they are and what they measure.
a) harvest all sensors, take a look how "WiseLab" does it
As an external developer I want to write my own harvester in Scala So I can integrate my own sensor catalog.
Harvesting Framework
HAR8
As Daniel I want to let the OSS harvest my OGC Sensor Planning Service 1.0.0 So I can discover sensors from my own public SPS.
a) Java harvester can be started by calling a specific method in a Javascript harvesting script. b) Method allows to filter the contents, e.g. exclude or include sensors by regex (identification and name) c) Method accepts scheduling string as quartz does.
Harvesting Framework
HAR6
As Daniel I want to let the OSS harvest my OGC Sensor Observation Service 2.0 So I can discover sensors from my own public SOS.
a) Java harvester can be started by calling a specific method in a Javascript harvesting script. b) Method allows to filter the contents, e.g. exclude or include sensors by regex (identification and name) c) Method accepts scheduling string as quartz does.
Harvesting Framework
HAR9
As Daniel I want to let the OSS harvest my OGC Sensor Planning Service 2.0 with the script interface So I can discover sensors from my own public SPS.
a) Java harvester can be started by calling a specific method in a Javascript harvesting script. b) Method allows to filter the contents, e.g. exclude or include sensors by regex (identification and name) c) Method accepts scheduling string as quartz does.
Harvesting Framework
HAR17
As a user I want to harvest ThingSpeak So I can find the sensors on it.
a) Javascript harvester for ThingSpeak platform implemented b) Elements from SimpleSensorDescription are support (don't have to be all of them)
As a user I want to harvest Xively So I can discover the sensors on it.
Harvesting Framework
HAR23
As a harvesting script author I want to have a simple API from my Javascript script So I can submit basic sensor metadata.
a) Javascript example harvesting a test file. b) In Javascript the internal Java API is used to create sensors with identifiers, keywords, location, classification, ... c) Unit tests with Javascript file based on dummy sensor data d) access class in the harvest package
As a contributor of harvesting script I want to clearly state the license of the data and the harvesting script So I can allow others to use it without worrying about a non-existing license.
a) license of data MUST can be entered in a specific field in the upload form. b) autosuggest for typical data licenses including links to detail pages. c) content and links of autosuggest are configured in a .json file in /resources d) license of file data is displayed on the info page about the harvesting script e) info page about harvesting script is pulically (without login) accessible f) a user must agree to submit his harvesting script under the apache license before he can upload it.
Harvesting Framework
HAR12
As a user I want to see what license the information I get shown is published under So I can estimate if I can use the metadata or data for my purposes.
a) add license info to extended sensor descriptions b) add license info to JSON and HTML response formats
Harvesting Framework
HAR15
As a user I want to harvest data from IOOS So I can see where sensor resources are and what they measure.
Harvesting Framework
HAR16
As a mainainter of an OSS server I want to harvest other OSS servers So I can have more data
a) javascript harvesting can use a simple interface OssHarvester.harvest(url) b) harvesting is based on paginated JSON responses from RESTful interface
allows to run OSS in specific environments (e.g. intranets)
Harvesting Framework
HAR19
As a user I want to harvest the Citizen Weather Observer Program So I can discover their sensor stations.
As a user I want to be provided transparently all available identifiers So I can find sensors easier
a) one stable identifier per resource b) transparent handling of multiple identifiers
Go through discussion "[TC-Discuss] The use and resolution of HTTP URI at the OGC" > URNs vs. URI vs. human readable
Harvesting Framework
HAR21
As a maintainer of an OSS server I want to outsource harvesting processes to a WPS So I can leverage cloud/existing infrastructure.
a) WPS-T required b) Run Javascript processes in WPS c) output of script must be OSS server interface
Harvesting Framework
HAR24
As a user I want to update and manage my scripts So I can flexibly harvest specific services.
a) scripts have a version number and a deleted-flag in the database b) A user can upload a new version of a script. c) The automatic version number is increased after the upload. d) A user can enable and disable a script. e) A user can delete a script - this just sets a "deleted" attribute to true in the database for future reference.
Harvesting Framework
HAR25
As a user I want to harvest my GSN middleware based sensor network So I can rely on my sensors to be discovered.
a) some kind of harvesting or insertion mechanism is implemented
As a developer I want to Have an alternative harvesting mechanism So I can Harvest my sensors in a language not implemented by the developers of OSS
a) The mechanism should be implemented as a restful web service , allow the developer to insert his sensor provider (Remote server) url b) The user is returned an auth token by which it can refer - securely - to the sensor c) The developer can ask oss to harvest the sensor provider (remote server) at any time and schedule harvest jobs d) The OSS calls the remote server and check sensors ids then it can then insert into the DB e) The status of each remote server can be accessed at any time by the auth token f) The remote server url can be deleted at any time by the developer g) A coverage of unit and IT to make sure it work as complies to points a-f
Harvesting Framework
HAR10
As a developer I want to use only one scheduling framework So I can test it.
a) DANIEL'S TASK b) old JobSchedulerImpl is deactivated (the servlet) c) if the JobScheduler implementation is called it uses the new Quartz-based Framework internally, so it stil works!
Harvesting Framework
HAR27
Accepted
As a user I want to have a nice user interface to upload and manage my scripts So I can do that without knowing the server interface.
a) UI for script upload is implemented and tested b) UI for script management using authentication token is implemented
Harvesting Framework
HAR28
Accepted
As a developer I want to be lazy and re-use admin-backend stuff from other 52N projects So I can work on more important things
a) WPS Admin interface checked out. b) SOS Admin interface checked out, reusable in HTML and JS code identified c) IMPORTANT: these backends use a way more sophisticated config storage in the backend, which we are not going to adopt (yet).
Harvesting Framework
HAR29
As script developer I want to run callback harvesting from within a Javascript file So I can manage callback harvesting in the same way that I manage other harvesting
Harvesting Framework
HAR30
As script developer I want to adapt the SOS harvesting So I can change small things in the sensor description before they are loaded into the database
a) does it make sense to have some kind of callback within the SOS harvesting script? or should this stick with just taking the URL?
Harvesting Framework
HAR31
As a harvesting server developer I want to Track the status of the harvesting So I can Check harvesting work as expected
a) implement the check status DAO and other methods b) criteria are checked via unit tests
Harvesting Framework
HAR32
As OSS-UI admin I want to be able to apply permissions to several users So I can Make sure that users don't access resources they shouldn't access
a) Create a DAO that store the user email and password hash to allow registeration b) Add the permission role to the DAO so that we can assign permissions c) Create an admin window where the user has a list of all users and their permissions
Harvesting Framework
HAR33
As a script author I want to edit, delete and update my scripts after login So I can
a) web form with syntax highlighting for editing / updating scripts b) TODOs in HarvestResource are implemented
Harvesting Framework
HAR7
As a maintainer of a weather station I want to allow other users to find it on Open Sensor Search So I can provide my data to more users and good causes.
As a developer I want to know which parts are covered by integration tests So I can safely overhaul the codebase.
a) we have a complete list of all functions that are covered by integrations tests and one separate backlog item in the theme "Code Maintenance" for each missing integration test b) maven starts standalone jetty for tests c) IT for SIR operation InsertSensorInfo. d) IT for OpenSearch interface... with XML output e) IT for OpenSearch interface... KML reponse f) IT for OpenSearch interface... with JSON output g) IT for OpenSearch interface... RSS response h) IT for OpenSearch interface... with spatial querying i) IT for Harvesting based on MockUp Service or File j) IT for transformation of SensorML to ebRIM. k) IT for SIR GetCapabilities. l) IT for SIR DescribeSensor. m) IT for SIR GetSensorStatus. n) IT for SIR operation HavestService. o) IT for DeleteSensorInfo. p) IT for SIR operation InsertSensorStatus. q) IT for SIR SearchSensor with SearchCriteria. r) IT for SIR SearchSensor with sensor ID. s) IT for SIR ConnectToCatalog operation. t) IT for SIR DisconnectFromCatalog operation. u) IT for SIR ConnectToCatalog operation with schedule. v) IT for SIR SearchSensor with sensor description. w) IT for SIR insert sensor info > adding a reference. x) IT for SensorML to ebRIM conversion. y) IT for SensorML to ebRIM conversion on /convert z) /check stuff a1) /convert stuff b1) /harvest ...
As a developer I want to use GitHub So I can better collaborate with others.
a) code moved to GitHub in 52°North org b) nuest and yakoub have both send a pull request to each others fork and updated from 52North/OpenSensorSearch to test the development model.
Code Maintenance
COD3
As a developer I want to have a modularized Maven project So I can work on and reuse parts of the project.
a) SIR is parent pom b) SIR is called OpenSensorSearch c) a full search on the source code for "sir" or "sensor instance registry" does only show the SIR-related classes, i.e. the binding, as a result.
Code Maintenance
COD4
Accepted
As a developer I want to have the source code in my development environment So I can develop!
Code Maintenance
COD5
Accepted
As a developer I want to learn about integration tests So I can implement them
Code Maintenance
COD6
Accepted
As a developer I want to use well written tests So I can trust the code quality
a) all tests follow the F.I.R.S.T principle b) all tests use JUnit 4, so only @test annotations, not extension of TestCase c) add resources used for testing are in src/test/resources (right now they are taken from the examples files) d) The method getPostExampleFile is not used anymore. e) The class SirTestCase with all it's constants is not used anymore, instead paths are resolved relatively etc. f) unit tests and integration tests are clearly separated. g) The tests of the beans are moved to seperate test classes > they are unit tests. h) TransformerTest and ValidatorTest are unit tests (currently use main method).
Code Maintenance
COD31
As A developer I want to Write Integration test for the User Resource So I can Sure it works as expected
a) 1) IT for /user/register b) 2) IT for /user/login c) 3) IT for /user/validate
Code Maintenance
COD10
Accepted
As Daniel I want to use logback for logging So I can use a powerful framework for logging.
Code Maintenance
COD9
As Daniel (a maintainer of an OSS server) I want to use multiple data sources So I can show more and more recent data and provide better perfomance.
a) some kind of DAO layer can be switched out by others using dependeny injection b) hierarchical search is supported (forwarding of search, integration of search results) c) an arbitrary number of reading and writing DAOs can be configured d) multiple DAOs tested with combination of Solr and PostgreSQL e) the configuration mechanism allows to specify weather a datasource is used for storage or autocomplete (in demo: Solr for autocomplete, Solr AND Postgres for storage)
allows to use multiple databases and allows others to set up OSS based on their proprietary database without harvesting it
Code Maintenance
COD11
As a developer I want to have unit tests and integration test for partial updates of sensors So I can trust the functionality works.
a) IT for InsertSensorInfo with an additional reference.
Code Maintenance
COD13
As a developer I want to havea clean internal Api So I can use it...
a) clean up SirSensorDescription and its subclasses
Code Maintenance
COD14
As a developer I want to use continuous integration So I can trust the code quality
a) OSS runs on Travis-CI
configuration file is already added to subproject 52n-sir, but this will have to wait till after the re-organisation of code, activated on https://travis-ci.org/profile/nuest
Code Maintenance
COD15
Accepted
As Mohammad I want to merge with Daniel's master So I can continue to work on a similar codebase.
a) merge solr with master b) merge master with nuest/master
Code Maintenance
COD16
As a user I want to rely on the examples being up-to-date So I can use them to understand the service.
As a developer I want to Complete unit and integration tests for the quartz scheduler So I can Make sure that it works as expected
a) A unit test for the quartz module b) An integration test that calls the schedule binding from the harvest binding and make sure that it runs the script at the required time c) HarvestJob and RemoteHarvestJob are written as testable classes (testable with unit tests) d) Unit tests using mock-ups for both data storage and server interface are implemented.
Code Maintenance
COD18
As a developer I want to Have a complete unit tests + Integration tests for sprint 5 tasks So I can Make sure that they meet the acceptance criteria
Code Maintenance
COD7
Accepted
As a developer I want to use logging So I can trust not to have performance problems with printing to standard out.
a) Not a single System.out.println in the code - not even tests.
Code Maintenance
COD8
As a developer I want to use TODOs and FIXMEs in the code to track the most important ongoing tasks, not every little detail So I can know what to do next
a) No more "default" TODOs (auto-generated by Eclipse) b) Every TODO or FIXME contains the identifier of a Backlog Item AND a responsible person c) OPTIONAL: quickly to fix TODOs can also directly be implemented, BUT of course with unit tests :-)
Code Maintenance
COD12
Accepted
As Mohammad I want to Use the eclipse code formatter So I can Have a code that's formatted as that of Daniel to avoid much mismatch when mergine
Code Maintenance
COD20
Accepted
As a developer I want to have my code in the main repo So I can continue with new developments.
a) pull request sent to 52North/OpenSensorSearch and request merged successfully
Code Maintenance
COD21
As a maintainer of an OSS server I want to edit all settings in an admin interface So I can easily change stuff
a) SOS vs. WPS config vs. http://www.refresh.io/2013/04/flexible-configuration-with-guice/ b) flexible configuration mechanism, maybe using a database, is implemented c) all modules are configured separetely d) all modules settings can be changed in one commen user interface
Code Maintenance
COD22
As a developer I want to use the best tools from Jersey So I can have cleaner code
As a developer I want to easily switch out listeners for specific operations or add more listeners for operations So I can adapt, change or add functionality.
As a developer I want to have a multi-module project So I can switch out or re-use parts of it
a) OSS is a multi-module project with a root pom.xml b) integration tests are only run in a specific maven profile c) a tomcat for integration testing is started on a random port automatically d) 52n-sir is renamed into oss-server and OSSUI in oss-ui, and 52n-sir is optionally split up into modules such as oss-sir, oss-opensearch, oss-rest, oss-convert, oss-harvest, ... e) SOR is a module oss-sor and wiki documentation is updated accordingly (page is just about the spec, not the implementation > https://wiki.52north.org/bin/view/SensorWeb/SensorObservableRegistry) f) oss-sor uses JAX-RS, loaded with Guice and available at the endpoint /sor g) 52n-json-sir is oss-json h) 52n-arsearch is oss-arsearch i) oss-arsearch uses JAX-RS, is loaded as a Guice Module and available at /arsearch j) integration tests are in oss-integrationtest submodule > http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing k) Swagger contains a short mentioning of the endpoints /sor and /arsearch l) Is is possible that theSOR can be build independently?
Code Maintenance
COD26
As a maintainer of an OSS server I want to get the latest build as a binary So I can run the newest code
a) 52N jenkins builds the OSS project nightly b) integration tests run when calling mvn verify on command line c) extra profile for build server d) tomcat runs on random port for integration tests
Code Maintenance
COD27
As a developer I want to know the code still works So I can develop more freely
a) integration and unit tests are run nightly on the Jenkins build server b) developers are notified of build problems
Code Maintenance
COD28
As a developer I want to use stable libs over my own implementations So I can rely on their stability and performance
a) see if client implementation can be done better with apache httpclient b) see discussion on WPS mailing list, ask Matthes how he would do it
Code Maintenance
COD29
As a developer I want to Fix issue #11 of the issues list So I can make sure that it's functionality is executed as expected
a) The issue should be fixed according to the description at Moh-Yakoub#11
Code Maintenance
COD30
As A developer I want to Write Integration test for the statistics Resource So I can Sure it works as expected
a) 1) IT for /statistics/phenomena b) 2) IT for /statistics/sensors c) 3) IT for /statistics/services
Code Maintenance
COD33
As A developer I want to Write Integration test for the HarvestCallback resource So I can Sure it works as expected
a) 2) IT for /remote/server/harvest b) 3) IT for /remote/server/schedule c) 1) IT for /remote/server
Code Maintenance
COD37
As A developer I want to Fix the Integration test of SearchSensor So I can Make sure it complies with F.I.R.S.T principle
a) Search by sensor ID b) Search by criteria c) 3) IT for /remote/server/schedule
The test is missing the part that checks that the returned sensor matches the one in response
Code Maintenance
COD32
As A developer I want to Write Integration test for the HarvestCallback resource So I can Sure it works as expected
a) 1) IT for /remote/server b) 2) IT for /remote/server/harvest c) 3) IT for /remote/server/schedule
The unit test are implemented based on mockups , the IT are still to be implemented
Code Maintenance
COD36
As A developer I want to Write Integration test for the ConnectToCatalog with schedule So I can Sure it works as expected
Code Maintenance
COD35
As A developer I want to Modify the integration test of JSON/EBRIM conversion So I can Sure it works as expected
a) Complete the checking done at the "readValidSensorMLAndValidate" method
Code Maintenance
COD34
As A developer I want to Modify the integration test of ConnectCatalog So I can Sure it works as expected
a) Remove connection in the After method b) Check that test comply with F.I.R.S.T principle
Code Maintenance
COD38
As a developer I want to use semantic versioning So I can build a trustful relationship with users of my API
As (DANIEL) a developer I want to Work on the PGSQL issue So I can Make sure the backend works as expected
a) The complete description is as here : Moh-Yakoub#12
Code Maintenance
COD40
As a developer I want to use server-side page building frameworks, such as JSPs for the HTML responses So I can rely on performance and extendability
a) do not concetenate strings anymore for HTML response b) use JSPs and potentially spring mvc
Interoperability
INT1
As a user I want to use any term for an observed property that I want So I can more easily use open sensor search
a) SOR is module of OpenSensorSearch b) endpoint OpenSensorSearch/sor is working c) integration tests for SOR functionality d) SOR SVN is read-only e) SOR Wiki is updated pointing towards OSS f) OSS Documentation is updated with information about SOR
Interoperability
INT4
As a sensor web expert I want to integrate my standardized sensor network So I can discovery my own sensors together with others and use the OSS identifiers for my own services.
a) SOS Harvesting with SIR Harvest request and Javascript harvesting script (IT tests) b) SensorML 2.0 output format c) SensorML 1.0 output format
Interoperability
INT7
As an external developer I want to use a simple RESTful API So I can use OSS sensor resources as identifiers for my sensors
a) DANIEL's task b) resource /sensors/ exists c) API is hypertext driven (see http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven) d) supports HTML output styled similar to the start page e) explicit content negotiation in addition to content-type headers. f) integration and unit tests for /sensors/ g) full URL is used in search results to link to a sensor
stable API is important here...
Interoperability
INT8
As an external developer I want to use a simple Java library for the SIR interface So I can easily develop my own client against it.
a) beans that are used for the extended client are using the client b) the client is an adapter in the OX-Framework c) unit tests for all functions of the client API are written
the client can be based on the beans in org.n52.sir.client
Interoperability
INT9
As a user I want to browse all identifiers or combination of identifiers that are available for a given OSS sensor resource So I can identify sensors better
this should model somehow the fact that external identifiers differ from internal ones and that a sensor resource might be available via several external catalogs/apis/services.
Interoperability
INT11
As a user I want to access the information in OSS using Linked Data So I can integrate it in my existing infrastructure.
a) RDF output format b) turtle output format
SPARQL? rd2ld ?
Interoperability
INT12
Accepted
As a user I want to have stable and trustworthy identifiers that can be resolved for sensors So I can share the identifiers
a) DANIEL's task b) Factory for identifiers is implemented and used for storing in all databases. c) factory has unit tests, including checking if an identifier already exists d) Factory can be injected
As (DANIEL) a developer I want to rely on validity of the JSON objects So I can develop my own client using the JSON encoding.
a) JSON schemas for all JSON (../sensor and /opensearch - responses) b) option to enable schema checking for responses c) option to enable schema checking for requests d) documentation, referring to the raw.github files for validation
Interoperability
INT3
As an old school user I want to download data in formats I can use with my old school software So I can keep my old habits
a) output formats are injected with Guice b) output formats are in separate modules c) CSV as output format supported using the internal converters d) XLS as output format is supported using the internal converters e) converter endpoint for sensor description in JSON to XLS f) converter endpoint for sensor description in SensorML to XLS g) converter endpoint for sensor description in JSON to CSV h) converter endpoint for sensor description in SensorML to CSV (creating a detailed sensors description, which can then be outputted as CSV and be used internally)
Interoperability
INT5
As a sensor data provider I want to get the biggest possible reach with my data in search engines So I can hope for many users to user my sensors.
a) add a paginated version of /sensors with JSON and HTML rendering b) add schema.org types for HTML renderings of sensor descriptions and search results c) see what microformats can help in the same respect d) think about extending Thing with Thing/Sensor
As a non-SWE-user I want to access the metadata in a model that I know So I can us it for my own purposes
a) add dublin core metadata to HTML pages, see https://de.wikipedia.org/wiki/Dublin_Core b) add Dublin Core output as CSV, XML, or whatever makes sense c) Dublin Core elements as plain text
As a user I want to visually inspect data time periods for which data is available So I can estimate if it is suitable for my use case.
a) can filter search results in the UI using an interactive user interface, e.g. a combination of timeline and calendars.
Usability
USA1
As a developer I want to have access to tested nightly builds So I can test the latest software.
a) OSS is build every night on the 52°North Jenkins (including integration tests)
Usability
USA2
As a user I want to type harvesting scripts directly in the browser and test their output So I can quickly see results
a) form editor for harvesting scripts b) "preview" feature that runs the scripts for max. 10 sensors and displays the result below the edtior c) use the newest CodeMirror d) side-effect: update codemirror on the old form client
As a user I want to see search results in a HTML response on a map So I can see where the sensors are.
a) Using leaflet or maybe OpenLayers 3.0 b) Try out showing the map as a "band" across the full width of the page as here: https://www.saludonnet.com/ (make a search first)
Nice interaction with highlighting of the bounding box when hovering over items in the list: http://market.weogeo.com/
Usability
USA5
Accepted
As a user I want to the web client to be flexible across all platforms (desktop, browser, tablet) So I can use it from anywhere.
a) update code of start page to bootstrap 3 b) web client was tested on major browsers c) tested successfully in W3C unicorn: http://validator.w3.org/unicorn/
As a user I want to to automatically search close to my location So I can directly find what matters most.
a) A "search nearby" button starts a predefined proximity search (e.g. using 1000m) using the "fast" database backend using the method parameter "fastEngineOnly" in the method SearchSensorListener.receiveRequest(AbstractSirRequest request, boolean fastEngineOnly), see nuest@eaaf083 b) The location is taken form the Geolocation API (http://dev.w3.org/geo/api/) c) search results are sorted by distance to the given location (on client or on server side?!)
Usability
USA7
As a developer I want to use the same conversion functions that are used internally So I can transform sensor descriptions between different formats myself.
a) simple javascript client for demonstration, possibly at /convert of ossui b) generic conversion framework using annotations in the converter classes to publish the accepted input format and output format
Usability
USA8
As a developer I want to check my sensor description documents before I submit them So I can make sure they pass the conformity tests.
a) verify that check-classes have unit tests (i.e. classes are unit-testable) b) verify validation output as XML c) verify validation output as json d) test client (the one in extended client) uses the new api e) test client displays validity badge, badge URL/id is part of the check description json f) checks incoming SensorML to conformance with SensorML discovery profile, if is is valid it gets a "profile conformity flag" that is stored in the sensor table as in a "badges" array g) "strict checking", i.e. SensorML is only accepted if it is conform, can be enabled in the properties
Usability
USA9
As a user I want to access subset of search results So I can limit traffic.
a) paging is implemented for JSON responses b) paging is implemented for HTML responses
follow opensearch paging extension
Usability
USA10
As a user I want to use plain text for spatial search using location So I can simple type "temperature in Berlin" and have a spatially filtered result.
a) gazetteer supported search is implemented for special syntax such as "loc:Berlin" or "in XYZ"
As a user I want to see the most important search results first So I can skip scrolling down.
a) abstract ranking algorithm implemented (use comparable interface??) b) first simple algorithm uses the number of provided fields for searching.
Usability
USA11
As a user I want to see the most important search results first So I can skip scrolling down.
a) implemented an abstract/potentially complex ranking algorithm utilizes star rating, distance to location (if location search), by most recent measurement. b) A concise test dataset exists for integration tests.
As a metadata contributor I want to use HTML forms So I can interactively edit the sensor description easily
a) smartEditor supports SensorML b) smartEditor connects to OSS as storage backend
see also work by Malewski/Kuhn
Usability
USA15
As as user I want to see the position of a sensor on a map So I can decide whether it is useful for me.
Usability
USA16
Accepted
As a harvesting script author I want to have a good looking UI form So I can upload my scripts
a) UI for script harvesting b) UI for callback harvesting functinality c) all service interface methods have useful return codes (most importantly http error status codes) d) UI shows service errors in a nice way (see SOS admin interface)
Usability
USA18
As a user I want to have an easy way to test my harvesting scripts So I can develop them effectively
a) we need a developer guide for scripts in the wiki b) developer guide must include a simple runtime environment for the scripts, so it must somehow support all the Java-functionality that OSS offers users.
Usability
USA19
In progress
As a user I want to see badges of sensors that have some specific feature So I can estimate which one works best for me.
a) abstract badge system is implemented and stored in the database along the sensor (badge table: id; name; description; icon; sensor_badges table: sensor_id, badge_id) b) a badge for conformity with the SensorML discovery profile is added.
Usability
USA20
As a developer I want to get other peoples opinions of the UI So I can improve it.
a) documentation page hosted within the webapp (e.g. under http://...OpenSensorSearch/develop and not in the 52N wiki) for developers: (1) on how to use the harvest interface, incluing working (!) test Javascript files. b) developer documentation looks almost as nice as https://dev.twitter.com/docs/api/1.1 c) the demo instance contains real SOS data coming from harvesting d) an email to the sensorweb mailing list asking for feedback on the harvesting UI and interface is sent e) end user documentation (at .../OpenSensorSearch/help on (1) how to use the UI for search and (2) adding OSS as a search provider to the browser (see https://developer.mozilla.org/en/docs/Adding_search_engines_from_web_pages and http://geoviqua.dev.52north.org/SIR/) f) documentation for /convert is on documentation page (as a reference to swagger) g) documentation for /check is on documentation page (as a reference to swagger) h) documentation on the supported bindings (Open Search (list all supported extensions), SIR) is on documentation page (including links to 52N wiki and OpenSearch.net ...) i) a "Fork me" banner is on the documentation page
Usability
USA21
As a user I want to sign in with OAuth 2.0 So I can use existing accounts to manage my harvesting scripts.
As a client developer I want to trust the stability of the API So I can develop applications using OSS that work in the long run
a) added version section to ALL interfaces (RESTful, KVP, ...): ".../api/v1/", except sir of course which has a version parameter b) url pattern is defined in as few places as needed (keeping modules independent)
Usability
USA23
Accepted
As a user I want to know about basic statistics of the oss instance So I can know that is has a lot of data
a) DANIEL: implement ../statistics endpoint
Usability
USA25
Accepted
As a user of OpenSearch I want to automatically discovery the So I can use it in my client.
As a maintainer of an OSS server I want to have a one stop shop where to see all versions of the code and architecture used So I can submit better bug reports
a) admin backend has an info page which contains ... b) Java/JRE c) Information about servlet container d) Database versions (e.g. "SELECT PostGIS_full_version();" for PostGIS und SELECT version(); for Postgres) e) OSS version and dependency versions (mvn dependency tree written to some file?) could also just read the NOTICE file
Usability
USA26
Accepted
As a mentor I want to have a publically available test instance of the developed features So I can show it off
a) a demo instance is running on gsoc.dev with a test user account that is given out to interested people
Usability
USA27
As a developer for OpenSearch I want to easily maintain the OpenSearch document in Java So I can make changes at one location only.
As a field user I want to use Open Sensor Search from mobile devices in the same way that I do on the desktop So I can do my work wherever I have to.
a) web client was tested on tablet b) web client was tested on mobile devices
Usability
USA29
Accepted
As a user I want to have a variety of clients for the different endpoints So I can pick the one that works best for me.
a) SIR extended client is part of OSSUI b) simple test client as part of OSSUI c) landing page for OpenSensorSearch
Usability
USA30
As a user I want to retrieve my passwort if I forgot it So I can use my login still.
a) login form validates email format on the client side (Javascript) b) password reset mechanism is implemented (replace with random password, send it to the user)
Usability
USA31
In progress
As a user I want to a consistent user experience So I can easily navigate all parts of the UI
a) one black menu bar at the top, centered search window like the old one, simple grey text footer or no footer b) take a look at template from WPS Admin c) same styling for swagger d) same styling for developer page e) developer page written in JSP(?)
Usability
USA32
As a developer I want to to have the application to have a small footprint So I can deploy faster.
As a maintainer of an OSS server I want to use a web interface for admnistration of my service So I can work effectively
a) use https in deployments b) admin page for OpenSensorSearch
Data Quality
QUA1
As a user I want to see a "validity badge" So I can directly see which sensors support the full metadata set.
a) Discovery profile conform sensor resources are highlighted. b) discovery profile conformity is stored in the database(s) c) endpoint .../badge/discoveryprofile exists and returns either a PNG or a JSON representation of the badge
Related to GEOLabel...
QUA2
As a user I want to be able to see if quality information is available for specific search results So I can estimate the fitness for purpose of a sensor.
QUA3
As a user I want to be able to see a visual summary of quality information. So I can estimate the fitness for purpose of a sensor.
a) GEOLabel
QUA4
As a user I want to access the "provenance" behind a badge So I can see where exactly the information comes from that the badge is based on.
a) service endpoint for provenance information exists
QUA5
As a user I want to access all versions of a sensor description So I can know which one fits my data
a) extend RESTful inteface to include "version" query parameter b) extend SIR describeSensor operation (both KVP and POX) to support a version parameter c) What versioning scheme should be used? Semantic versioning? Just a running number? What textual versions should be supported? "latest"?
Social
SOC1
As a user I want to filter search results based on average rating So I can see only sensors who support a certain rating.
a) average rating is read in from feedback server by the oss and can be used for server-side filtering b) user interface has filtering UI
Social
SOC2
As a user I want to discuss with other users which sensors I have used and see other user's comments So I can estimate the fitness for purpose of a sensor.
As a user I want to submit and read feedback about a sensor for a certain time span and space So I can help others to decide whether they can use the data
a) users can submit feedback items to GeoViQua Feedback server b) support the GeoViQua Feedback Server for display of comment data and average ratings c) use oss/sensors/ for codespace and {ossid} for code
Social
SOC4
As a user I want to submit feedback for a specific sensor So I can contribute to the general knowledge base.
a) submission form uses OSS sensor resource as identifier
Social
SOC5
As a user I want to "like" and "+1" a sensor resource and share links in social networks So I can tell others about useful sensors.
As a user I want to filter search results So I can only see the ones good enough for me
a) badge filtering supported, i.e. I can click on any badge on the site and select "show only sensors with this badge" and then the search result is updated.
Social
SOC6
As a user I want to get recommendations for similar sensors when I'm looking at a specific sensor So I can find alternatives
a) sensor visits must be captured b) recommendations based on simple keywords comparison c) recommendations based on advanced recommender system, see http://shop.oreilly.com/product/9780596529321.do
Security
SEC1
Accepted
As a maintainer of an OSS server I want to know who the users are who submit harvesting scripts So I can know they don't do bad stuff
a) a registration form for users exists b) users can register only if they have a token XOR users can register but their registration must be accepted by an admin c) "scriptAuthor" and "admin" as user levels d) users have a property "validated" that is stored in the database and only validated users can submit scripts e) admin users can set the "validated" flag in the administrative backend
Security
SEC2
As a maintainer of an OSS server I want to manage the user accounts on the server So I can make sure only authorized people have accounts
a) clone user management from WPS admin b) list of users only visible for admins c) admins can remove users d) admins can make other users (not) admins e) admins can validate users f) add default admin account to database on creation (admin/password - or oss/oss)
Security
SEC3
As a mainainter of an OSS server I want to make sure passwords are treaded safely So I can say to users I treat their password securely
a) good hashing is used b) reasonable level of security is achieved c) talk to SOS admin and WPS admins how they see it
As a maintainer of an OSS server I want to channel all traffic through HTTPS So I can secure passwords of my users
a) install OSS on test server for opensensorsearch.net b) install and configure nginx and Tomcat accoring to last post in this thread: enviroCar/enviroCar-server#128 (comment)
New Features
NEF1
As a user I want to search with arbitrary spatial objects So I can more specifically limit my search
As a maintainer of sensor networks I want to group sensors into "networks" So I can manage my networks more effectively and allow users to discover within the network
As a developer I want to use string identifiers for services So I can
a) use similar mechanisms as for sensor resource b) add unit tests for getcap dao getting services c) add integration tests for /services resource
New Features
NEF6
To do
As a maintainer of sensor networks I want to make a dry run of a harvesting So I can check before inserting a lot of useless stuff into OSS
a) add "dryRun" parameter to internal harvesters b) add "dryRun" parameter to SIR harvest request c) do NOT update the extended harvest request form d) if a dry run, add the sensors descriptions that would have been inserted into the harvesting response, potentially extend the harvesting response.
New Features
NEF7
As a user I want to have a visually appealing metadata editor So I can more easily (without expert knowledge) contribute.
The following table is the old backlog (pre 2015), based on http://www.tablesgenerator.com/markdown_tables
The text was updated successfully, but these errors were encountered: