【详解】什么是软件工程?(含对软件设计、软件开发、软件维护、软件需求、软件测试的介绍)

文章目录

    • 前言
    • 1、概念
    • 2、软件设计(Software design)
    • 3、软件开发(Software development)
    • 4、软件维护(Software maintenance)
    • 5、软件需求(Software requirements)
    • 6、软件测试(Software testing)
    • 小结
    • 参考文献

前言

创作开始时间:2021年7月30日15:47:17

经常听说软件工程专业、学科等,但是不知其中具体含义,故在此系统探究一下。

1、概念

软件工程的定义有很多。

百科:

Software engineering is the systematic application of engineering approaches to the development of software.

面向软件开发的工程性方法的系统性应用

另外:

Software engineering – application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is the application of engineering to software.

就是把工程应用到软件中。

Systems and software engineering – Vocabulary:

The systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software

差不多。但是将软件开发细分为::软件设计、实现、测试和文档记录。更细化了。

IEEE Standard Glossary of Software Engineering Terminology:

The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software

差不多,但是将对象扩展为:软件开发,操作和维护。

2、软件设计(Software design)

Software design is about the process of defining the architecture, components, interfaces, and other characteristics of a system or component. This is also called software architecture.

Software design is divided into three different levels of design. The three levels are interface design, architectural design, and detailed design.

Interface design is the interaction between a system and its environment. This happens at a high level of abstraction along with the inner workings of the system.

Architectural design has to do with the major components of a system and their responsibilities, properties, interfaces, and their relationships and interactions that occur between them.

Detailed design is the internal elements of all the major system components, their properties, relationships, processing, and usually their algorithms and the data structures.

软件设计就是定义软件体系结构,组件,接口和软件的其他特性。

具体步骤:
1)先定义软件和环境的交互接口
2)再定义软件内部组件的交互关系
3)最后定义每个组件内的算法和数据结构

3、软件开发(Software development)

Software development, the main activity of software construction,[1][30] is the combination of programming, verification, software testing, and debugging.

A software development process[1][30] is the definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself.

It heavily uses software configuration management[1][30] which is about systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration and code throughout the system life cycle.

Modern processes use software versioning.

软件开发是软件构建的主要活动,是编程、验证、测试和调试活动的结合。

软件开发过程包含:定义、实现、评估、评测、管理、修改,以及自身改进。其非常依赖软件配置管理。现在通常用软件版本控制系统来管理。

4、软件维护(Software maintenance)

Software maintenance[1][30] refers to the activities required to provide cost-effective support after shipping the software product.

Software maintenance is modifying and updating software applications after distribution to correct faults and to improve its performance.

Software has a lot to do with the real world and when the real world changes, software maintenance is required.

Software maintenance includes: error correction, optimization, deletion of unused and discarded features, and enhancement of features that already exist.

Usually, maintenance takes up about 40% to 80% of the project cost therefore, focusing on maintenance keeps the costs down.[31]

软件维护主要是在软件发布之后提供的支持。

软件维护是修改或者更新软件,以纠正错误,或者改善性能。

其包含:错误修改,优化,无用feature的删除,以及feature的增强。

5、软件需求(Software requirements)

Requirements engineering is about the elicitation, analysis, specification, and validation of requirements for software.

Software requirements can be of three different types. There are functional requirements, non-functional requirements, and domain requirements.

Functional requirements are requirements that the end user meets the demands the software has to offer. The operation of the software should be performed and the proper output should be expected for the user to use.

Non-functional requirements deal with issues like portability, security, maintainability, reliability, scalability, performance, reusability, and flexibility. They are classified into the following types: interference constraints, performance constraints (such as response time, security, storage space, etc.), operating constraints, life cycle constraints (maintainability, portability, etc.), and economic constraints. Knowledge of how the system or software works is needed when it comes to specifying non-functional requirements.

Domain requirements have to do with the characteristic of a certain category or domain of projects.[32]

就是需求工程。

6、软件测试(Software testing)

Software testing[1][30] is an empirical, technical investigation conducted to provide stakeholders with information about the quality of the product or service under test, with different approaches such as unit testing and integration testing. It is one aspect of software quality.

软件质量相关。

小结

以上

创作结束时间:2021年7月30日16:13:19

参考文献

百科。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月27日
下一篇 2021年6月27日

相关推荐