Software Engineering | Final Review

1. Software and the software crisis

1. Software development has gone through three stages: program design , program system , software engineering

2. The concept of software: software is another part of the computer system and hardware interdependence, including a complete collection of programs , data and related documents , software = program + data + documents

  • data : data structures that enable programs to process information appropriately
  • Program : An executable sequence of execution capable of accomplishing a predetermined function and performance
  • Documentation : Graphical materials required for developing, using and maintaining process program locks

3. Features of the software:

  • The complexity of the software itself
  • Software is expensive
  • Software development has not got rid of manual development
  • Software maintenance is fundamentally different from hardware, making maintenance difficult
  • Software development deploys traditional hardware manufacturing processes
  • Software is a logical entity, non-abrasive

4. The concept of software crisis: a series of serious problems encountered in the process of computer software development and maintenance . Two aspects:

  • How to develop software to meet the growing demand for software
  • How to maintain an ever-expanding amount of existing software

5. The performance of the software crisis:

  • Inaccurate estimates of software development costs and schedules
  • Users are dissatisfied with completed software
  • Unreliable software quality
  • no proper documentation
  • The proportion of software costs in computer systems is increasing year by year
  • Low software development productivity

6. Reasons for the software crisis:

Subjective reasons

  • Neglecting needs analysis
  • Belittle software maintenance
  • Failing to realize that programs are just part of software
  • Failing to recognize that software development is only a relatively minor stage in the long software life cycle
  • The later the introduction of changes, the higher the cost

Objective reasons:

  • Software is a logical entity, lacks visibility, and is difficult to manage and control
  • The software will not wear out, and maintenance means modifying the original design, which is difficult to maintain
  • The scale of the software is huge, and the complexity of the program increases exponentially with the increase of the scale

7. The way to eliminate the software crisis:

  • Have a correct understanding of computer software
  • Learn from the principles, concepts, technologies and methods accumulated by human beings engaged in various engineering projects for a long time
  • Cumulative development and use of computer-aided development tools
  • Explore better and more effective management measures and means to control and manage the development process

2. Software Engineering

1. Definition : use engineering concepts, principles, technologies and methods to develop and maintain software, combine time-tested and proven correct management techniques with the best technical methods currently available , and develop high- quality products economically software and maintain it

2. The essential characteristics of software engineering:

  • Focus on the construction of large programs
  • The central issue is controlling complexity
  • software changes frequently
  • Development efficiency is very important
  • Harmonious cooperation among developers is the key
  • Software needs to effectively support users
  • Software developers replace people in other fields to create products

3. Basic principle:

  • Develop a plan in phases according to the software life cycle and implement it carefully
  • Adhere to the stage review
  • Adhere to strict product control
  • Use modern programming techniques
  • Results can be clearly reviewed
  • Use less but better
  • Acknowledging the need for continuous improvement of software engineering practices

4. Software Engineering Methodology:

The collection of a set of technical methods used in the whole process of software life cycle is called methodology, also known as generic

The methodology of software engineering consists of three elements: method , tool and process

  • Method: The technical method for accomplishing the various tasks of software development
  • Tools: automatic or semi-automatic software engineering support environment for applying methods
  • Process: A framework for a series of tasks that need to be completed in order to obtain high-quality software

5. Software life cycle

Three, soft

file process

A software process is a framework for a series of tasks that need to be completed in order to obtain high-quality software

The software process is usually described by the software life cycle model

waterfall model

The various acquisitions of the software life cycle are stipulated as connecting several stages of work in a fixed order, and finally the software is obtained

Features:

  1. Sequence and dependencies between phases
  2. deferred realization perspective
  3. Quality Assurance Perspective
    1. Required documentation must be completed at each stage
    2. Complete document review before the end of each phase to correct errors early

rapid prototyping model

Quickly build a runnable program, and the functions he completes are often a subset of the final product functions

incremental model

Divide analysis, design, coding, testing, and delivery into increments. Each increment is a complete process. First complete the development of a subset of the system, and then follow the same development steps to add functions, and so on until all system requirements are met.

Advantages: Some functions can be submitted and completed in a short period of time, the main key increases product functions, and users adapt to the product quickly

Disadvantages: Incremental construction division and integration are difficult, and it is easy to degenerate into a model that is modified while doing

There is also a more risky incremental model, that is, they are more efficient when executed in parallel, but it may also be difficult to combine

spiral model

The rapid prototyping model of the risk analysis process is added before each stage, seen as the rapid prototyping model of the risk analysis

advantage:

  • Facilitate software quality as a software development goal
  • reduce testing
  • Maintenance and development are not separated

