In most systems, including telecommunication systems, software is the overriding component in terms of cost and complexity. Good software engineering practices and tools can therefore make a substantial difference, even to the extent that they may be the driving force of the project success.