The software engineering is a German translation of the English. Concept of software engineering and is concerned with the production and development of software, organization and modeling of the associated data structures and operation of software systems. A definition of Helmut Balzert describes the area as
" Targeted provision and systematic use of principles, methods and tools for the division of labor, engineering-based development and use of complex software systems. "
Software technology includes a plurality of sub-areas, which accompany the development of the software in its entirety. Also important is the experimental study of software technology to measure their practical benefit and improve. For a description of the "state of the art" of the department there are various approaches, including the Guide to the Software Engineering Body of Knowledge ( SWEBOK ) of the IEEE Computer Society.
In a wider sense, includes the software technology - in addition to the development - even the operation of the software in use of information technology.
Because of the high costs for creating and maintaining complex software development is performed by software developers using a structured (project) plan. This plan ( the process model ) divides the development process into manageable, temporary and limited phases. Thus, the software is completed step by step. The phases are closely interlinked throughout the development process. In practice, methods are used, which give up the multiple stages of system analysis, system design / concept and subsequent implementation, and testing, for example, prototyping, Agile software development.
The software technique involves the entire process from identification of needs through to the commissioning of a specific IT solution, partly beyond. Main object is the provision and implementation of an application software, in part, plus the necessary hardware and networks.
The to-implement software can be either an individual or a combination of software and configuration of standard software.
Projects are often done by or with external service providers, but also often as in-house development. Accordingly, diverse, also depending on the project type, are also the approaches to project development: from a very structured approach, see waterfall model, through various mixed forms to highly flexible, open methods such as agile software development. Accordingly, it is also a distinction between top-down and bottom- up approaches.
Below are some important aspects and typical stages / phases of project development are described, which are in practice more or less pronounced to bear.
The phases and their tasks are listed in the following table:
- Requirements elicitation
- Specifications ( requirements definition )
- Specification ( with technical approaches refined specifications )
- Effort estimation (eg using Function Point method or COCOMO )
- Process model
- Mock -up
- Process Analysis / Process Model
- Systems analysis
- Structured Analysis (SA)
- Object Oriented Analysis (OOA )
- Software Architecture
- Structured Design (SD)
- Object-oriented design ( OOD)
- Fundamental Modeling Concepts ( FMC)
- Standardized programming
- Structured Programming
- Object-Oriented Programming (OOP)
- Functional Programming
5 Validation and Verification
- Module tests ( low-level test)
- Integration testing ( low-level test)
- System Tests (High -level test )
- Acceptance tests (High -level test )
6 Requirements Management
7 Project Management
- Risk Management
- Project planning
- Project Monitoring and Control
- Management of supplier agreements
8 Quality Management
- Capability Maturity Model
- Spice ( standard) ( Software Process Improvement and Capability Determination)
- Incident Management
- Problem Management
- Software metric ( measurement of software attributes )
- Static analysis (calculation of vulnerabilities)
- Software ergonomics
9 Configuration Management
- Version Management
- Change Management / Change Management
- Release Management
- Application Management (ITIL)
10 software introduction
- Technical Documentation
- Software Documentation
- System documentation ( development and troubleshooting )
- Operational documentation ( Operator / Service )
- User Manual (user)
- Business processes ( design of the development )
- Process documentation ( description of legally relevant software processes)
The above sub-steps of software development are not necessarily completely through in every project. Rather, individual processes are chosen specifically for each request. This is necessary from the viewpoint of cost and management reduction.
The entire process of project development usually subject to a more or less pronounced project management. In the case of implementation by an IT service is usually operated on both client as well as contractor on page one in each independent project management. In order to resolve conflicts between the two project managers, is the superior often still composed of the management of client and contractor supervisory committee ( Project Board) used.
Typically, a greater project management effort is expended during medium or small projects are often " casually " settled for larger projects.
Often, external IT consultants are used to complement and support the people involved in the project execution.
The quality management within the project is understood as part of the project management field. It covers both the:
- Quality planning, that is, identification of relevant quality criteria for the project and the methods by which they can be met.
- Quality assurance, that is regular and rule conformity assessment of project performance to ensure that the project meets the quality standards.
- Quality control, ie monitoring the project results to determine whether the quality standards are met, and to eliminate the causes of underperformance.
The quality management in the project must include both the performance of the project and the quality of the project product appeal. Modern quality management and modern product management complement each other. Both disciplines recognize the importance of
- Customer Satisfaction
- Prevention goes before checking
- Management responsibility
Of. Quality improvement programs that are conducted by the sponsoring organization, such as TQM or ISO 9000, can be integrated to improve the quality of the project and the product.
As generally in project management the permanent trade-off between quality, cost and time has to be taken into account. Especially in software projects, the project management is often under tight deadlines and a particularly high risk is exposed to neglect quality.
Due to the complexity of information systems, " absolute " safety and quality are not economically viable. Therefore, often the risk management methods used for categorization and prioritization to ensure an adequate level of system safety and quality for the project.
Aspects of risk management should over the entire system life cycle, ie starting with the concept, to be considered on the development or programming, implementation, and configuration and during operation to decommissioning of the system.
In connection with the project development here is meant for preparing the project system analysis. Object is the substantive requirements capture through survey of future users and the systematic investigation of further factual and technical requirements and constraints (interfaces to third party systems, legal requirements, etc.). Result is usually a technical concept, often equal to a specification.
A specification contains all the functions and requirements for a program. It will specify what functions are required and what they do exactly. Based on this overview, the basic technical design decisions are made, and from that the system architecture is derived. In the case of an assignment of a service company, the requirement specification is the contractual basis for the agreed services. Therefore, the completeness and accuracy of the measures in specifications and requirements of particular importance to the client.
System design / technical concept
A systems analyst or designer, for smaller projects, the programmer defines on the basis of the specifications define the architecture program. As far as standard software products are used, takes place in this phase, a specification of the planned product integration and adaptation. For newly developed software for the design of the data model and the individual functions and algorithms or the object and class structure takes place. If already adapted existing software (adapted ) must be, so is determined at this stage, what changes and enhancements are required. The result of the system design is also called DV - concept.
In the implementation phase, the previously designed application solution is technically realized by software products configure, customize existing software or programs or program parts are fully recreated.
A rebuild of software is usually through programming, that is, the individual functions, objects, classes, etc. are coded in a programming language using an integrated development environment.
The software is tested in software testing in two ways, firstly
- Technically, that is a correct implementation of the design specification and program errors, and on the other
- Content, that is, completeness with respect to the functional specification and suitability for the intended purpose.
During the system test is the sole responsibility of the contractor, the test procedure is usually carried out in collaboration with the end users of the client.
It is in software development than normal, that programs are flawed. Sometimes even whole parts have completely re- implemented, thus reprogrammed. Since in complex applications can not be excluded with certainty that amended parts of the program can not influence about other program functions ( side effects ), a renewed complete test of the whole system should be done after fault clearance. Until the final release of the software most ( iterative procedure ) several test and debug cycles are required.
The finished software, accompanied by any required standard software products, hardware and the like. is then ( an Application Service Provider ) partly filled during the installation on the computer systems of the customer or the operator and made operational. , "Test" - - " Training " - This parallel between " productive " and is often "development " installations distinguished.
Depending on the technical platform installation on central computers (servers ) or on the workstations or both takes place. For database applications, if necessary, is done even a tuning the database. In some cases, still there is a migration from older application solutions.
For larger projects, often done initially only one installation on a test system or in a few pilot users. The subsequent extension (installation and commissioning) to other locations is called rollout.
An essential part of the project is the introduction of support, particularly in the form of training or instruction of end users, power users and administrators.
There are many different training concepts. A larger number of users is often trained on so-called "multipliers". Multipliers are users who in turn train other users. This procedure is also called Train the Trainers. Increasingly, user training takes place over the Internet with appropriate training applications.
Maintenance / care
After the commissioning of a software solution, a continuous follow-up care is necessary and customary. This includes both a support for the user, eg via the hotline during normal operation as well as enhancements to the software if necessary. With external software development / project management is regulated in both a support contract.
A distinction is made between a first- level support and a second-level support. The first- level support (including Helpdesk) is the first point of contact for all incoming support issues and will answer all problem reports. But he derives only severe problems at the second- level support for standard software, eg at the product manufacturer to continue.
The ongoing adaptation of the software to changing requirements or environmental conditions, eg type of new versions of standard software is referred to as " software maintenance ". Major changes are processed on their own maintenance projects, minor adjustments frequently. Than maintenance tasks with simpler process rules The management of the subsequent introduction of changes into a running system called change management.