Starting Your project

Castle Software Australia can manage the entire software project lifecycle for you. We can handle the requirements analysis, produce technical specifications and fixed price estimates, write the code, build the database, deploy the system migrate your data, assist with testing and offer complete support afterwards.

But more than that, we will help you understand what it is we are doing, every step of the way. We can break a project down into phases to help get critical parts of a new system online as soon as possible, leaving other parts to be built later. If there are some parts of the project that you are still uncertain about (whether you can’t quite voice your needs, or you need to explore new ways of doing your business, or you just want to experiment with the user interfaces) then we can use prototyping or agile (iterative) project approaches to help pin down the solution that’s best for you.

Developing custom software is never a one-size-fits-all operation. Every project is different, and it should be - after all its your business and no one else’s.

Look at the newspaper and read about large gov’t and private software projects suffering major cost blowouts. In virtually every case the problem will not have been a technology one, it will have been a failure to communicate effectively and a failure to follow basic project management principles at all levels of the team, from senior management down to the programmers. To that end, let us assure you that we understand how to manage a project - lets go over some of the basics now so you understand how we will proceed with your project...

Generic placeholder image

Business Requirements Analysis

One of the most critical things we tell all our clients is not to hold back when requesting functionality for their system. Don't attempt to limit what you want, thinking (incorrectly) that it might be expensive or time consuming or just impossible - let us work that out for you - let us know what your dream is. Our clients are frequently surprised that something they thought was hard really isn't and is well within their budget. Similarly if what you want IS expensive, we can often find a partial (80:20) approach that will give you the important bits, and neatly leave out the portion that is the expensive hiccup.

Our team has excellent communication skills, both written and verbal, and have worked with clients in many different professions gathering & documenting business requirements. These include business change consultants, medical researchers, building contractors, medical professionals, HR, Primary Industry (mines, oil) & Government departments.

Documenting requirements using your language and jargon is a crucial step in ensuring that there is complete understanding when developing a custom solution for anyone. This avoids the majority of classic project management goofs and frankly makes for great repeat business.

This is also the time to decide what kind of project management/development methodology will work best for your project.


Technical Analysis/Specification

Taking business requirements and turning them into technical specifications is the critical step in preparing estimates for any project, and ensuring there is complete understanding between all parties. This is where assumptions are tested and technical feasibility of the technologies requested are proven.

The rare occasions where a project stumbles for technology reasons can always be tracked back to not performing this step correctly, or thoroughly.

Key points which must be agreed upon before this phase include essential business requirements about: security, speed, size, transaction limits, bandwith, scalability, platform or anything which you consider a make-or-break issue. This is because the Technical Analysis will make design decisions affecting such things, and something as simple as picking the wrong database, hardware, webhost, control toolkit...etc can have major implications if the wrong choice is made unknowingly.

We excel at this, in particular making sure that technical questions can be directed back to the client in the business terms they understand - not technospeak.


Development

We have extensive experience in software development which has been documented elsewhere on this site. If you have a specific development strategy or tool that you want us to use please let us know - it won't be a problem.

We create well documented applications that have distinct Development, Test and Production cycles. Most of the systems we build are used by the general public in one form or another, and as such have had to be built to a higher standard of stability than typical in-house apps.

We also offer to support and maintain every system we build.

We have worked for businesses who need a Developer API (integration toolkits) to be designed & documented for their own products. This includes commercial add-ins and wizards for Microsoft Office.

Our long history with PC development goes as far back as early Windows application development (Visual Basic anyone?) and even MS-DOS systems (anyone remember what Clipper and dBase were?). As such we are ideally suited to help with projects that port from or rebuild old legacy systems, as we have staff who used to work on that stuff when it was considered new and sexy! We aren't fazed by the idosynchrasies of the old systems; we know how to port and update them, and what questions have to be addressed along the way - BEFORE they become a problem.


Database Administration

We design and build new systems on SQL Server by choice. We cover all aspects of design, writing SQL queries and/or Stored Procedures, optimisation, deployment, and migrating changes and data between Development, Test and Production servers.

This includes systems which require security meeting Australian privacy legislation standards, ensuring data transport and import/export between systems is secure.

Having said that, we have also produced applications running on Microsoft Access, dBase files, XML, Excel, Text (CSV) and other formats. There are often good reasons for considering database products other than SQL Server (eg: NoSQL), and we don't want you to be constrained - let us know what you need to do.


