[software engineering final review content]

foreword

Time cannot be met, and Tao cannot be done in vain.


1. The concept of software engineering

  • Software is a collection of instructions , data , and related documents that a computer system operates , that is, software equals programs, data, and documents.
  • Program: It is a sequence of instructions designed and written in advance according to the requirements of predetermined functions and performances;
  • Data: It is the data structure and information representation that enable the program to process information normally;
  • Documentation: technical data and graphic materials related to program development, maintenance and use.

  • Software crisis: refers to a series of serious problems encountered in the process of computer software development, operation, maintenance and management.

There are so many serious problems in the process of software development and maintenance. On the one hand, it is related to the characteristics of the software itself, and on the other hand, it is also related to the incorrect method of software development and maintenance.


Definition of Software Engineering

  • Using engineering concepts, principles, technologies and methods, in the process of planning, developing, operating, maintaining and managing software, closely combine scientific management and best technical methods, and use appropriate tools to obtain more economical means A range of approaches to reliable software that meets user needs.

Features of software engineering:

  • Software engineering is the use of engineering principles and methods in software development, and a series of scientific and modern methods and technologies to develop software. This engineering idea runs through the entire process of software development and maintenance.

The goal is: to achieve high-quality, high-efficiency and automation of software development and maintenance.


The concept of software life cycle (software planning, software development and operation and maintenance)

  • The software life cycle refers to the entire process from the beginning of software development to the end of software use, that is, the entire cycle of software products starting from the user's development requirements, through development, use and maintenance, until finally eliminated, so it is also called software life cycle or software Life cycle is an important concept in software engineering.

Several concepts of the software life cycle:

  1. software planning
  2. demand analysis
  3. outline design
  4. detailed design
  5. Programming
  6. test
  7. operation and maintenance

waterfall model

  • The waterfall model subdivides the planning period, development period and operation period of the life cycle into several stages.

2. Feasibility Analysis

  • The purpose of the feasibility study is to determine whether the problem can be solved in the shortest possible time with the minimum cost.

  • It must be remembered that the purpose of a feasibility study is not to solve a problem, but to determine whether the problem is worth solving.

Feasibility analysis is also called feasibility study. Its purpose is to conduct a comprehensive and systematic analysis and demonstration around the feasibility of various factors affecting software project development. Whether the software project is worth developing and feasible.

Feasibility in three aspects:

  • technical feasibility;
  • economic viability;
  • operational feasibility.

3. Demand analysis

  • Requirements analysis, also known as software requirements analysis, system requirements analysis or requirements analysis engineering, etc., is the process of in-depth and meticulous research and analysis by developers to accurately understand the specific requirements of users and projects such as functions, performance, reliability, etc. The process by which a statement of requirements is translated into a complete definition of requirements, which determines what the system must do.

Requirements analysis is the primary task after a software project decides to develop, it is the most critical in the entire software development process, and it is also an important link of software engineering.


Data Flow Diagram (DFD: Data Flow Diagram)

  • There are four main types of descriptors: external entities, data streams, processing, and data storage files.
    insert image description here

Modular

  • Modules are the basic components that make up a program, and general software is composed of its modules and sub-modules.
  • The module design takes both cohesion and coupling into account and maintains the relative functional independence of the module.

  • Cohesion: It marks the degree to which elements in a module are combined with each other, which is a natural extension of the concepts of information hiding and localization.

When designing, we should strive to achieve high functional cohesion.


功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。


Functional cohesion is the highest degree of cohesion.

  • Coupling: Coupling is a measure of the degree of interconnection between different modules in the software structure, and is an important factor affecting the complexity of the software.

Control coupling: If a module explicitly controls the selection of another module's functionality by passing control information such as switches, flags, names, etc.

  • The design of modules should be pursued to the greatest extent: high cohesion and low coupling.

Tools for describing software structures

  • Hierarchy diagram
  • HIPO Diagram: "Hierarchy - Input - Processing - Output"

