What is the purpose of software development

Software development


What does the right software development process look like?

Many people believe that software development is a process that has a well-defined beginning and a well-defined end. However, the actual process in developing software is essential in this day and age more complex and extends over a long period of time. The path does not run in a straight line, but rather in a spiral.

At the beginning of every software there is an idea. No matter how small the software may be, it requires an intensive planning phase. In many examples of successful software, a long time passed between the first idea and the first rough draft a draft of the software architecture. The main functionality of the software is at the center of the first considerations. In many ways one can develop software compare to building a house. The architect has to know what purpose the final structure is supposed to serve before starting work.

Most software projects today do not deal with trivial problems. In the rarest of cases, the program will be able to complete the desired task in a single step. Need to get out of the rough idea about the purpose of the software so several smaller subtasks are derived. These form a rough outline of the final program. This step also includes getting to know the full range of functions of the software. After all, you don't just build a house straight away.

Only after planning the full range of functions can Data and data structures determined that are required for the individual tasks of the software. Incorrect formatting of a certain data set can lead to a long delay in the completion of the entire project. The data structures must be chosen so that on the one hand guarantees the highest level of security in terms of data protection and, on the other hand, all parts of the software that require access to the data also get this access.

Once all of the planning is done, the Requirements carefully checked again and compared with the current planning of the software. Only when all requirements have been met does the rough draft receive approval to be developed. With the help of various methods of project management, the Realization of the programming work be carried out. Due to the particularly high complexity of today's software, the various skills of employees must be used efficiently for development.

In the final phase of implementation, the process of Development of the software flows over into a test phase. The software is alternately tested for error-free functionality and then revised as soon as errors occur. At this point there are two different ways in which the development of the software can continue. If serious errors are discovered within the architecture of the system or if a certain functionality cannot be implemented with the current technology, the entire process must be repeated. The new findings are then incorporated into the original planning and enable the team to come one step closer to successfully completing the development of the desired software on the next attempt. There is also the possibility that there was a miscommunication with the client when creating the original order or that he wishes to adapt the finished software. In these cases, the entire process must also be repeated.

The software can only be published as soon as both the developer and the client are satisfied with the final product. The Publication also marks the end of software development represent.

 

How does effective project management work in software development processes?

In the context of IT project management, several different effective forms have emerged to optimize software development processes. Just as every team has individual requirements for the development of the software and consists of individual people, some methods of project management are more effective than others. Currently, three different forms have proven to be particularly effective and are used by almost every development team. These are that V-Modell, Extreme Programming and Scrum.

The V model

With the V-Modell, the software development process is carried out in divided into different phases. The V-Modell refers not only to processes of software development, but also to Quality assurance processes. The name of the model is based on the typical representation of the approach used. If the details of the individual work steps are shown in a diagram as a function of the time that has passed, the result is typically a “V”. Up to halfway through the project the level of detail of the tasks increases and then decreases further and further.

For the time being you start with on the left side a technical or functional specification. This is expanded in more and more detail into a technical specification or a basis for implementation. The The top of the model includes the actual implementation. On the right-hand side, the requirements for the software are then compared with the existing functions.

This particularly effective method was first used in 1979 by the American software developer Barry Boehm. She provides one further developed form of the waterfall model The model must be worked through step by step, as the results of the individual phases are used as the basis for the development of the next, deeper project phase. On closer inspection, it is easy to see that the entire left-hand side of the model, which consists of specialization phases and a final phase of implementation, is an exact replica of the waterfall model. Only the test phases shown in the right branch turn the waterfall model into the V model. This comparison tries to to achieve the highest possible coverage of tests. Since each test phase was derived directly from the associated specification phase, an optimal test of all requirements is guaranteed.

Extreme programming

In Extreme Programming (XP) or in German extreme programming, takes solving the programming task the central role of software development a. Only very little importance is attached to the formal requirements. Although the effectiveness of this model is very controversial among software development experts, it presents A frequently used and popular model, especially among young development teams. Basically, you derive an essential programming problem from the customer's requirements and try to solve this according to your own standards. Then you approach the customer's requirements in small steps.

This model was created through the combination of various proven methods of software development, in which one only paid attention to the fastest possible achievement of visible results. These methods are also called "Best practices" designated. With extreme programming you pay attention to a particularly structured teamwork. That is why the communication and openness of all team members are paramount. The overall success of this method is built on the basic pillar of communication.

This method generalizes the situation that often occurs in practice that the customer himself does not yet know his requirements for the software commissioned at the start of the project. Since in some cases numerous functions of the software that had top priority at the beginning of the project become more and more insignificant over time and ultimately even become obsolete, the development team ignores all customer requirements that are not the main function of the software. First after the customer is satisfied with the main functionality of the software, additional functions can be commissioned and integrated.

This is intended to enable the software to be made available more quickly. In practice, consistent adherence to extreme programming usually has one The result is higher software quality, increased customer satisfaction and less processing time. With this method, the customer gets the feeling that they have not just placed an order, but have actively participated in the production of the desired software.

