"Software Engineering" After-Class Thinking Questions

Chapter One Software Engineering Overview

1. Combine your previous engineering experience and Ren Zhengfei's letter to employees to talk about your views on software engineering.

With the development of science and technology, the demand for software development and the scale of development are constantly increasing. The larger the scale of software engineering, the more issues need to be considered in various aspects, and the greater the manpower and material resources consumed. I think the role of software engineering is to use a series of scientific methods to coordinate and manage every step of the development process under the premise of meeting various needs and ensuring software efficiency, so as to achieve the desired goal with the least expenditure of manpower and material resources.

2. Is software development all about coding? Talk about your understanding of the nature of software development.

Coding is part of software development, and it is also the job of programmers. I think that in the process of software development, in addition to coding, what is more important is the continuous communication between developers and customers. As the development process progresses, customer needs may change, and it is clear why you should write code and write What kind of code and what kind of functions can be achieved to better achieve the expected goals.

3. Illustrate what are the characteristics of the software?

  1. Compared with hardware development, software development depends more on the professional quality, intelligence, organization, cooperation and management of the developers.
  2. There are still latent bugs in large software.
  3. After the software product is successfully developed, you only need to copy the original software to produce any number of the same products.
  4. In addition, the maintenance of software during use is much more complicated than that of hardware.
  5. Since the software is not a physical product, it will not wear out and age

4. What is a software crisis? What are the reasons and solutions for the software crisis?

Software crisis refers to the phenomenon that backward software production methods cannot meet the rapidly increasing demand for computer software, which leads to a series of serious problems in the process of software development and maintenance.

The main reasons for the software crisis are:

  1. The unique characteristics of the software do bring difficulties to development and maintenance
  2. Irregular software development and maintenance process
  3. Lack of software development experience and accumulation of relevant software development data
  4. Contempt, people will always have some wild ideas and requirements when making plans. Contempt is the biggest mistake.
  5. Ignore the importance of software requirements analysis, ignore the comprehensibility of the software, incomplete documentation, underestimate the maintainability of the software, overemphasize coding skills and so on.
  6. Communication problems between users and developers, so that the needs of technical personnel are not comprehensive enough.

Solution:
  Under the guidance of software engineering theory, establish a relatively complete software industrialized production system and form a strong software production capacity. Software standardization and reusability have been highly valued by the industry. Avoiding reuse of labor can alleviate the software crisis.

5. What are the elements of software engineering and what are their functions?

The three basic elements of software engineering are methods, tools, and processes .

  1. Software engineering methods (methods) provide technical solutions ("how to") for building software. The most widely used methods are traditional methods (structured methods) and object-oriented methods.
  2. The tool provides an automatic or semi-automatic software support environment for the application of the method.
  3. The process is a framework of a series of tasks that need to be completed in order to obtain high-quality software. It specifies the work steps to complete each task.

Chapter 3 Software Process Model

1. Briefly describe the conceptual differences between software process, software life cycle, and software process model (software life cycle model).

  1. Software process: A software process is a framework of tasks required to build high-quality software, that is, a series of steps to form a software product, including intermediate products, resources, roles, and methods and tools used in the process.
  2. Software life cycle: refers to the life cycle of software until it is scrapped. In the cycle, there are problem definition, feasibility analysis, overall description, system design, coding, debugging and testing, acceptance and operation, maintenance and upgrading to obsolescence and other stages.
  3. Software process model: It is a development strategy that provides a set of paradigms for each stage of software engineering, so that the progress of the project can achieve the expected purpose.

2. Is the software process the software development process? why?

No, the software process refers to the entire life cycle of the software, from requirements acquisition, requirements analysis, design, implementation, testing, release, and maintenance of a process model. A software process defines the methods used in software development, but the software process also includes the technology applied in the process—technical methods and automation tools.

3. Please select two common software process models and talk about your understanding of them? And compare

  1. Waterfall model: Just like a waterfall flows from top to bottom, you must wait for the work of the previous stage to be completed before starting the work of the next stage. And the output document of each stage is the input document of the latter stage. Therefore, the work of the latter stage can get the correct result only after the output document of the previous stage is correct. At the same time, the cost of correcting mistakes is lower after making mistakes in the early stage, and the higher the cost of correcting mistakes in later stages. It is suitable for software that requires determination, no major demand changes, and the work can be completed in a linear manner.
  2. Incremental model: fusion of the basic components of the waterfall model and the iterative features of the prototype implementation. During the software development process, the software system is divided into many addition and reduction components according to functions, which are completed one by one in the unit of component, and all are integrated into the system Among. The customer's use and evaluation of each increment are regarded as new features and functions released in the next increment. It is suitable for situations where it is impossible to find enough developers before the established business requirement deadline.

Advantages of the waterfall model :

  • It is conducive to the organization and management of personnel in the process of large-scale software development.
  • It is conducive to the research of software development methods and tools, thereby improving the quality and efficiency of large-scale software project development.

Disadvantages of the waterfall model :

  • Generally, the development process cannot be reversed, otherwise the cost will be too great;
  • The actual project development is difficult to strictly follow this model;
  • It is often difficult for customers to clearly give all their needs, which the model requires.
  • The actual situation of the software can only be seen by the customer at the later stage of the project development, which requires the customer to have enough patience.

Application range of waterfall model :

  • The user's needs are very clear and comprehensive, and there is no or little change in the development process;
  • Developers are familiar with the application field of the software;
  • The user’s environment is very stable;
  • The development work requires very low user participation.

Advantages of the incremental model :

  • The advantage of using the incremental model is that the allocation of personnel is flexible, and there is no need to invest a lot of human resources at the beginning;
  • If the core product is very popular, you can increase the manpower to achieve the next increment;
  • Some functions can be released to customers first, which can act as a sedative for customers.

Disadvantages of the incremental model :

  • Parallel development of components may encounter the risk of failure to integrate, and the software must have an open architecture;
  • The flexibility of the incremental model can make its ability to adapt to this change much better than the waterfall model and the rapid prototyping model, but it is also easy to degenerate into a model while making changes, so that the control of the software process loses integrity.

The use range of incremental model :

  • The incremental model is very suitable for upgrading existing products or developing new versions;
  • For products with strict deadlines, the incremental model can be used;
  • Familiar with the field being developed and has a prototype system, the incremental model is also very suitable.

4. According to your current team project, which software process model are you more inclined to choose? why?

In the waterfall model, the scale of the project is relatively small, the needs of the project are relatively clear, and the user's dependence on the development process is relatively small.

Guess you like

Origin blog.csdn.net/m0_46144891/article/details/114433476