Software defines the world, engineering leads the future - Sun Yat-sen University School of Software Engineering Introduction to Software Engineering Assignment

Table of contents

Software engineering, deepening understanding

personal confusion

Definition of software and software engineering

Inspiration for learning ideas

Understanding and thinking about software crisis

Preliminary understanding of software testing

Frontier of science and technology, integrity and innovation

Code has intelligence, education has feelings

Easy to understand and fascinating

Keep up the good work, the future is promising

"Software defines the world" is a loud slogan for software workers, and "engineering leads the future" is my summary and thinking after finishing the introductory class.

As a special course and a required professional course offered by the School of Software Engineering, the Introduction to Software Engineering course not only deepens our understanding of software engineering itself, but also gives us a preliminary understanding of the cutting-edge research and application of software engineering, and gets to know the talented teachers We have a better understanding.

Software engineering, deepening understanding

The goal of software engineering is to control complexity, not add complexity. ——Dr.Pamela Zave

personal confusion

Before taking the introductory course, there were two questions that had been bothering me. Is software engineering equivalent to writing code? Which ability should I focus on cultivating? With these two questions in mind, I carefully studied the first lesson taught by Teacher Chen Jianguo. Teacher Chen’s lecture style is humorous and simplifies the complex, which makes me love the School of Software Engineering and the lovely and respectable teachers in the school even more.

Definition of software and software engineering

Software is the vehicle for developing and running products. To quote Mr. Chen’s heroic saying, “If you can’t think of anything, there is nothing you can’t do; it is everywhere and omnipotent, this is software.” Software engineering is an engineering discipline that guides the development and maintenance of computer software. Use engineering concepts, principles, techniques and methods to develop and maintain software, and combine time-tested and proven correct management techniques with the best currently available technical methods to economically develop high-quality software and effectively Maintain it properly, this is software engineering.

Inspiration for learning ideas

Information is the most important product in the 21st century, and software fully reflects this. Software not only provides access to global information networks, but also provides multiple means of obtaining information. In the process of studying software engineering, I should pay attention to the cultivation of computational thinking ability, algorithm design and analysis ability, program design and implementation ability, and system ability. In particular, I should pay attention to the ability to globally control the system and solve problems systematically. System capabilities.

In future work and in current group work, standardized programming habits will help project development. As KentBeck said, "I am not a great programmer, I am just an excellent programmer with good habits." Therefore, I must also strive to be standardized in variable naming and function encapsulation, and write a good program that is concise and clear.

Understanding and thinking about software crisis

Born in sorrow, died in happiness. It is true that the software industry is thriving, but we must also recognize that it is surrounded by dangers. For example, in the process from software design to delivery, "errors will occur in the transmission of information", of which the "swing demand trap" is a typical example. Bertrand Meyer, the creator of the Eiffel programming language and the programming guru who proposed the concept of contractual design, said, "Writing classes without a contract is similar to producing engineering components without specifications. No professional engineer will consider this idea." The importance of a document as a program of action is self-evident. Therefore, in the future learning process, I must not only work hard to improve my programming level, but also continuously strengthen my ability to write documents and lead a team.

Preliminary understanding of software testing

According to GlenMyers, software testing is to design appropriate test cases and use as few test cases as possible to find as many software errors as possible. In Teacher Mao's class, I learned that in order to find all errors in the program through testing, we must exhaust all possible input data, which is impossible. As senior software testing engineer Cem Kaner said, "My experience is that it is unrealistic to try to find all the BUGs." Program testing is to prove that the program correctly performs the expected functions. Based on the traditional understanding of checking input and output, I also learned that a program should not only complete the functions it needs to complete, but also should not complete things it should not do. For example, it cannot judge three edges with side lengths of 0, 0, and 0. is an equilateral triangle because it is not a triangle at all.

I also learned the specific knowledge and testing methods of white box testing and black box testing. White box testing, also called structural testing, checks the internal logic of the software, while black box testing, also called behavioral testing, checks the output results of the software. Is it the same as expected. This is a bit like testing a circuit in physics. White box testing is like the circuit is known, and tools can be used to measure the internal properties and the internal structure can be simplified. Black box testing is like the circuit only leaving the interface, only the interface. Different voltage inputs can be used to test the output results. From this, three white-box testing methods such as logic coverage testing, basic path coverage testing and loop testing are derived, as well as five black-box testing methods including equivalence class division, boundary value analysis, comparison testing, error guessing and cause-and-effect diagrams.

Frontier of science and technology, integrity and innovation

The introductory course to software engineering not only laid a solid theoretical foundation, but also introduced us to the current popular and practical technologies based on the current situation, which not only allowed us to broaden our horizons and increase our knowledge, but also deepened the friendship between teachers and students and stimulated students' interest in scientific research.

Code has intelligence, education has feelings

Teacher Wang Yanlin focused on code intelligence and explained advanced technologies including code completion and automatic generation of code comments, allowing everyone to see the hope of solving the two major problems of "reinventing the wheel" and "not being able to understand other people's code". Teacher Wang also introduced her educational sentiments to us, and the students were all moved.

I was fortunate enough to have the opportunity to have in-depth exchanges with Teacher Wang Yanlin after class. She was very knowledgeable about the questions I raised, and she gave me valuable suggestions on my future academic plans and growth path. I was touched by her passion for education and made me once again grateful to study in the School of Software Engineering!

Easy to understand and fascinating

Teacher Lu Zhichao organically combines computer vision recognition, deep learning and automated deep learning, and uses intuitive diagrams to explain the obscure underlying principles to the students. After finishing the class, a group of us "newbies" not only gained a lot in knowledge, but also Stimulated our enthusiasm for learning.

Teacher Su Yuxin peeled off the "hanging in the air" topic of cloud computing and explained its practical applications thoroughly. "The essence of cloud computing lies in resource sharing and time-division multiplexing." The essence of cloud computing is the sharing of computing resources. Teacher Su focused on closely connecting microservice architecture with enterprise development, allowing students to understand the advanced development methods of the industry in advance and lay a solid foundation for joining the software industry in the future. When explaining the microservice application of OJ software, Mr. Su also used the SSEOJ we are currently using as a model to vividly demonstrate the front and back ends of an OJ system, and intuitively and clearly presented the previously "mysterious" OJ system principles to us. .

Of course, the introductory classes given by other teachers were equally exciting. For example, Mr. Nan Yuhong’s software attack and defense battle, Mr. Chen Jiachi’s blockchain development trends and challenges, Mr. Wu Weibin’s confrontational machine learning and explainable AI software, etc. Here I would like to express my heartfelt thanks again to all the teachers!

Keep up the good work, the future is promising

In Teacher Chen Jianguo’s class, I realized that the software industry is an innovative and dynamic sunrise industry that requires a large number of software talents at different levels. The official website of the college introduces the software engineering major as an independent first-level discipline and a national first-class undergraduate major construction site. The Ministry of Education has even rated software engineering as a "green card" major for three consecutive years. Through my own efforts, studying the rising software engineering major in a vibrant college is what I have always wanted to do.

おすすめ

転載: blog.csdn.net/weixin_64123373/article/details/132911795