Software Designer Exam - Software Engineering

1. Software Development Model

insert image description here

waterfall model

The waterfall model divides software development into three phases: the definition phase, the development phase, and the maintenance phase.
insert image description here
The biggest disadvantage of the waterfall model is thatInability to respond flexibly to changing needs, the waterfall model is suitable for situations where the requirements are clear.

Work products after software testing, such as system test data, system test results, operation manuals, installation manuals, etc.

prototype model

insert image description here
Make a simple prototype first

The prototype method is suitable for the situation where the user requirements are unclear and the requirements change frequently. It can help to derive the system requirements and verify the validity of the requirements. The purpose of exploratory prototyping is to clarify the requirements of the target, determine the desired characteristics, and explore the feasibility of various scenarios that can be used to explore specific software solutions.

Prototyping enables the rapid development of a user-visible system framework that can be used to support user interface design.

evolution model

Evolutionary models are mainly aimed at software development where requirements cannot be fully defined in advance. Users can give the core requirements of the system to be developed, and when they see the realization of the core requirements, they can effectively provide feedback to support the final design and implementation of the system. Software developers first develop the core system according to the needs of users. When the core system is put into operation, users try it out, complete their work, and put forward requirements for refining the system and enhancing its capabilities. Software developers implement an iterative process of development based on user feedback. The first iteration process consists of requirements, design, coding, testing, integration and other phases, adding a definable and manageable subset to the whole system.

In the development mode, the method of batch cycle development is adopted, and a part of the functions are developed in each cycle, and they become the new functions of the prototype of this product. As a result, the design continues to evolve into new systems. In effect, this model can be thought of as multiple "waterfall models" executed repeatedly.

The "evolutionary model" requires developers to have the ability to decompose a project's product requirements into different groups for cyclic development in batches. This grouping is not absolutely arbitrary, but is judged on the basis of functional importance and impact on the underlying structure of the overall design. Experience indicates that six to eight weeks is the appropriate length for each development cycle.

Incremental model

Incremental model, which adopts an "incremental" model, divides the software product into a series of incremental components (components represent physical modules rather than logical modules), which are designed, coded, integrated and tested respectively. When developing with an incremental model, how to divide the modules is often the difficulty.

insert image description here

V model

insert image description here

fountain model

The fountain model is an object-oriented development model. Each stage has no clear boundaries, and each stage runs at the same time.
insert image description here

RAD

CBSD

insert image description here

Agile development

Agile development model, namely 3-3-5-5 model, (3 artifacts, 3 roles, 5 values, 5 events)
3 artifacts: Product Backlog, Sprint Backlog, Product Increment
3 roles: Product Owner, Scrum Master, Development Team
5 Values: Courage Focus Commitment Respect Open
5 Events: Sprint, Sprint Planning, Daily Scrum, Sprint Review, Spring Retrospective

Agile development methods

insert image description here
insert image description here

Extreme programming

敏捷开发是一个大的概念。Scrum是一种敏捷方法,极限编程是敏捷开发的一种实践方法。我们可以把Scrum当作是道,则极限编程就是术,两者其实不冲突,可以结合使用,相辅相成。
    

Scrum更强调核心价值观,在价值观的指导下推导出的行为准则,产生一系列的Scrum活动,如每日站会、冲刺、评审、回顾会等。极限编程和Scrum是两个不同的敏捷开发方法,它们关注的是软件开发过程中的不同层次的内容。

insert image description here

2. Information system (software) development method

insert image description here

3. Demand analysis

insert image description here

insert image description here

4. Software Design

The basic principle

insert image description here

insert image description here
The "right size module" principle:Excessive modules may lead to insufficient system decomposition, which may include different types of functions and need to be further divided;Modules that are too small will increase the complexity of the system, and calls between modules are too frequent

The analysis result of the structured method consists of the following parts: a set of hierarchical data flow diagrams, a data dictionary, a set of small descriptions (also called processing logic descriptions), and supplementary materials.

Writing documentation helps make software development more efficient, not less.

Software documentation can be divided into development documentation, management documentation and user documentation according to the scope of its production and use. The development documents include: software requirements description, feasibility study report, project development plan.

Cohesion and Coupling

The tightness of cohesion is ordered from highest to lowest:

Functional cohesion is the most ideal cohesion pattern.
insert image description here
Data Coupling: Pass simple data
via parameter table Tag coupling: Pass record information (data structure) via parameter table

Coupling is a measure of the relative independence between modules. Coupling depends on the complexity of the interfaces between the various modules, how the modules are invoked, and the type of information passing through the interfaces.Does not depend on the number of functions provided by the module

system structure

insert image description here

Outline design

Generally speaking, the content of the outline design includes the main content of system architecture, module division, system interface, and data design, excluding the algorithm design in the module.

5. Software Testing

Testing principles and types

insert image description here

Test case design

Test design and test cases inrequirements analysis stagewrite.

Black box testing: Black box testing, also known as functional testing, mainly detects whether each function of the software can be used normally. In the testing process, the program is regarded as a black box that cannot be opened, and the program interface is tested without considering the internal structure and characteristics of the program to check whether the program function can be opened and used normally according to the design requirements and the provisions of the manual.