Conceptual Data Model Design

  • ER diagram;
  • The entity-relationship model uses simple E-R diagrams to express an understanding of reality.
  • Advantages: few graphic elements, close to human way of thinking, no need to consider storage structure, access method and specific database software, easy to analyze, easy to design, etc. Users who are not familiar with computer technology can also understand and use it, and it is suitable as a starting tool for data modeling.
  1. Rectangle: Represents an entity set
  2. Ellipse: Indicates attributes
  3. An ellipse with an underlined primary key or code name: indicates the primary key
  4. Diamond: Indicates a relationship. The connection type is represented by a line between the diamond and the entity. A foreign key is represented by an ellipse with an underlined foreign key name. A multi-valued attribute is represented by a double-lined ellipse, and a derived property is represented by a dotted ellipse.

The design steps of the entity relationship diagram are: first determine the entity type, entity attribute and connection type, and then draw the ER diagram.


4. Software detailed design

1. The task of detailed design

  1. Algorithm design of the module
  2. Data structure design within the module
  3. Module Interface Implementation Design
  4. Module Test Case Design
  5. Write a detailed design specification
  6. Detailed Design Review

2. Description tool for detailed design

Graphical tools:

  1. Program flow chart
  2. Box Plot (N - S)
  3. Problem Analysis Diagram (PAD: Problem Analysis Diagram)

Cyclomatic complexity

  • The result measured by McCabe's method is called the cyclomatic complexity of the program.

insert image description here
insert image description here


5. Software Implementation

development of programming languages

  1. First-generation language: It is machine language and assembly language closely related to machine hardware.
  2. Second-generation language: mainly used in various calculations, including FORTRAN、COBOL、Pascaland and BASICso on.
  3. Third-generation languages: directly support structured components, and have strong process capabilities and data structure capabilities, including structured languages ​​and object-oriented languages, Csuch C++/Java/Delphiinto : general-purpose high-level languages, object-oriented languages, and special-purpose languages.
  4. The fourth-generation language: belongs to the super advanced programming language, features: powerful data management capabilities, effective access, query and other related operations on the database...

Program Notes

  • Program comments are divided into: prologue comments and functional comments.
  1. Preamble comments are usually placed at the beginning of various program modules;
  2. Functional comments are embedded in the body of the source program, often placed after specific statements, and are used to describe the work to be done by the statement or program segment.

6. Software testing

  • Definition of software testing: the process of operating software under specified conditions to find software errors, measure software quality, and evaluate whether it can meet design requirements; it is also the use of specific technologies and methods to run evaluation and verify that software meets Requirements or the process of identifying operating results, and are means and processes for testing software correctness, integrity, security, and software quality.

  • Note: The purpose of software testing is to find bugs in software.


Software Test Case Design

  • White box testing is performed in the early stage of testing, and black box testing is mainly used in the later stages of testing.

1. Black box testing

  • The purpose is: to check whether each function of the program can be realized, and to check the functional errors in it, then this testing method is called the black box testing method. Black box testing is also known as functional testing or black box testing.
  • "Black box" means that the tester only knows the interface of the software under test and the external conditions of the interface, without considering the logical structure and internal characteristics of the program, and only checks whether its function meets the specified requirements according to the requirements analysis specification of the program.

2. White box testing

  • If the test plan is tested based on the internal structure of the product, to check whether the internal operation is performed according to the regulations, and whether the functions of each part of the software are fully used, this test method is called a white box test method.
  • White-box testing is primarily a test of the execution path of the program's internal structure , sometimes called glass- box testing .

Seven, software maintenance

  • Software maintenance is the process of managing changes to software after it has been delivered to correct errors or meet new needs.

Four types of software maintenance types:

  1. Perfection maintenance
  2. adaptive maintenance
  3. corrective maintenance
  4. preventive maintenance

Eight, Gantt chart

  • The Gantt chart, also known as the bar chart, is a comparison chart of activity progress and calendar table. Use a horizontal line segment to represent the working phase of the activity; the length of the line segment represents the time required to complete the task , and the start and end points represent the start and end time of the task, respectively.
  • In the Gantt chart, the completion criteria of the task are the delivery of corresponding documents and passing the review.
  • The Gantt chart clearly shows the planned progress of the project and can dynamically reflect the current development progress. Its shortcoming is that it cannot express the complex logical relationship between tasks.

Guess you like

Origin blog.csdn.net/WandZ123/article/details/128274766