Sfw Eng Processess

To reach high quality levels, when developing and maintaining software it’s needed to develop, maintain and improve processes, as well. Better work processes result in better work products, where “ better work products ”  means enhanced features, improved quality, less rework, and easier modifications.

Here are the basic principles to follow:

Basic of software Engineering Processes
Work processes must be designed with the same care used to design work products; work processes must be designed to satisfy process requirements and process constraints, fit the needs of individual projects, and make the work processes efficient and effective. Work processes for each project should be derived from a process framework. A process framework is a generic process model that can be tailored to meet the needs of a variety of situations. The tailoring of a framework involves adding, deleting, and modifying elements to adapt the framework to the needs of particular projects. Process design and process improvement result in shorter schedules, higher quality, lower costs.

We should however notice that process improvement seldom happens spontaneously: a positive ROI (return on investment) requires an ongoing investment of time, effort, and resources

It is however important to stress on the second of the points above: processes must be designed and tailored to the specific needs and not taken and adopted from some best practices of other organizations, without an adequate analysis.

Process design is best accomplished by tailoring and adapting well known development process models and process frameworks, just as software design is best accomplished by tailoring and adapting well – known architectural styles and architectural frameworks.

Principles
The following general principles applies:

Iterative development processes provide the advantages of:
 * There are several well known and widely used software development process models, including Waterfall, Incremental – build, Evolutionary, Agile, and Spiral models.
 * There are various ways to obtain the needed software components; however different ways of obtaining software components require different mechanism of planning, measurement, and control.
 * The development phases of a software project can be interleaved and iterated in various ways.
 * continuous integration,
 * iterative verification and validation of the evolving product,
 * frequent demonstrations of progress,
 * early detection of defects,
 * early warning of process problems,
 * systematic incorporation of the inevitable rework that occurs in software development,
 * early delivery of subset capabilities (if desired).
 * Depending on the iterative development process used, the duration of iterations range from one day to one month.
 * Prototyping is a technique for gaining knowledge; it is not a development process.
 * Always remember that mechanisms of planning, measurement, and control used in a software project are strongly influenced by the development process used.
 * SEI, ISO, IEEE, and PMI, provide frameworks, standards, and guidelines relevant to software development process models