|
|
|
Software Engineering
History
Over 30 years ago the NATO Science Committee formed a group to try setting a roadmap for dealing with the chronic problem of managing large development projects. The term "software engineering" was coined at that meeting. Today, despite continuing developments in
life-cycle modeling and design, keeping large software projects aligned with project plans remains an elusive goal.
Methods
There are few complete software engineering process standards in the literature. The Rational Unified Process is one of them. It is a widely published, web-based process that is gaining acceptance among many organizations. It employs 6 best practices that have been validated by successful projects throughout the industry:
- Develop software iteratively
- Manage requirements
- Use component-based architectures
- Visually model software
- Verify software quality
- Control changes to software
Learn
The application of software engineering is highly non-standardized. Therefore, one cannot truly refer to software engineering as a science. Most organizations use a software engineering process tailored to suit their management style, quality requirements, and technology level. The process may define: design methods, life-cycle steps, quality guidelines, deliverables, verification standards, requirements methodology, interdepartmental interactions (e.g. sales-engineering feedback).
There are volumes of information and case studies available in the literature which exude the benefits of following a process. Nevertheless, many organizations still use an unstructured development approach.
Evaluate
One truism that emerges from case studies of successful and failed projects is: the uniform application of a software development process across an organization is crucial. An average software development project will overshoot its schedule by half. Larger projects fare worse and smaller projects better. There are many factors that contribute to a project's failure and classifying and prioritizing them often results in religious war.
There is no universal standard (yet?) for software development. Organizations should develop a process tailored to suit their management style, quality requirements, and technology level. Constant feedback is needed to ensure that the process is working and evolving best practices are rolled into the development cycle. The Software Engineering Institute (SEI) has developed the Capability Maturity Model (CMM) to assist organizations with that task. Raytheon implemented the CMM between 1988-93 as a process improvement initiative. As a result of that initiative, most projects came under schedule and budget and productivity in most programs doubled.
|
|
|