The software engineering or software technology , English Software Engineering ( SE ), is engaged in the production or development of software , organization and modeling of the associated data structures and operation of software systems . A definition by Helmut Balzert describes the area as
Software technology encompasses a large number of sub-areas which, in their entirety, accompany software development. The experimental investigation of software technology is also important in order to measure and improve its practical use. There are various approaches to describing the “state of the art” in the field, including the Guide to the Software Engineering Body of Knowledge (SWEBOK) of the IEEE Computer Society .
The IT discipline software technology is called in parlance and as a synonym with "software development"; In the narrower linguistic sense, however, “software development” stands for the activities that are carried out within the software engineering discipline.
In a broader sense, software technology is understood - in addition to development - also to operate software using information technology and / or the technical devices and system software that are used for this or for software development.
Due to the high effort involved in creating and maintaining complex software, development is carried out by software developers on the basis of a structured (project) plan. This plan (the procedural model ) divides the development process into manageable phases that are limited in terms of time and content. The software is thus completed step by step. The phases are closely interlinked during the entire development process. In practice, methods are also used that abandon the multi-stage system analysis, system design / concept and subsequent implementation and testing, for example under prototyping , agile software development .
The software technology includes the entire process from the identification of requirements to the commissioning of a specific IT solution, and sometimes beyond. The main object is the provision and introduction of application software , partly plus the required hardware and networks .
Projects are often carried out by or with external service companies, but often also as in-house developments. The procedures for project development are correspondingly diverse, also depending on the type of project: From a very structured approach, see waterfall model , to various mixed forms, to very flexible, open methods such as agile software development . Accordingly, a distinction is made between top-down and bottom-up approaches.
In the following, some important aspects and typical stages / phases of project development are described that are more or less pronounced in practice.
The phases and their tasks are listed in the following table:
The above-mentioned sub-steps of software development are not necessarily run through in full for every project. Rather, individual processes are selected specifically for the respective requirement. This is necessary from the point of view of reducing costs and administration.
The entire process of project development is usually subject to a more or less pronounced project management . In the case of implementation by an IT service provider, independent project management is usually carried out on both the client and the contractor side. In order to resolve conflicts between the two project managers, a control committee ( steering committee ) composed of the management of the client and the contractor is often used.
Typically, larger projects also involve greater project management effort, while medium-sized or smaller projects are often handled "on the side".
External IT consultants are often used to supplement and support the people involved in project management.
Quality management within the project is understood as a sub-area of project management. It comprises the sub-areas:
- Quality planning, i.e. identification of the quality criteria relevant to the project and the methods with which they can be met.
- Quality assurance, that is, regular and regular evaluation of project performance so that the project meets quality standards.
- Quality control, that is, monitoring project results to determine whether quality standards are being met and to eliminate the causes of inadequate performance.
Quality management in the project must address both the performance of the project and the quality of the project product. Modern quality management and modern product management complement each other. Both disciplines recognize the importance of
- Customer satisfaction
- Prevention takes precedence over verification
- Management responsibility
on. Quality improvement programs carried out by the sponsoring organization, for example in accordance with TQM or ISO 9000 , can be integrated to improve the quality of the project and that of the product.
As in general in project management, the permanent conflict of goals between quality, costs and time must be taken into account. In software projects in particular, the project management team is often under tight deadlines and is exposed to a particularly high risk of neglecting quality.
Due to the complexity of information systems , “absolute” security or quality are not economically feasible. Therefore, methods of risk management are often used for categorization and prioritization in order to guarantee an adequate level of system security and quality for the respective project.
Aspects of risk management should be taken into account over the entire system lifecycle , i.e. starting with the concept, through development or programming, implementation and configuration and during operation up to the decommissioning of the system.
In connection with the project development, the system analysis for project preparation is meant here. The object is the content-related recording of the requirements by questioning future users, as well as the systematic investigation of further factual and technical requirements and boundary conditions (interfaces to third-party systems, legal requirements, etc.). The result is usually a technical concept , often also a specification sheet .
A functional specification contains all functions and requirements for a program. This specifies which functions are required and what exactly they do. This overview is used to make the basic technical design decisions, and from this the system architecture is derived. If a service company is commissioned, the specification sheet is the contractual basis for the agreed services. Therefore, the completeness and correctness of the specifications and requirements made therein is of particular importance for the client.
System design / technical conception
A system analyst or designer, and also the programmer for smaller projects, determines the program architecture on the basis of the specifications . As far as standard software products are used, a specification of the planned product integration or adaptation also takes place in this phase . For new software to be developed, the data model and the individual functions and algorithms or the object and class structure are designed. If existing software has to be adapted (adapted), this phase defines which changes and extensions are required. The result of the system design is also called the IT concept .
In the implementation phase , the previously designed application solution is technically implemented by configuring software products, adapting existing software or completely new programs / program parts.
A new creation of software is mostly done by programming , i. H. the individual functions, objects, classes, etc. are coded in a programming language with the help of an integrated development environment .
The software is tested in the software test in two ways, on the one hand
- technical, d. H. on a correct implementation of the IT concept and on program errors , and on the other hand
- content, d. H. for completeness with regard to the specification and suitability for the intended purpose.
In software development, it is normal for programs to be faulty. Occasionally, entire parts have to be completely redesigned, i.e. reprogrammed. Since in more complex applications it cannot be ruled out with certainty that changed program parts cannot influence other program functions (side effects), a complete test of the entire system should be carried out again after the error has been eliminated. Several testing and troubleshooting cycles (iterative procedure) are usually required before the software is finally released.
The completed software together with any standard software products, hardware, etc. Ä. is then installed on the client's or the operator's (an application service provider's ) computer system and made ready for use. A distinction is often made between parallel “productive”, “test”, “training” and “development” installations.
Depending on the technical platform, the installation takes place on the central computer ( server ) or on the workstation computers or both. In the case of database applications, the database may also be tuned . In some cases there is a migration from older application solutions.
In the case of larger projects, there is often only an installation on a test system or with a few pilot users. The subsequent expansion (installation and commissioning) to other locations is called rollout .
There are very different training concepts. A large number of users are often trained via so-called "multipliers". Multipliers are users who in turn train other users. This process is also called train the trainers . User training is increasingly taking place over the Internet with appropriate training applications.
Maintenance / care
After the commissioning of a software solution, continuous support is required and usual. This includes both user support, e.g. B. via hotline during operation and software extensions if required. In the case of external software development / project management, both are regulated in a support contract.
A distinction is made between first-level support and second-level support . The first-level support (also helpdesk ) is the first point of contact for all incoming support questions and accepts all problem reports. But he only directs serious problems to second-level support. B. at the product manufacturer.
The ongoing adaptation of the software to changing requirements or environmental conditions, e.g. B. to new versions of standard software used , is referred to as "software maintenance". Larger changes are processed through in-house maintenance projects, while smaller adjustments are often performed as maintenance tasks with simpler process rules. The management of the subsequent introduction of changes into a running system is called change management .
While a strict separation between software development and maintenance was assumed until the beginning of the millennium, this limit is increasingly disappearing. In general, software evolution is still used .
- Helmut Balzert : Textbook of software technology. Vol. 1. Software development. Spektrum Akademischer Verlag, Heidelberg 1996, 1998, 2001, ISBN 3-8274-0480-0 .
- Thomas Grechenig, Mario Bernhart, Roland Breiteneder, Karin Kappel: software technology. With case studies from real development projects . Pearson Studies, 2010, ISBN 978-3-86894-007-7 .
- Jochen Ludewig, Horst Lichter: Software Engineering. Basics, people, processes, techniques . 3. Edition. dpunkt, 2013, ISBN 978-3-86490-092-1 .
- Gustav Pomberger , Wolfgang Pree : Software Engineering. Architecture design and process orientation . 3. Edition. Hanser, 2004, ISBN 3-446-22429-7 .
- Ian Sommerville : Software Engineering . 9th edition. Pearson, 2012, ISBN 978-3-86894-099-2 .
- Learn to program Programming vs. Software development 
- The Project Management Institute (Ed.): A Guide to the Project Management Body of Knowledge (PMBOK Guide). German edition 2000, Newton Square, Penn., Project Management Institute. ISBN 978-1-930699-21-2 , pp. 95-103
- Kessler, Heinrich; Winkelhofer, Georg: Project Management . 4th edition. Heidelberg 2004, Springer. Pp. 55-56
- Wendt, Dierk (spokesman of the working group): Classic errors in software development , TU Ilmenau , version of October 6, 2005, accessed on February 9, 2011
- Ian Sommerville, Software Engineering, PEARSON, Version 9, 2012, p. 276, ISBN 978-3-86894-099-2