[Software Engineering General Review] Chapter 1 Overview of Software Engineering

  1. Definition of Software Engineering (Explanation of Terms)

In a nutshell, software engineering is an engineering discipline that guides software development and maintenance .

Software engineering is an emerging discipline that studies how to better develop and maintain computer software from two aspects of management and technology. Apply engineering concepts, principles, techniques and methods to develop and maintain software.

Software definition: (short answer questions)
1. IEEE's software definition in 1983:
computer programs, documents, data, methods, and rules necessary to run programs. Methods and rules are described in the document and implemented in the program.
2. Simplified software definition:
software = program + document + data Data
: it is the data structure that enables the program to be processed properly
Program: it is the executable instruction sequence
document that can complete the predetermined function and performance: it is required for the development, use and maintenance of the process program graphic information
  1. Definition of IEEE (short answer questions)

1. It is the application of a systematic, normative, and measurable approach to software development, operation, and maintenance, that is, applying engineering to software
2. The approach mentioned in the study

3. The development of software engineering has gone through four important stages:

1. The first generation of software engineering - traditional software engineering
2. The second generation of software engineering - object engineering
3. The third generation of software engineering - process engineering
4. The fourth generation of software engineering - component engineering
  1. Three elements

Software engineering methodology includes three elements: method, tool and process
1. Method: It is a technical method to complete various tasks of software development, answering the question of "how to do it".
2. Tool: It is an automatic or semi-automatic software engineering support environment provided for the application of the method.
3. Process: It is a series of task frameworks that need to be completed in order to obtain high-quality software, and it specifies the work steps to complete each task.

  1. What is a software crisis (glossary explanation)

Software crisis refers to a series of serious problems encountered in the process of computer software development and maintenance.

The software crisis consists of two issues:
1. How to develop software to meet the growing demand for software;
2. How to maintain the ever-expanding amount of existing software.
  1. software technology

5.1 Software Development Technology

Software structure, development method, tools and software engineering environment, software engineering standardization

Software engineering technology:
software development methodology, software development engineering, software engineering and software engineering environment

5.1.1 Software development (short answer questions)

Software development is the process of building a software system or a software part of the system according to user requirements. Software is generally implemented using some programming language. Usually, software development tools can be used for development. Software is divided into system software and application software, not only including programs that can run on computers, but files related to these programs are generally considered to be part of the software

5.1.1.1 System software (project software)

System software refers to the system that controls and coordinates computers and external devices, and supports the development and operation of application software. It is a collection of various programs without user intervention. The main function is to schedule, monitor and maintain computer systems; it is responsible for managing various Independent hardware allows them to work in harmony. System software enables computer users and other software to treat the computer as a whole without concern for how the underlying individual pieces of hardware work.

Generally speaking, system software includes an operating system and a series of basic tools (such as compilers, database management, memory formatting, file system management, user authentication, driver management, network connection, etc.), which are tools that support computer systems. That part of the software that functions properly and implements the user's actions.

System software is generally carried along with the computer system when it is purchased, and can also be installed separately as needed.

5.1.1.2 Program software (application software)

Application software (Application) corresponds to system software, and is a collection of various programming languages ​​that users can use, as well as application programs compiled in various programming languages.

Application software is the part of software provided to meet the application needs of users in different fields and problems. It can broaden the application fields of computer systems and amplify the functions of hardware.

5.2 Software Management Technology

Quality Management, Software Engineering Economics: Cost Estimation, Scheduling

Software Engineering Management:
Software Management, Software Economics, Software Psychology Software Management

5.3 Two types of development methods

5.3.1 Process Oriented (Data Flow Oriented)

A structured approach is a data flow oriented approach

5.3.2 Object Orientation (Chapter 9)

  1. software life cycle

6.1 Life cycle division

The software life cycle consists of three periods: software definition, software development, and operation and maintenance (also known as software maintenance), and each period is further divided into several stages.

Composition:
1. Software definition: The software definition period is usually further divided into 3 stages, namely problem definition, feasibility study and demand analysis. The general task of this period is: 1) Determine the overall goal that the software development
project must complete;
2) Determine the feasibility of the project;
3) Deduce the strategy that should be adopted to achieve the project goal and the functions that the system must complete;
4) Estimate the resources and costs required to complete the project, and formulate the project schedule.
2. Software development: during the development period, the specific design and implementation of the software defined in the previous period usually consists of the following four stages: overall design, detailed design, coding and unit testing, and comprehensive testing. The first two stages are also called system design, and the latter two stages are also called system implementation.
3. Operation and maintenance: The main task of software operation and maintenance is to make the software meet the needs of users for a long time. Maintenance is required when the following three situations occur:
1) When the software finds errors during use, it should be corrected;
2) When the environment changes, the software should be modified to adapt to the new environment;
3) When the user has new requirements The software should be improved in time to meet the new needs of users.

