2Chapter1 • Introduction to Software Development
the end of the chapter, you will find an introduction to Linux Standard
Base. This chapter is not specific to a particular hardware platform or
tools. You will start learning about components of an actual software
development platform in the next chapter.
1.1Life Cycle of a Software Development Project
Software development is a complicated process comprising many stages. Each stage requires a
lot of paperwork and documentation in addition to the development and planning process. This
is in contrast to the common thinking of newcomers to the software industry who believe that
software development is just “writing code.” Each software development project has to go
through at least the following stages:
•Writing functional specifications
•Creating architecture and design documents
•Implementation and coding
•Testing and quality assurance
•Support and new features
Figure 1-1 shows a typical development process for a new product.
There may be many additional steps and stages depending upon the nature of the software
product. You may have to go through multiple cycles during the testing phase as software testers
find problems and bugs and developers fix them before a software product is officially released.
Let us go into some detail of these stages.
Requirement gathering is usually the first part of any software product. This stage starts
when you are thinking about developing software. In this phase, you meet customers or prospec-
tive customers, analyzing market requirements and features that are in demand. You also find out
if there is a real need in the market for the software product you are trying to develop.
In this stage, marketing and sales people or people who have direct contact with the cus-
tomers do most of the work. These people talk to these customers and try to understand what
they need. A comprehensive understanding of the customers’ needs and writing down features of
the proposed software product are the keys to success in this phase. This phase is actually a base
for the whole development effort. If the base is not laid correctly, the product will not find a
place in the market. If you develop a very good software product which is not required in the
market, it does not matter how well you build it. You can find many stories about software prod-
ucts that failed in the market because the customers did not require them. The marketing people