Deployment (DevOps)

We can manage all aspects of deploying new applications and maintenance releases to the Cloud or traditional web host, including maintaining distinct sub-domains and databases for Test and Production. Nowadays, all the operations associated with this are collectively referred to as DevOps.

We have also created commercial Windows applications with commercial grade installers for deploying those programs to our clients and their clients in turn (both other corporations and the general public). These installers are created using a combination of the Installaware and WISE toolkits depending on requirements, and can be run from CD, USB sticks, file downloads or directly from your website. We can even design your application so it checks for updates to itself and manages the entire process automatically like many commercial systems.

Our goal is simple - to install and maintain your software on its final platform transparently, with zero or minimum fuss to you and the end-user.


Team Work

Our staff have worked both individually on projects and within larger teams. We are able to set goals and work to deadlines/estimates. Our staff can also work collaboratively within a team environment, including mentoring or supervising junior staff.

We are experienced in architecting large scale applications so they can be worked on by many programmers independently with minimal opportunities for clashes, using the source/version management system of your choice.


Prototype Development

Sometimes you will know what you want, but can't put it into words. Sometimes you want to explore an idea that involves cutting edge technology or attempts to solve a business problem in a way you've never tried before, thinking outside-the-box, out in left-field kinda stuff. Businesses that want to keep three steps ahead of the competition do this sort of thing regularly. In these cases its impossible for anyone to produce a quote, since we don't even know what the goal posts are.

But we don't let that stop us.

The solution is something called Prototype based development. In simple terms, you give us a rough idea of what you are thinking, and we build something. You then critique it - along the lines of “that not what I want, but seeing this makes me realise I want something like this over here...”, and we start the process again. The iterations continue until you have an Application or Website that seems to do what you are after.

At that point several options are available to us - but basically we work with you to turn that rough-as-guts app into a polished professional application, as though we’d written it to a fixed specification originally. This last phase can usually be quoted on accurately.

Obviously providing estimates for such a project is difficult, so what we do it break the work down into chunks of time (usually a single iteration of the build/critique cycle), and you authorise each one in turn. If you feel that you are spending too much without getting anywhere then we stop to allow you to spend more time thinking about your needs, and continue at a later date (or not) at your discretion.

Sometimes the end-goal of prototyping is to prove that a particular approach will not work, or to establish the parameters of when it might be possible (eg: what new technology or price point is required for the idea to become useful or practical?).

The Prototyping approach is also useful for small parts of a larger solution, where you know what you want for most of it, but a small part or parts are still hard to pin down or need some technology issues solved. So we set up a small project to answer these questions for you and incorporate the results into the larger project plan. We describe prototyping in this context as a Feasibility Study.


Agile (Iterative, RAD) Development

This methodology has been given different titles over the years, and while each has technical differences they all point to the same basic project management technique - break a large project down into small pieces, treat each as a separate project with its own requirements, specification, development and testing cycles, rinse and repeat. Whether you call each cycle a mini-project, a Sprint or something else is immaterial.

You evaluate how well each cycle went; adjust plans; how estimates are arrived at; whether the technology, database, coding methods or staffing need adjusting and begin the next block of work. Sometimes the next block will even go over the same area because you are trying to fine tune or optimise the user experience (like prototyping, but focussed on a specific feature or screen). In other projects the cycles relate to building pilot systems to evaluate a technology or approach, building the system for a single office/branch/state to verify that it works as expected before scaling it up company wide.

If you are planning a large scale greenfields project that is a bet-the-company operation, we strongly recommend this approach, so you can establish if the new system/approach really does work as expected and can scale up as required before you turn off the old system. It also allows you to keep a firm control on cost & schedule blowouts and minimise the risk of a project failing. It also allows for testing to be conducted in a real environment, but with limited fallout if/when bugs are found - meaning you can hold off doing the company wide rollout until critical metrics are met completely.

The other benefit to this approach is that it allows you to change your priorities as the project progresses, based on real-world needs. This is vital when the new system is something you need to start using ASAP...

One important point - on paper this approach can look more expensive than just proceeding through a project plan step buy step. But its about risk management. The larger the project, the more of your business that might be affected by its success or failure - the more you can’t afford to not choose this approach.