Agile Software Development

agileManaging complex software development projects is a challenging task, but SEARCH has embraced an “agile” methodology that we use internally—and we are promoting its use in the justice and public safety field as an effective approach to tackling IT projects. 

Agile development focuses on incremental development and delivery, collaboration in a team approach, and rapid and flexible response to change throughout the development cycle.  It helps promote an ongoing process of decision-making and oversight so that projects stay on track and are responsive to user needs. 

SEARCH follows agile practices when providing assistance to justice and public safety agencies, such as in software development efforts, programming and configuration, implementation architecture and design, and on projects involving national justice standards, such as GRA, NIEM, GFIPM, and N-DEx. 

Learn more about Agile Software Development


SEARCH also uses the Scrum approach, a variant of the Agile methodology.  Scrum is a framework for effective team collaboration on complex projects. It uses a simple but powerful set of principles and practices that help teams deliver products in short cycles, enabling fast feedback, continual improvement, and rapid adaptation to change. 

Scrum has predominantly been used for software development projects, but works well for any complex, innovative scope of work. It focuses on teamwork and constantly pleasing the customer. Using Scrum, SEARCH has learned useful techniques to manage backlogs, plan releases and iterations, and track and report project progress. 


Several SEARCH staff have become certified ScrumMasters through the Scrum Alliance, and are trained to effectively apply the principles of the Agile Manifesto, which guides Scrum. 

Learn more about Scrum

Open Source Tools

In its software development work, SEARCH uses open frameworks—software platforms—to develop applications, products, and solutions. Open frameworks allow us to develop low-cost solutions that do not require software licensing fees and to leverage good work being done in open source communities worldwide. 

Three SEARCH Member States—Hawaii, Maine and Vermont— have formed the nonprofit Open Justice Broker Consortium (OJBC) as a means to implement key exchanges on an open source software platform and share the implementations among themselves. This ability to share technology significantly reduces their collective costs and reduces the time required to make the exchanges operational. 

The Open Justice Broker (OJB) platform is built upon the standard-based open source Apache ServiceMix platform. ServiceMix is an open source enterprise service bus and service-oriented architecture toolkit. It is released under the Apache License and supported by a large community of developers. 

SEARCH Staff supports the OJBC and works closely with Members to develop workable solutions to complex justice information sharing issues.

SEARCH staff has been instrumental in developing the National Shared Execution Cloud Context (NSECC) technical architecture. The NSECC provides a hosting infrastructure and governance process for national information exchanges, including the Sex Offender Registration and Notification Act (SORNA) exchange and Interstate Compact Offender Tracking System (ICOTS) exchange. The SORNA exchange allows states to send and receive sex offender notifications and uses a GRA-conformant exchange that demonstrates interoperability between .NET and Java web services. The ICOTS exchange leverages similar technology and security and showcases a GRA-conformant exchange with multiple vendors and state partners in a distributed environment. The intermediary uses a configuration approach that allows new states to receive notifications with minimal effort and no code updates. 

Open solutions we use to implement complex information exchanges for justice agencies include: Java, Spring, Apache CXF, Apache Camel, Apache HTTPD, Tomcat, and Apache ServiceMix.

Agile Software Development

Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen tight interactions throughout the development cycle. 

The Agile Manifesto introduced the term in 2001. Since then, the Agile Movement, with all its values, principles, methods, practices, tools, champions and practitioners, philosophies and cultures, has significantly changed the landscape of the modern software engineering and commercial software development.

Source: Wikipedia

Scrum 101

The Scrum framework is used to build a product, which is built incrementally over a series of short time periods called “sprints.” During each sprint, the Scrum team builds and delivers a product increment. Each increment is a recognizable, visibly improved, operating subset of the product, meeting understood acceptance criteria and built to a level of quality.

Scrum is also a team process that includes three roles: the product owner, the development team, and the ScrumMaster.

Learn more about Scrum on Wikipedia