Home
SCM Blog
SOX
Build
Agile
CMMI
Six Sigma
ITIL
Sftwr Engineering
Software Testing
Config Mgmt
Release Mgmt
SDP
Subversion
Source Code
Forrester Reports
SCM Jobs
SCM Salaries
Contact Us
SCM EZine
FDD
Disaster Recovery
SCM War Stories

[?] Subscribe To
This Site

XML RSS
Add to Google
Add to My Yahoo!
Add to My MSN
Add to Newsgator
Subscribe with Bloglines

Software Engineering

Definition

The IEEE Computer Society defines Software Engineering as the application of a systematic, disciplined and quantifiable approach to the development, maintenance and operation of software.

History

  • In the 1940s, the first software programs were written in machine code.

  • In the 1950s macro assemblers and interpreters were created to improve productivity and quality.

  • In the 1960s, the second generation of compilers and interpreters were being used.

  • The 1970s gave rise to the microprocessor and the gain of software collaboration tools.

  • In the 1980s, saw the personal computer land on everyone's desk.

  • The 1990s saw the development of object-oriented programming and the further maturity of the Software Engineering practices.

  • 2000s have seen the rapid advancement of the performance and storage of computer servers and personal computers.

    SE Disciplines

    Requirements Engineering is the systematic collection of customer needs or conditions for a new software application, or a new release of a already existing application.

    The requirements must be measurable and testable. Prototyping and use case creation are examples of solutions to the difficult process of gathering, analyzing and documenting of the customer requirements.

    Software Design After the Requirements Engineering is done, software architects begin the process of planning and designing the software to meet software requirements.

    In addition to meeting the requirements, there are many considerations to weigh when designing a software product.

  • Compatibility

  • Extensibility

  • Maintainability

  • Reliability

  • Robustness

  • Security

    A smart design will greatly aid in a development organization's ability to support a software product.

    Software Construction is the process of coding, compiling, verifying, testing and debugging of software.

    Software Testing is the process of measuring the behavior of a software program. The quality of the testing process usually measured for correctness, completeness and security.

    Software testing has evolved from an activity performed after the product is considered code complete. To function performed all the way through and after the construction phase.

    Software Configuration Management are the practices and procedures for administering source code, producing software builds, controlling change, configuration management and 3rd party software control.

    Specifically, SCM ensures the integrity, reliability and reproducibility of developing software products from conception to release. During projects and releases, SCM facilitates timely communication, enforces policy and technical standards and manages hand offs between environments and teams.

    Software Maintenance and Support is the phase after the product is deployed or sold to customers. It is the processes and practices evolved with keeping the product running and in good health.

    Many software development organizations have attempted to invest as little as possible in the maintenance and support. It was believed that investing more in the development of the software was a more cost beneficial to the organization.

    However, it is now accepted that prolonging the life of a release can be more beneficial use of resources. So, instead of staffing the Support team with less experience software engineers, they are now use more experienced software engineers to prolong the life of a given product.

    Traditionally, Software Maintenance and Support dealt with the fixing of defects, performance improvements or the customer specific customizations to adequately run the software.

    Software Quality at it's essence is the processes involved with achieving a predetermined level of customer requirements and product performance.

    The ability to achieve a specific level of Software Quality requires.

  • Determining Quality Requirements

  • Determining the Processes to Achieve the Quality Levels

    Software Tools and Engineering

    Software Processes

    For the most comprehensive discussion Software Engineering Body of Knowledge (SWEBOK)


    footer for Software Engineering page