Things You Should Know about Software Enginnering 软件工程 - 中科大、谷歌
thu Software Enginnering
软件工程这个概念,并将其定义为“为了经济地获得可靠的和能在实际机器上高效运行的软件,而建立和使用的健全的工程规则”
(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
Guide to the Software Engineering Body of Knowledge(2004)中,软件 工程知识体系划分为以下10个知识领域。
(1)软件需求(software requirements)。
(2)软件设计(software design)。
(3)软件构造(software construction)。
(4)软件测试(software testing)。
(5)软件维护(software maintenance)。
(6)软件配置管理(software configuration management)。
(7)软件工程管理(software engineering management)。
(8)软件工程过程(software engineering process)。
(9)软件工程工具和方法(software engineering tools and methods)。
(10)软件质量(software quality)。
软件生命周期主要包括以下阶段。
可行性研究:主要目的是定义问题,确定软件的开发目标和分析其可行性,制订初步的 开发计划。
需求分析:在确定软件开发可行的情况下,对目标软件系统需要解决的问题和需要实 现的功能进行详细分析,形成需求规格说明书。
软件设计:根据需求分析的结果,对整个软件系统进行设计,分为概要设计和详细设 计。
概要设计旨在建立系统的总体架构,详细设计关注每个子系统和模块的内部实现细节。
形成的软件设计说明书将为后续编码实现提供依据。
编码实现:根据软件设计说明书,将设计结果转换成计算机可运行的程序代码。
在编码实现过程中必须要制订统一、符合标准的编码规范, 以保证程序的可读性、易维护性, 提高程序的运行效率和整个系统的稳定性。
软件测试:主要目的是发现软件产品中存在的缺陷,进而保证软件产品的质量。可以划分为单元测试、集成测试、系统测试和验收测试。
运行与维护:软件产品交付后, 随着用户需求的增长或改变, 以及市场环境的变化, 软件产品的功能需要不断完善。
为了保证软件产品的正常运行, 需要进行一定的维护。
Links
GeeksMan
Coding Best Practices and Guidelines for Better Code
软件开发规范-中科大
《Software Engineering at Google》中文版-谷歌的软件工程