From the perspective of engineering practice, this article describes software system development-general Linux technology-Linux programming and kernel information. The following is a detailed description. I am very happy to have this opportunity to communicate with you about software development. I should be a typical computer science class. From my bachelor's degree or master's degree to my PhD degree in the UK, it is computer science. After reading the doctor's degree in 1993, he has been working on application software system development. I have participated in the design and development of the main systems: Animal Genetic Map Information System, virtual hosts, freight tendering system, securities analysis data system, life insurance inquiry system. The time for these projects is long and short (from months to years), the number of project team members is small (from several to dozens of people), and some of the developed systems are established from scratch, some of them continue to be developed on "semi-finished products. Today, I will talk about my experiences in software development based on my practical experience and current industry development. These may be influenced by my background and experience. If they are inappropriate or one-sided, please correct them.
In general, software system development should include the following three factors. 1. technical Skills: programming skills are the core of software development. In addition, other skills are also important, such as engineering practice skills and skills in the application field. 2. team Cooperation: currently, the development of a system is not completed by one's own strength, and software development is a group activity; 3. method process: the methods and steps used for development.
Technical Skills
For software development, developers' technologies and skills undoubtedly play an important role. Currently, the most important and basic technology is Object-Oriented (Object-Oriented. OO technology can effectively describe a system and effectively support system evolution and reuse.
In addition to a solid foundation of computer science and rigorous logic thinking, a developer must have engineering practices. Programming is not equal to software engineering. I think this is the consensus of everyone. Traditionally, program design focuses on the field of computer science to a certain extent and belongs to more abstract areas. Software Engineering is a very specific practice process to make a system that meets user requirements. Therefore, a developer must have the skills to engage in engineering practices, such as system analysis, document writing, source code control, and tools.
Another skill is to master the knowledge in the application field. Generally, an application software system is always used in a certain field. Therefore, a developer should have a certain degree of knowledge in the application field. This requirement is often ignored. According to my observations in practice, what the industry needs most is developers who are proficient in IT technology and industry knowledge. Therefore, a developer should be mentally prepared to learn the knowledge in the industrial application field.
Team Cooperation
Teamwork is a word that is often heard. in software development, teamwork is particularly important. Generally, software developers are professional and technical personnel with low IQ. To develop high-quality software systems, apart from the aforementioned "hard" skills, there should also be some "soft skills", the most important of which is interpersonal communication skills. This includes knowledge, listening, presentation, discussion, and conflict handling skills. In software development, teamwork is mainly reflected in the discussion of design schemes, establishment of coding standards, mutual reviews of source code, and review and adjustment of the development process. Of course, another important aspect is that the project manager should keep you informed of the progress of the project and let everyone know the role of their work on the success of the project, this gives everyone a sense of participation and achievement.
Procedure
The method process of software development is aimed at the randomness of development, that is, code and fix ). It mainly draws on methods in other engineering fields. The most famous is the "Waterfall" process, which breaks down software development into such stages: requirement Analysis, Specification Description, system design, coding implementation, test and verification. In development practices, there are not many successes that follow this process. The reason is that this method has a precondition, that is, the system requirements must be clear, and the demand analysis should remain unchanged once completed. In the real world, especially in commercial system development, this is almost impossible. Requirements are usually vague and changing at any time during system development. Therefore, the process of the required method must be able to adapt to this change. After all, the first requirement of a software system is its correctness, that is, it can correctly complete the required task.
In recent years, Extreme Programming, or XP, has triggered an agile development movement. The basic purpose of "Agile development" is to adopt incremental (or called iterative and spiral) development methods. System functions are divided into several small functions. Each incremental cycle is two to one month or two (depending on the situation) to implement a new function. Code executed in each cycle must undergo sufficient (unit) tests. Business people or users must be associated with the development team to ensure that the functions provided at any time meet the needs of users. Project team members should work in the same location to ensure efficient and face-to-face communication. Review regularly (typically at the end of each cycle) and adjust the methodology process at any time to achieve the most effective development.
Most of my projects use this agile development method. Some of them follow these principles strictly. In some projects, some principles are not strictly followed for various reasons, and the result proves the importance of these principles from the opposite. If there is a project, the development team is scattered in two countries, and there is no business personnel or users at the end of the main development work. The consequence is that developers should discuss problems in coding implementation by phone and email with the other business staff during the reading of the requirement documents, which greatly compromises the efficiency and quality, it is likely to leave some hidden risks.
When talking about software development, you may think of CMM. Here I would like to mention Watts S. Humphrey, called by the father of CMM. He recently gave a speech at the agile Methodology conference entitled "Setting the agile context", which lists some software development principles, it also focuses on how to use the TSP (Team Software Process) and PSP (Personal Software Process) proposed in the past few years for development. These principles and processes are similar to the aforementioned agile principles and processes. In addition, Humphrey unified CMM, TSP, and PSP in a technical report in the previous two years, and positioned them as: CMM for improving one (software) enterprise management capabilities, TSP to improve the effectiveness of a development team, PSP is to enhance personal skills and discipline.
In short, from the Development Trend of software development methods and my personal work practices, in addition to technical skills, it is very important to develop high-quality software products, close interaction with users and incremental development process. Of course, these are just some principles. How to implement them depends on the actual situation ".
The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion;
products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the
content of the page makes you feel confusing, please write us an email, we will handle the problem
within 5 days after receiving your email.
If you find any instances of plagiarism from the community, please send an email to:
info-contact@alibabacloud.com
and provide relevant evidence. A staff member will contact you within 5 working days.