1. Overview of software/software engineering/software development model

1. Software

1. Definition of software

Software is not just a program, but a collection of 程序, 数据, and what is needed to develop , use, and maintain a program所有文档

Program : A program is written to solve some specific problems and is 程序设计语言suitable for computer processing 语句序列, designed and coded by developers

Documentation : Documentation is a record of software development activities, primarily for human reading. Documentation can be used not only for communication and exchange between developers and users, but also for the management of the software development process and the maintenance of the operation phase

2. Classification of software

From the perspective of computers 系统角度, it can be divided into two categories: system software and application software.
From the perspective of computers, 软件用途it can be divided into three categories: service, maintenance, and operation management.
insert image description here

3. The software crisis

3.1 The main problems of the software crisis

1. How to 开发meet the growing demands of multi-software
2. How to deal 维护with the growing number of existing software

3.2 Causes of software crisis (6 points)

(1) Software is a logical component of a computer system, often with a large scale and complex structure
(2) The cost of software development continues to increase, and the maintenance cost rises rapidly
(3) The management of software development is difficult
(4) The technology of software development is backward
(5) Production Outdated methods
(6) Outdated development tools and slow production efficiency

Brief Note: Software is inherently complicated, and now it needs more money. Even if you have money, it is difficult to find suitable candidates for development process management. There is a three-piece set of objective obstacles (production technology, production methods, and production tools are backward)


2. Software Engineering

1. Definition of software engineering

Software engineering is a discipline that guides computer software 开发and维护工程学科 software development and maintenance using engineering concepts, principles, technologies and methods

2. Software engineering goals (6 points)

(1) Reduce software development costs
(2) Meet all software functional requirements of customers
(3) Create software performance that meets customer requirements and satisfies users
(4) Has good ease of use, reusability and portability
( 5) Lower maintenance cost, higher reliability
(6) Complete the development tasks according to the contract requirements, and deliver them to customers within the specified period

Imagine running a software design company where you are the boss.
When starting a company, you must first lower the price before someone asks, and when you ask, you agree to all the software function requirements required by the user. Here, it is assumed that the customer requires to make a game.
It shouldn’t be too stuck after it’s done, the performance must go up. It’s not stuck, but if users want to launch this game on multiple platforms, the ease of use, reusability and portability must be good. After each platform is launched, it is impossible to have a team of maintenance personnel for each platform. High reliability is required, and finally, the development is completed according to the contract requirements, and it is delivered for use within the period stipulated in the contract (otherwise you will lose money if you breach the contract)

3. Contents of Software Engineering Research

软件开发技术The main research on software development methods, software development process, software development tools and technology
on 软件开发过程管理the main research software management and software engineering economics
insert image description here

4. Basic principles of software engineering (7 points)

(1) The development team should be fewer and more refined
(2) Adopt modern programming techniques
(3) Strictly manage with a staged life cycle
(4) Adhere to stage reviews
(5) Implement strict product control
(6) The results should be clear Review
(7) recognizes the need for continuous practice in software engineering

The basic principle can be understood as a brief design process.
First, build a team (fewer people and finer the best), then use modern programming technology (generally more mature), and
then strictly control according to the stages of the life cycle, and break down one by one. After each stage is written, it must be reviewed, and strict product control should be carried out. The results of the final review should be clearly visible. Finally, we must maintain a belief that software software engineering needs continuous practical improvement. Be open-minded and have more Change good technology, don't be too rigid

History of software engineering development (understand)

Program Design Era (1946~1956) //Ten Years
Program System Era (1956~1968) //Twelve Years
Software Engineering Era (1968~present)

5. Software life cycle

Meaning : It refers to the time when a certain software project is put forward and started to be implemented until the software stops using or is scrapped

Divide the software life cycle: Divide the life cycle into several stages, assign relative 独立(生存周期划分原则)tasks to each stage, each stage has technical review and management review, and test the development results of this stage from both technical and management aspects

The software life cycle is generally divided into three periods : software planning, software development, and software operation.

insert image description here

6. Software development model

Waterfall model: also known as life cycle model or linear sequence model , this model is a model that specifies the various activities of the software life cycle as several stages connected in a linear sequence, including problem definition, feasibility study, demand analysis, outline design, Detailed design, coding, testing, and maintenance are by far the most widely used process model , driven by documents, and suitable for software development projects with clear requirements

`
Waterfall model features:

  • The sequence and dependence of the stages : the work of the next stage must be completed after the work of the previous stage is completed, and the output document of the previous period is the input document of the latter stage
  • The characteristics of deferred implementation : code implementation after sufficient preparation, separate logical design and physical design
  • The viewpoint of quality assurance : ① The specified relevant documents must be completed in each stage ② The completed documents must be reviewed before the end of each stage
  • Existing problems : It is an ideal linear development model, lacks flexibility, especially cannot solve the problem of unclear or inaccurate software requirements

Rapid prototyping model: first quickly establish a prototype system that can reflect the main needs of users, let users try it on the computer, and let users understand the overview of the future target system through practice, so as to judge which functions meet the needs and which aspects need to be improved. Development The personnel quickly modify the prototype system according to the user's opinion, and then ask the user to try again, so that iterative improvement, and finally establish a new system that fully meets the user's needs

Incremental model: also known as incremental model, software is developed "gradually" in the model, and software products are designed, coded, assembled and tested as a series of incremental components, which is a non-holistic development model . Each component is composed of multiple interacting models, and can complete some specific functional
characteristics : develop part, show part to users, so that users can see part of the software early in time, and find problems early

Spiral model: Adding the risk analysis neglected by the first two models, it makes up for the deficiencies of the two models. It is a risk-driven model

Fountain model: It is a typical object-oriented software development model , driven by the needs of users and driven by objects, suitable for object-oriented development methods

Comparison of each model:

waterfall model Classic, suitable for projects with little change in requirements
rapid prototyping model Quickly obtain user needs
incremental model Flexible, allowing software changes
spiral model join the risk
fountain model Typical object-oriented development model
component-based development model Improve software reusability and usability
Unified Process Model UML-based oo process model
Formal Model Based ensure strict

Comparison of traditional software engineering and object-oriented software engineering

Traditional software engineering is based on structured design language


What is object-oriented software engineering, and briefly describe the meaning of his practice and traditional software engineering : software engineering based on object-oriented programming
.
Difference : traditional software is based on structured programming, while object-oriented software engineering It is based on object-oriented programming. Compared with the development idea of ​​process-oriented software engineering, the object-oriented development method is no longer oriented by function division, but takes the object as the center of the whole problem analysis, and carries out the analysis and design work of the system facing the object.
·
Contact : In terms of development process, object-oriented software engineering, like traditional software engineering, divides software development into several stages such as analysis, design, coding and testing, but the specific work of each stage is different. The traditional software development process includes requirements analysis, overall design, detailed design, process-oriented coding and testing; while the object-oriented software engineering development process includes requirements analysis and object extraction, detailed object design, object-oriented coding and testing

Guess you like

Origin blog.csdn.net/xiaobai729/article/details/127659332