
Best practice: Agile Development Methodologies
Software develop has benefited in recent years from improved development tools, faster computers and most importantly improved best practice. Village Software's developers have a passion for technical systems in business and we are constantly updating our practices in the light of new technologies and practices. The article below lays out some of our approach to software development, from time to time we meet with peer companies to compare best practice we are always happy to hear from others interested in professional software engineering to compare tools and techniques.
Overview
Village Software Engineering Limited is constantly seeking to improve its performance. Software development is a complex, fast moving and globally competitive field. This paper is a work in progress about current thinking at Village Software particularly for the interest of other IT professionals.
Technical developments in recent years have made a big difference to software development however it remains a field where the application of intelligence, training, communication and methodology are critical. This brief paper lays out for business people and IT professionals the direction that Village Software is moving as it works towards best practice. References are given at the end for those who want further information.
Technical Developments
Software development has been greatly assisted in recent years by three main advancements:-
Object Orientated Tools
Objects are pieces of software that combine both data about the business with a set of software processes to represent the businesses rules. For example in our recent Sage Payroll systems there is an 'Employee' object with an 'Engage' method that adds the employee to payroll.
Integrated Development Environments
Software development tools have improved to provide the developers additional support in constructing software with both integrated debugging and a rich set of components. Village uses Microsoft .Net technologies which provide an integrated set of tools based around Microsoft Visual Studio Development environment. We also use various Unit testing frameworks, Object Relational Mapping tools (in particular N-Hibernate and Entity Framework) and Cruise Control continuous development environment alongside CVS and Subversion source code control.
Business Modeling
Much thinking has gone on into how to design and model software systems with UML (Unified Modeling Language) becoming a standard. This has provided analysts and designers with improved methods for modeling business in a way that can be converted into software. At Village we use a level of modeling appropriate to a project. Smaller projects tend to be seen as a data structure and objects with a series of forms and reports. More complex projects will be more substantially modeled. Modeling is an assistance to thinking and communication we tend to use it in this way rather than as a formal definition.
Methodology Developments
On most occasions software requirements are met out of the box by packages. However where business is done in a unique or innovative way to gain commercial advantage, bespoke system development is required. Despite improvements in technology and price, software development continues to be a skilled business.
There have been many false dawns where software development was to become easy, but we have come to realise that software development is about the application of intelligence and communication backed by solid technologies and methodologies.
Village Software keeps a careful eye on the development market and is pulling ideas from the 'Agile Development Movement'. This movement attempts to produce the software equivalent of 'Lean Manufacturing' while working with the way programmers think and act.
A number of techniques we absorb from this thinking are:-
Unit Tests:-
Testing programs are written and continually run. When a bug occurs a test to demonstrate that bug is produced then the program code is altered to program out the bug. Automating re-testing makes it happen exposing where code has been broken.
We've been doing this since about 2003 but it is increasingly ubiquitous.
Pair Programming:-
It has been accepted for a long time that code reviews by peers improve quality. Pair programming makes people work together improving quality.
We do an amount of this however we don't pursue it all the time.
Refactoring and sufficiency:-
Functionality isn't written until it is needed; instead existing code is changed when necessary and improved regularly.
We are regularly scanning the horizon for techniques that will make us better but without slavishly following any particular trend. Refactoring is a matter of technical routine with much of it built into Visual Studio. However really it is a matter of software craftsmanship, intent and leadership.
Working Environment
At Village we try to create an environment that people want to work in. The team will tell you that we are not a particularly high payer but we offer a flexible and stimulating working environment. The result of this is that people work for us over the long term. Our customers benefit by not having to deal with new developers every couple of years.
As part of our strategy we try to encourage ongoing interest in the field of software development. The result is that customers are served by committed, well-informed and interested staff.
Commercial Practices
There is more to running a software company than producing software. We also need to be able to:-
- Fund development.
- Develop careers.
- Absorb risk on contracts.
- Ensure quality appropriate for corporate clients.
Village Software is over 20 years old and we've learnt a few things in that time, sometimes at the school of hard knocks. Particularly we look to the quality of product required by our customers this involves software and the quality procedures that surround it.
IT community
Village Software is an active member of the IT suppliers' community. Village MD Jonathan Read has previously chaired the Liverpool ICT Suppliers group. We constantly have our ear to the ground to see how other people do things. We help and are helped by our peer companies sometimes in commercial collaborations and sometimes as friendly assistance. We are interested in what other system developers and users have to say.
If having read this you want to compare notes, then please get in contact with us.
References
We have found Martin Fowler provides a well-informed source introduction to 'Agile Methodologies' without having a particular axe to grind.
www.martinfowler.com/articles/newMethodology.html
A directory of articles on Agile Development:
www.agilemodeling.com/resources.htm
|