stSoftware

Sustainable Technology



Cloud Application Development Lifecycle :
Agile project management and product release schedule

Overview

The stSoftware application life cycle consists of weekly incremental releases with stake holder planning and demostrations. The release cycle is two weeks from the planning phase to feature release, features are broken down into small enough tasks to be able to fit into the two week release cycle. This project management methodology is known as Agile/Scrum

Agile project management is broken up into three main phases:-

  1. Planning
  2. Development Sprints
  3. Release Sprints

stSoftware cloud systems have three main environments:-

  1. Edge - Latest build which has passed all automated tests.
  2. UAT - The last promoted "Preview" build after the end of the development sprint
  3. Production - Promoted from "UAT" after the user test period.

Cloud Application Development Lifecycle

(source)

Agile principles

The Agile Manifesto is based on twelve principles:

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Self-organizing teams
  12. Regular adaptation to changing circumstances

Planning Phase

There are three main activities in the planning phase.

  1. Product Vision
    • Grand statements
    • Business long term goals
    • Major system features
  2. Gap Analysis & System Design
    • Business Analyst Programmer analyses the Gap between the Product Vision and the generic stSoftware product
    • The initial system design is developed
    • These processes guide the Product Roadmap
  3. Product Roadmap
    • Each task is estimated by the developers.
    • Any task dependencies are added as additional tasks.
    • The priority of each task is given by the business owner.
    • Large tasks are broken down into multiple smaller tasks which are less than 1 week of development effort.

Development Sprints

A sprint (or iteration) is the basic unit of development in the agile development lifecycle. The sprint is a "timeboxed" effort; that is, it is restricted to a specific duration. The duration is fixed in advance for each sprint and is typically one week.

Each sprint is started by a planning meeting, where the tasks for the sprint are identified and an estimated commitment for the sprint goal is made, and ended by a sprint review, where the progress is reviewed and lessons for the next sprint are identified.

Sprint backlog

Each development sprint is one week in length, a set of coherent tasks are taken from the "product roadmap" based on the priority given by the business user. The set of tasks "sprint backlog" including any dependencies are chosen to be a estimated week of total developer team effort.

Daily scrum

The developer team meeting for 15 minutes to review yesterday's progress and plan today's tasks.

Incremental Release

When a feature set is completed and the automated tests ( ~6,000) for the whole system are clean the system build is released to the “preview” environment. A manual "smoke" test is done on the "preview" enviroment once released.

Release Sprints 

Release to UAT

After the end of the "development sprint" the last incremental "preview" release with a report of the tasks completed is promoted to UAT environment.

At the end of a sprint cycle, two meetings are held: the "Sprint Review Meeting" and the "Sprint Retrospective".

At the Sprint Review Meeting:

    • Review the work that was completed and the planned work that was not completed
    • Present the completed work to the stakeholders (a.k.a. "the demo")
    • Incomplete work cannot be demonstrated

At the Sprint Retrospective:

    • All team members reflect on the past sprint
    • Make continuous process improvements
    • Two main questions are asked in the sprint retrospective: What went well during the sprint? What could be improved in the next sprint?

Release to Production

The "UAT" release is matured for a one week period. Business users are able to test the upcoming release in the UAT environment, if no regression issues are found then the UAT release is promoted into the "production" environment. Feature sets are disabled or reverted before promotion if required. The promoted “UAT” releases propergated throughout the production server cluster progressively using a rolling restart of each web server so that there is no visible outage of the system.

Read More

Cloud Application Development Lifecycle

Integrated Demo App :
Progressive Web Apps Demo

A new Progressive Web App demo has been released. This Demo shows how a phone app can be integrated with a database giving powerful real-time mobile functionality. It is supported on both IPhone and Android. The Demo shows just a few of the possible features that can be implemented:

  • Uploading photos
  • Loading jobs
  • Site locations
  • Reporting on individual tasks
  • Answering questionnaires 

The Demo App utilises new technology and libraries such as framework7. 

More details about our progressive web Apps can be found on our Progressive webs Apps page along with an interactive Demo or you can contact us directly here.

 

         Details Page                Map Demo

Read More

Integrated Demo App

Testing Simplified :
CMS: Now integrates QUnit for automated testing of websites

The new Test tab is now available in the CMS and makes the testing process simple and easy. This incredibly useful tool allows the developer of a site to easily debug their product.  The Test Tab utilises QUnit Testing which is a powerful, easy-to-use JavaScript unit testing framework.

Navigation: 

The Test tab is located in the top menu when creating a new CMS website page. Under this tab there is the title 'Setup'. This is where you can create tests. To create a test simply click 'Add' located down the bottom of the screen.

Test Tab

 

Add Button

Clicking 'Add' will bring up the following screen....

Layout of page

Creating a Test:

On this page the tester has a few options:

  • Name: The name of the tests. Eg: "Test Page for JohnSmith"
  • Sequence: The order of when this test is run in comparassion to other tests. Eg: "55"
  • Domains Pattern: This limits the condition of when this test is run. Eg: "localhost" (This will only run when the URL contains "Localhost")
  • Disabled: When checked this disables the test from running
  • Script: Place your validation code here, for the test to pass, the script must contain an assert command to finish..
    • Eg: assert.ok( userName.match(/.*JohnSmith.*/), "Passed!" );
    • (This makes sure the users name is "JohnSmith")
  • Description: Is a quick explanation of what the script does for future reference... Eg: "Checks users Name"

 

Page with example data

Clicking Ok will bring you back to the 'Test' panel when you will be able to see the list of tests you have created. The test that you created will show on the bottom of the list. 

 

Example of Test added

Running Tests:

To run the tests go to the page you wish to run the tests on, go up to the URL bar and look for the line "CMS_MODE=PREVIEW" and change this value to "CMS_MODE=TEST";

Changing of url

 

Changed url

 

The tests will automatically start running. If a test fails a popup will notify you of the failure so the issue can be addressed.

 

Example of Qunit detection

Read More

Testing Simplified