When pursuing the efficiency required for a company to survive, it becomes essential to build a system. How is the flow of system development this time? I will introduce the article.
As an introduction to system development, I will talk about the most basic question, "What is system development?"
What do you think of when you first hear the word "system"? The general meaning of this word is "an overall unity that orders many things and a series of works. A system. More narrowly, an organization or an institution." You may think of a system kitchen. This means that the equipment has a set of functions required for the kitchen as a whole.
However, a system in a business generally refers to software that each department or individual employee builds to smoothly process their daily work. In other words, system development means developing such software or developing software to be provided to the outside as a service.
The specific way to develop it is to use "programming". Programming is a means for developing software by specifying various processes in a computer-understandable language.
Furthermore, various people are involved in system development. A system engineer who thinks about the overall picture and schedule of the system to be developed while discussing various things with customers and end users who use the software, and a programmer who develops the actual system. In addition, various people are involved depending on the scale of development.
The system development process flows from the upstream process to the downstream process. In the upstream process, the conceptual part is strong, such as defining system requirements and designing, and the technical elements become stronger as it flows to the downstream process. Let me briefly explain the process.
① System planning
The beginning of the system development process is "planning". Generally, a system company receives a request to "build a system like this," so the system company creates a system plan and presents it to the client. It may be specified from the beginning and a request may come, or it may be a competition.
② System requirement definition
Once the formal request is made, the next step is to define the system requirements. It is important to define the details such as what functions this process requires for customers and end users, and the system resources to realize them.
③ System outline design
Once the system requirements have been defined, we will design the outline of the system. The outline is the basis of the system, such as "What kind of design should the UI (user interface) be?", "What should be the structure of the database?", "What kind of form can be input / output?" It is to design the part.
④ Detailed system design
Once the outline of the system outline design is decided, each design will be reduced to the program level. One of the tasks is to define the functions to be realized in each program and roughly assign tasks.
⑤ Program design
For the items decided in the detailed system design, we will design more detailed processing procedures and individual structures. This is programming design.
⑥ Program coding
Writing program code based on the design is called coding.
⑦ Various tests
There are four types of system development tests. The first is a program test, a test that detects problems by running a coded program as a single unit. The second is the integration test, which is a test performed at the functional level by linking each program. The third is a system test, which tests the entire system in which each function is linked. The fourth is operational testing and evaluation of system availability based on end-user empirical data.
⑧ System operation and maintenance
If all the tests are cleared and there are no problems, the system will be released and the process of system operation and maintenance will be started.
We introduced the system development process. However, system development does not simply follow this trend. There are several methods for this, each with different advantages and disadvantages.
It is a method of setting a short development period called "iteration" and prioritizing each requirement for development. It is a method that carries out the development process of (3) to (7) described above for each function, and has the advantage of being able to release new functions more quickly than the conventional system development method.
The biggest advantage of agile development is "less rework". Since the development process is repeated for each function, there are very few rework, and even if correction is necessary, it can be easily handled. As a result, labor productivity is improved.
However, since the development cycle goes around for each function, it tends to be difficult to calculate how long it will take to develop the overall system.
The development method is characterized by the fact that the process progresses in a series of flows from the upstream process to the downstream process. The plan and requirements of the entire system development project will be defined in advance, and development will proceed accordingly.
The biggest advantage is that "there is a clear product for each process". Since the next process is started when the deliverables can be guaranteed to some extent, there are advantages such as easy progress management and improvement of system reliability.
However, since all processes are connected in a series of processes, if a problem occurs in the downstream process, there will be a lot of rework.
Since it is a type of agile development, it is still possible to proceed with system development with a short development period, but in the case of Scrum development, that period is called "sprint" instead of iteration.
This is an indispensable method for achieving transparency, inspectability, and adaptability in system development, and since sprints are basically set within 4 weeks, high-quality system development can be performed in a short period of time. Since it is a system development method that works with a small number of elite people, each development member can take responsibility and become independent as a team.
Leveling and efficiency are indispensable for the smooth progress of system development. Leveling is to flatten the burden on each development member and avoid the burden on a specific development member. By leveling, the burden on each development member is optimized, so system development projects can be carried out efficiently.
Efficiency is an effort to improve development efficiency by eliminating unnecessary work and consolidating double work. In a system development project that is always thinking about efficiency, the development process can be completed by the deadline and a high quality system can be developed.
Utilization of IT tools is indispensable for both leveling and efficiency. Especially chat tools and groupware to promote communication between development members. Not only can these tools facilitate communication, but they can also instantly share problems that arise in system development.
You also need a version control system. We systematically manage the source code created for system development and manage the latest version to prepare a comfortable development environment at any time.
What do you think? This time, I explained the basics of system development. If you are going to work on system development from now on, please refer to it.