6.2 steps

Basic tasks in each phase of the software life cycle:
1. Problem definition: "What is the problem to be solved?", rough plan;
2. Feasibility study (rough, not exact): "Is there a workable solution?" , Economic, technical, social (operational) feasibility;
3. Requirements analysis (complete, accurate, clear, specific): "What must be done by the target system to solve this problem", the requirements of the target system. The formal document used here is usually called Software Requirements Specification (SRS);
4. Overall Design (Summary Design): "In a nutshell, how should the target system be realized?", mainly to design several possibilities to realize the target system scheme. Analyze each option, recommend an optimal option and work out a detailed plan. Design the program's architecture. The overall design specification is used to record the overall design results.
5. Detailed design (module design): "How should this system be implemented concretely?" In this stage, each module is designed in detail, and the specific algorithm data structure required to realize the module function is determined. The detailed design specification is to express algorithms and data structures with appropriate expression tools.
6. Coding and unit testing (implementation): The key task is to write correct, easy-to-understand, and easy-to-maintain program modules. The programmer translates the results of the detailed design into programs written in the selected high-level programming language, and finally tests each compiled module (language selection, tool translation, detailed design, results, and test modules); 7. Comprehensive testing
: The tasks are integration testing, system testing, and acceptance testing
1) Integration testing: Assemble the modules tested by the unit test according to a selected strategy, conduct necessary tests on the program during the assembly process, and make the software meet the predetermined requirements through testing (Test report: test plan, test plan, test result);
2) Acceptance test: According to the provisions of the software requirements specification (SRS), the user conducts acceptance of the target system;
8. Software maintenance: It is through various necessary maintenance activities to make the system meet the needs of users for a long time.

6.3 Life cycle model (short answer questions)

The life cycle model stipulates which phases the life cycle is divided into and the execution sequence of each phase, so it is also called a process model.

6.3.1 Waterfall Model

Features:
1. Sequence and dependence between stages
2. Delayed realization point of view
3. Quality assurance point of view (documentation, review)

Suitable projects:
1. Before the project starts, the needs of the project are
clear Before, the solution is also very clear
3. Similar projects such as:
1) Company's financial system
2) Inventory management system
3) Short-term projects

6.3.2 V-model

Suitable projects:
1. Before the project starts, the requirements of the project are clear
2. Before the project starts, the solution is also clear
3. Projects that are very strict on the performance and safety of the system
4. Similar projects such as:
1) Space shuttle etc.
2) The financial system of the company

6.3.3 Rapid Prototyping Model

Suitable projects:
1. Before the start of the project, the requirements of the project are not clear
. 2. The uncertainty of the project requirements needs to be reduced.
3. Similar projects such as:
1) Determine the display interface
2) Verify the feasibility of the first developed product

6.3.4 Incremental Model

Suitable projects:
1. At the beginning of the project, most of the requirements are clarified, but the requirements may change.
2. The market and users are not very accurate, and need to be gradually understood.
3. Functional improvements for large and complex systems (big system transformation), it needs to be implemented step by step.

6.3.5 Spiral model

For large-scale software, developing a prototype often does not meet the requirements. The Spiral Model combines the Waterfall Model with the Incremental Model and adds risk analysis.

The spiral model rotates along the spiral, expressing four aspects of activities in four quadrants.
1. Make a plan: determine the software goals, requirements and selected implementation solutions, and clarify the constraints of project development
2. Risk analysis: evaluate the selected solutions, consider how to identify and eliminate risks
3. Implement engineering: implement software development, coding, Test, etc. 4. Customer evaluation: Evaluate the development work, propose correction suggestions, and plan suitable projects for
the next task : 1. Risk is the main constraint factor 2. Uncertain factors and risks limit the project progress 3. Users are not satisfied with their own needs Clear 4. Some basic concepts need to be tested 5. Some major changes may occur 6. The project is large 7. New technology is used in the project








6.3.6 Fountain model

It is suitable for object-oriented development method (other models are process-oriented)

features:
1. The development process has four stages: analysis, system design, software design and implementation;
2. Each stage overlaps with each other, which reflects the characteristics of software process parallelism;
3 .Based on analysis, resource consumption is tower-shaped;
4. Reflects the iterative nature of the software process, returning from high-level to low-level without resource consumption;
5. Emphasizes incremental development, the whole process is an iterative and gradual refining process.

Guess you like

Origin blog.csdn.net/weixin_51911075/article/details/128794726
Recommended