+ All Categories
Home > Documents > Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool...

Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool...

Date post: 17-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
23
Staying Agile Lessons Learned Building GIS Software in SoCal JENNIFER LINK
Transcript
Page 1: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Staying AgileLessons Learned Building GIS Software in SoCal

JENNIFER LINK

Page 2: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

AGENDA

▶ CrimeMapping.com

▶ The Plan

▶ The Implementation

▶ The Web Application

Page 3: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping.com

▶ First launched in 2005

▶ Public website to display crime incidents and sex offenders

▶ Used by law enforcement to reach out to public

▶ Used by public to track crime in their neighborhood with alerts

▶ Over 400 US agencies use the application

Page 4: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping.com

Page 5: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping.com

Page 6: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping.com

Page 7: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping.com

Page 8: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Application Successes

▶ Meets user needs▶ Application meets law enforcement agency and public needs

▶ Great user experience (UX)▶ Accessible and easy to use

▶ Fast performance▶ Map is not bogged down by the data

▶ Sustainable and maintainable▶ Code standards followed, documentation created

Page 9: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Plan

Page 10: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Agile Methodology

▶ Features defined by requirements▶ Features added to a backlog▶ Plan features for sprints

Page 11: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Essential Planning Tools

▶ Visual Studio Team Services – Project Management▶ Includes project management capabilities for requirement tracking

▶ Confluence – Document Sharing▶ Web based team collaboration software

▶ #Slack – Text messaging▶ Uses channels for text messaging

▶ Visio – Object Models▶ Diagramming for database, software, other

Page 12: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Lessons Learned: Planning

▶ Agile methodology gets features to users quickly

▶ Team communication is key; find ways to share and stay connected

▶ Overlapping knowledge of the application is critical

▶ Don’t be afraid of documentation

Page 13: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Implementation

Page 14: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping Implentation

Host EnvironmentCustomer Site

Client Applications

Page 15: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Application Host

▶ CrimeMapping originally hosted in-house

▶ Issues with real estate, staff resources, security

▶ Moved to Colocation facility; security improved but resources still limited

▶ Microsoft Azure Commercial selected as the cloud host

▶ Set up developer, test and production sites

Page 16: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Cloud

Page 17: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

CrimeMapping in the Cloud

▶ Azure features that helped us

SQL DatabaseApplication Service Web Jobs

Blob Storage

Geo-replication

CDN

Deployment Slots

Website Data Repository Automation

VS2015 Azure Development Tools

Deployment

Alerts

Page 18: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Lessons learned: Implementation

▶ Creating a config tool to extract data freed up developer time

▶ Extracted data was projected to Web Mercator; accurate enough for the app

▶ Moving to the cloud freed up IT resources for other projects

▶ Service levels in the cloud could be adjusted for spikes in traffic

▶ SQL Server V12 was used to store spatial data; and perform simple spatial queries

▶ DevOps team checked application weekly to assess

Page 19: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Client Application

Page 20: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Web Application

▶ IDE: Visual Studio Team Services▶ .NET shop already familiar with Microsoft technology▶ All developers from a .NET background

▶ Language▶ Front end: HTML and JavaScript▶ Back End: C# with SQL or LINQ

▶ Mapping ▶ ArcGIS API for JavaScript▶ ArcGIS Online Basemaps

Page 21: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

The Source Code

▶ Code standards and reviews▶ Comment the code

▶ One statement per line

▶ Design Architecture▶ MVVM – Model-View-ViewModel

▶ DTOs to communicate client/server

▶ Exception handling▶ Always handle potential errors

▶ Try / Catch is your friend

Page 22: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Lessons Learned: The Web Application

▶ A good designer can set you apart

▶ A dynamic layout is expected

▶ Only download the data you need

▶ Use an architectural pattern

▶ Choose a mapping API that works for you

Page 23: Staying Agile - BeSpatial / urisa ontario · Lessons learned: Implementation Creating a config tool to extract data freed up developer time Extracted data was projected to Web Mercator;

Most important lesson learned…

▶ HAVE FUN!


Recommended