Scrum

The Scrum has so far proven to be the most effective method of software development proven. It is particularly versatile, so that it is currently being used in significantly more specialist areas. In addition to developing software, it is also widely used in event planning and marketing. The basic aim is to use this method to ensure particularly flexible project development.

The core of Scrum consists of three roles and five different activities. The exact rules are recorded in a so-called Scrum Guide. This can be individually adapted and designed to ensure the greatest possible freedom in project design. In addition, this method focuses on the principles of transparency, review and adjustment. All progress and obstacles of the project must be visible to the whole team at all times. To this end, both the product and the procedure practiced are regularly checked and adjusted if necessary.

A scrum Team always consists of a Product Owner, a Scrum Master and any number of members of the development team. Outside of the Scrum Team, all stakeholders are usually entitled to participate in most of the Scrum Team's activities and to be kept informed of all developments. Stakeholders are all people who have a justified interest in successfully completing a project but are not part of the development team. It can be customers, users or management.

The Product Owner is forresponsible for the economic success of the project and should maximize the profit to be achieved. To do this, he prioritizes certain properties of the software to be created and continuously ensures that the focus is on achieving the greatest possible profit. The Scrum Master, on the other hand, is responsible for that the Scrum method actually works in the current project. He or she must continuously respond to problems facing the team and ensure that the maximum benefit can be derived from this method. The development team is exclusively responsible for developing the software according to the specifications of the product owner and under the guidance of the Scrum Master.

This team uses the five activities of Scrum in the implementation of software development. The most formative activity of Scrum is the daily “Daily Scrum”. The entire team meets and speaks openly about the current state of development and about problems that have developed in the course of the previous day could. During the Daily Scrum, a solution should then be found for all problems that arise, so that every member of the development team knows how to deal with the problem after the Daily Scrum.

There are also so-called Sprints. These places a stage of development in which particularly great progress is to be achieved. Accordingly, in “sprint planning” it must be recorded what exactly is to be achieved and how it is to be achieved. After the sprint, the entire sprint is analyzed and evaluated in a sprint review. Then can analyzed the approach of the team during the “Sprint Retrospective” to optimize them for the next sprint. In addition, the entire team continuously conducts several “Product Backlog Refinements”. In this a product backlog is created, which contains a lot of valuable information for all stakeholders.

 

If I want to study software development, where can I do it?

Software development can be done at almost every university or college to study. The degree of intensity with which the university or college approaches the topic of software development, however, depends particularly strongly on the chosen course of study.

The course that deals most intensively with the topic of software development is the Bachelor of Science “Software Engineering” with the mostly trailing Master of Science “Software Engineering”. However, this very special course is still offered by a few universities. The most profound knowledge is obtained at the Technical University of Munich. There, the elite software engineering course is offered, which deals with the subject in greater depth than anyone else.

Another point of contact is the Ulm University There, too, you can deal specifically with software development in a course divided into a bachelor's and master's degree. Furthermore, the Heilbronn University also offer this course. Both universities have significantly lower entry requirements than the Technical University of Munich and still offer a specialized course.

Otherwise only the two offer this possibility Distance universities in Hagen and Darmstadt. Regardless of where you live, you can pursue this particularly special course either at the Wilhelm Büchner University in Darmstadt or at the Distance University in Hagen.

However, you do not necessarily have to study software engineering to deal with software development during your studies. Almost every university and college offers a degree in computer science. The specialization of the subject is irrelevant here. Every student in a subject that is closely related to computer science receives at least a superficial knowledge of software development and can specialize in this subject depending on the university. Some universities even offer a multiple bachelor's degree in which you can choose software development as a minor for studying German, history or social education. So there are numerous opportunities to get involved in software development during your studies.

Is there another way I can learn to develop software?

The development of software is by no means a subject that you can only learn if you only deal with it in your studies. In most universities, while studying computer science, knowledge of software development is only obtained as a by-product of numerous other specialized subject areas.

There are numerous other ways to learn software development. You don't even have to study for that. The most important principles of software development are already described in the Training as an IT specialist conveyed. It is not uncommon for IT specialists to even have more specialized knowledge of software development than people who have completed a degree in computer science.

Another possibility is the Participation in one of the numerous courses available on the Internet. Some of these courses are chargeable and others are completely free. However, with most it is possible without any problems to gain comprehensive knowledge of software development.

The easiest option, however, is self-study. Apart from the training, you have to acquire the knowledge about the development of software yourself in any case. Many universities expect their students to teach themselves the basics of software development alongside their studies. However, you do not have to be enrolled in a university for this job. It exists numerous books and free knowledge on the Internet, with which one can build up a profound knowledge about the development of software.

In any case, specialization of the knowledge acquired takes place exclusively through practice. Whether in the university, in training or in independent learning - that The best understanding of software development can only be achieved by developing your own software. All you need is an idea of ​​what you want to work on and a group of people who want to develop this software as well. In software development, the acquisition of knowledge through “learning by doing” is more widespread than in any other discipline.