White-box testing: White-box testing, also known as structural testing, is mainly used to detect errors in the software coding process.

insert image description here
Key test sites for white box testing

  • Statement coverage: Statement coverage refers to selecting enough test cases so that when running these test cases, each statement of the program under test is executed at least once. Statement coverage is a very weak coverage criterion.

  • Judgment coverage: Judgment coverage is to design enough test cases so that each judgment in the program obtains at least one "true" and one "false", that is, each true and false branch in the program flowchart is executed at least once.

  • Path coverage: Select enough test cases so that every possible path of the program is traversed at least once. Path coverage actually considers all possible combinations of various decision results in the program, so it is a strong coverage criterion.

insert image description here

test phase

insert image description here

insert image description here
unit test:Unit testing focuses on internal processing logic and data structures in modules, After all modules have passed the test, there may still be problems such as data loss across the modules and mutual influence between modules when the modules are integrated. therefore,The modules are required to be combined and tested according to the requirements of the system design specification, that is, integration testing, in order to discover the problems of cooperation between the modules.

Confirmation tests include: internal confirmation tests, Alpha tests, Beta tests, acceptance tests, and installation tests. Validation testing begins with validity testing and software configuration review, followed by acceptance testing and installation testing. Among them, the effectiveness test is to test whether the developed software is consistent with the requirements specification through black-box testing in a simulated environment.

System testing includes: recovery testing, security testing, stress testing, performance testing, reliability testing, usability testing, maintainability testing, and installation testing.

Regression Testing: Regression testing is a test performed after the software has been changed to find other bugs that may have been caused when the change was made.

Acceptance test: Acceptance test is based on the final test in the specification of the customer or end user, or based on the user's use for a period of time to see if the software meets the customer's requirements.

McCabe complexity

insert image description here
Another way to calculate McCabe complexity: count the number of closed loops in a directed graph + 1, which is equal to the loop complexity.

Software Debugging - Induction

Induction refers to starting from the problems exposed by the test, collecting all correct or incorrect data, analyzing the relationship between them, proposing hypothetical reasons for the error, and using these data to prove or refute, so as to find out where the error lies.

6. System operation and maintenance

insert image description here

Software maintenance tools assist maintainers in performing various maintenance activities on software code and its documentation. Software maintenance tools mainly include: version control tools, document analysis tools, development information base tools, reverse engineering tools, and reengineering tools. Configuration management tools are not included.

Software Documentation Management Guide-Classified by Reading Objects
insert image description here

LOC is an acronym for Line Of Codes, which refers to the number of lines of source code that make up the software. LOC is mainly used to estimate software cost and size. Another traditional parameter estimated by software is the number of functions.

7. Software Capability Maturity Model

The CMM Software Capability Maturity Model is a method for evaluating the software capability of the software undertaker, and at the same time it helps software organizations to improve their software processes. CMM is divided into five levels: initial level, repeatable level, defined level, managed level, optimized level.

ISO/IEC Software Quality Model

In the ISO/IEC software quality model, the quality characteristics and their sub-characteristics are shown in the following table.

Feature reliability Ease of use efficiency maintainability portability
Suitability, Accuracy, Interoperability, Compliance, Security Fault Tolerance, Resilience, Maturity Easy to learn, easy to understand, easy to operate time characteristics, resource characteristics Testability, Modifiability, Stability, Ease of Analysis Adaptability, Ease of Installation, Consistency, Replaceability

insert image description here

8. Software Capability Maturity Model Integration - CMMI

The Software Capability Maturity Model (CMM) is a method to evaluate the software capability of the software undertaker, and it can help software organizations to improve their software processes. CMM is divided into five levels: initial level (executed), repeatable level, defined level, managed level, optimized level. Level 1 (initialization) is the lowest level, and level 5 (optimization level) is the highest level.

insert image description here

insert image description here

The common goal (performed) is that the process transforms identifiable input work products into identifiable output work products to achieve specific goals in support of the process area.

9. COCOMO II

COCOMO II is a cost estimation model with estimation choices: object points, function points, and source lines.

10. Project Management

insert image description here

Risk Management

Risk management, also known as risk exposure, measures the overall security risk of an asset, combining the likelihood of an actual loss with an advisory representing a large number of possible losses into a single-number assessment. In the simplest form of quantitative risk analysis, risk exposure is calculated by multiplying the risk likelihood and impact.

Risk exposure = error occurrence rate (risk occurrence rate) × error caused loss (risk loss).

Time management - critical path method
insert image description here
Time management - leading diagram method (single code network diagram, PDM)
insert image description here
critical path is the path with the longest construction period.
insert image description here
Answer: D, C

The critical path of a project is the path with the longest duration from start to finish, which is also the duration of the project.
insert image description here

11. Configuration Management

Configuration management is a series of measures to control and standardize software products and their development process and life cycle through technical or administrative means. The goal of configuration management is to record the evolution process of software products and ensure that software developers can obtain accurate product configurations at all stages of the software life cycle.

The activities of configuration management include: development of configuration management plans, configuration repository management, configuration control, configuration status reporting, configuration auditing, release management, and delivery.

Summary of notes from: Software Designer Exam Tutorial

Guess you like

Origin blog.csdn.net/huangjhai/article/details/116767923