Disadvantages: Difficult to estimate risk

fountain model

Typical object-oriented software process model, embodying iterative and seamless features

4. Feasibility study

Purpose: To determine whether the problem can be solved in the minimum time with the minimum cost

Essence: The system analysis and design process is greatly compressed and simplified , and the system analysis and design process is carried out in a relatively abstract way at a higher level

process:

  1. Analyze and clarify problem definitions
  2. Export the logical model of the system (data flow diagram and data dictionary)
  3. Explore several alternative solutions based on the logical model
  4. Investigate the feasibility of each solution
    1. Economic feasibility : whether the economic benefits outweigh the development costs
    2. Technical Feasibility : Existing technology can achieve
    3. Operational Feasibility : Whether the system operation method is feasible
    4. Other Feasibility: Legal, Social Benefits

Cost-benefit analysis: analyze whether the development of the new system is profitable from an economic point of view , and help the user department to make a correct decision on whether to invest

5. Software design stage

designing process

Overall design is also called outline design or preliminary design

Task:

  • Determine which modules each program of the system consists of and the relationship between these modules
  • Divide physical elements, including programs, files, databases, documents, etc.

The design process includes a system design phase and a structural design phase

design principle

  • Modular
    • Module: A sequence of program elements that can be named individually and defined by boundary elements is the basic building block of a program.
    • Modularization: Divide the program into independently named and independently accessible modules, each module completes a sub-function, integrates these modules to form a whole, and can complete specified functions to meet user needs
  • Abstraction: abstract the essential characteristics of transactions without considering their details for the time being
  • Step-by-step refinement: gradually revealing the underlying details
  • Information Hiding and Localization
    • Information hiding: Refers to the information contained in a module that cannot be accessed by modules that do not need this information. Mainly refers to the implementation details of the module.
    • Localization: refers to placing some closely related software elements physically close to each other, which helps to achieve information hiding.
  • module independent
    • Module independence is a direct consequence of the concepts of modularity, abstraction, information hiding and localization
    • Module independence is the key to good design, and design is the key link to determine software quality
    • Metrics: Coupling , Cohesion 

Coupling: The measurement of the interconnection program between different modules in the software structure. The coupling strength depends on the complexity of the module interface, the data passing through the interface, etc. The higher the coupling, the weaker the module independence

Coupling classification (low to high):

No direct coupling → data coupling → marker coupling (feature coupling) → control coupling → external coupling → public coupling

Cohesion : It is the tight integration of each element inside the module

Cohesion classification (low to high degree):

Accidental cohesion → logical cohesion → temporal cohesion → process cohesion → communication cohesion → sequential cohesion → functional cohesion

A module that is strongly coupled to other modules means weak cohesion, and a module that is strongly cohesive means loosely coupled to other modules

Design goals: high cohesion, low coupling

heuristic rule

Improve software structure and improve module independence

Module size should be moderate

Depth, width, fan-in and fan-out should be appropriate

  • Depth : Indicates the number of layers of control in the software structure.
  • Width : The maximum value of the total number of modules on the same level within the software structure.
  • Fan-out : The number of modules directly controlled (called) by a module. Excessive fan-out means that the module is too complex. Generally, the average fan-out of a well-designed typical system is 3 or 4, and the upper limit of fan-out is 5 to 9.
  • Fan-in : Refers to how many upper-level modules call it. A large fan-in indicates how many upper-level modules share the module. The top-level fan-out of the software structure is relatively high, and the middle-level fan-out is relatively small. Bottom-level modules have high fan-in .

The scope of the module should be within the control domain

  • Scope: Refers to the collection of all modules affected by a decision within the module
  • Control domain : is the module itself and all the modules directly or indirectly subordinate to it

Strive to reduce the complexity of the module interface

Design a module with one entry and one exit

Module functionality should be predictable

6. Testing phase

Coding and testing in the software life cycle are collectively referred to as implementation

Software testing is the process of executing a program in order to find bugs

  • Coding phase (unit testing)
  • Testing phase (various comprehensive tests)

Methods of software testing:

  • Black box testing: regard the software as a black box, regardless of its internal structure and processing process, only according to the specifications, test whether the software can correctly receive input data and generate correct output data, that is, whether the test program is implemented correctly function
  • White box testing: fully aware of the internal structure and processing algorithms of the program, so the program can be regarded as a transparent white box, and the main execution path inside the program can be tested according to the logical structure of the program whether it can work accurately according to the predetermined requirements, structural testing

Guess you like

Origin blog.csdn.net/weixin_54232666/article/details/130784578