Implementation and Coding Life Cycle of a Software Development Project

8 Chapter 1 • Introduction to Software Development

1.1.6 Software Releases

Before you start selling any software product, it is officially released. This means that you create a state of the software in your repository, make sure that it has been tested for functional- ity and freeze the code. A version number is assigned to released software. After releasing the software, development may continue but it will not make any change in the released software. The development is usually carried on in a new branch and it may contain new features of the product. The released software is updated only if a bug fixed version is released. Usually companies assign incremental version numbers following some scheme when the next release of the software is sent to market. The change in version number depends on whether the new software contains a major change to the previous version or it contains bug fixes and enhancement to existing functionality. Releases are also important because they are typically compiled versions of a particular version of the code, and thus provide a stable set of binaries for testing. 1.1.6.1 Branches In almost all serious software development projects, a revision or version control system is used. This version control system keeps a record of changes in source code files and is usually built in a tree-like structure. When software is released, the state of each file that is part of the release should be recorded. Future developments are made by creating branches to this state. Sometimes special branches may also be created that are solely used for bug fixing. CVS is dis- cussed in detail in Chapter 6. 1.1.6.2 Release Notes Every software version contains release notes. These release notes are prepared by people releasing the software version with the help of developers. Release notes show what happened in this software version. Typically the information includes: • Bug fixes • New functionality • Detail of new features added to the software • Any bugs that are not yet fixed • Future enhancements • If a user needs a change in the configuration process, it is also mentioned in the release notes Typically a user should be given enough information to understand the new release enhancements and decide whether an upgrade is required or not.

1.1.7 Documentation

There are three broad categories of documentation related to software development pro- cesses. Life Cycle of a Software Development Project 9

1. Technical documentation developed during the development process. This includes

architecture, functional and design documents.

2. Technical documentation prepared for technical support staff. This includes technical

manuals that support staff use to provide customer support.

3. End-user manuals and guides. This is the documentation for the end user to assist the

user getting started with the product and using it. All three types of documents are necessary for different aspects of product support. Tech- nical documents are necessary for future development, bug fixes, and adding new features. Tech- nical documentation for technical support staff contains information that is too complicated for the end user to understand and use. The support staff needs this information in addition to user manuals to better support customers. Finally each product must contain user manuals. Technical writers usually develop user manuals which are based on functional specifica- tions. In the timelines of most software development projects, functional specifications are pre- pared before code development starts. So the technical writers can start writing user manuals while developers are writing code. By the time the product is ready, most of the work on user manuals has already been completed.

1.1.8 Support and New Features

Your customers need support when you start selling a product. This is true regardless of the size of the product, and even for products that are not software related. Most common sup- port requests from customers are related to one of the following: • The customer needs help in installation and getting started. • The customer finds a bug and you need to release a patch or update to the whole product. • The product does not fulfill customer requirements and a new feature is required by the customer. In addition to that, you may also want to add new features to the product for the next release because competitor products have other features. Better support will increase your cus- tomer loyalty and will create referral business for you. You may adopt two strategies to add new features. You may provide an upgrade to the cur- rent release as a patch, or wait until you have compiled and developed a list of new features and make a new version. Both of these strategies are useful depending how urgent the requirement for new features is.