Software Development Process
To make our work more productivity and our software more qualitative all
stages of software creation in our company are covered by our development
process. The development process is a set of rules determinates how to
establish project environment, design architecture, write code, deploy code
to customer, and support working product. All these rules are targeted to
describe responsibility allotment in development team and standardize mechanisms
of quality controlling and interacting with users of our software.
There are no many rules in the set. But each rule is important and it is
included not to be just mentioned but being used in every day practice.
The major rules can be listed in several rows:
- Period of development of a project is divided on iterations.
- Iteration period length can be various because it depends on
project specific. But it is recommended to set duration of
iteration to 4-6 weeks.
- Full-featured project is consisted of several phases: beginning
iteration, core development iterations, detail development iterations,
and deployment iterations. Sequence of phases can be specific for a project.
Some phases can be omitted. The beginning phase is a time to establish main
project's environment and start writing major project's documents.
Technically this is an iteration like any development or deployment
iterations but it has several differences. The iteration's duration does not
have strong time limits (that is because of most part of the iteration is
negotiating process so as far as it is a game of two players it can not be
planned well without of quality impact). Another difference is things produced
during the iteration are not software but documents and, what is more important,
vision of the future project.
- Development iterations are more rhythmically. Iteration can include three
parts: design, coding, and bug fixing. Often iterations consist of one type
of work only. During iteration developer can do code design, or can coding
designed part of project, or can fix bugs. Sometime iteration can be composed
of two types of jobs (bug fixing and coding for example) and even of all tree
types. In the last case it is recommended to order jobs in the next way:
starting with design, then fixing critical bugs in code, and then do coding.
But usually such three-stage iterations are being in short time projects or
in projects with critical schedule. Development iterations are separated in
two groups: core iterations and detail iterations to reduce risks in the project.
In core iterations the main functionality, kernel of the system is designed and
implemented. This is being done on the early project's stage to have time if
something goes wrong to redesign the code in system core without necessary to
re-work big bunch of code based on this core.
- Deployment iterations are finishing the project. They cover process of
shipping code and documentation to customers, fixing production bug and so on.
Also they can include special iteration covering work-time spent in "guarantee
period". That means the company guarantees the code is working well and
promises to fix problems with core functionality for free during guarantee
period (usually two years).
- Every project should have package of documentation. The documents may
describe project vision, project main requirements, domain model, and so on.
It is important here that all documents should be useful and the useful documents
should be kept up-to-date.
- All code should be documented. Documents can be functionality specifications
and/or design documents. The code should be documented with in-code comments.
These comments describing code functionality make support of the code significantly
easier.
- Bugs found in developed system should be processed by a bug tracking software.
Every bug description should be fixed in tracking system and processed in bug workflow.
All these rules serve for accomplishing task to ship quality results on time.
To supply not just a code but well documented product that can be easy supported
and extended if it is needed. And this makes us sure in quality of our work and
because of that we can give guarantee on the completed work.