
大家好,我是老超,今天给大家讲的内容是软件工程中的软件工程学。



简单来说,软件就是计算机程序及其有关数据和文档的完整集合
软件
软件就是指能够实现预定功能和性能的可执行的计算机程序,使程序正常运行所需要的数据,描述软件开发及其管理、程序的操作和使用的有关文档的完整集合。
其中,计算机程序是能够完成预定功能的可执行的指令序列;数据是程序能适当处理的信息,具有适当的数据结构,并且可以储存;软件文档是开发、使用和维护程序所需要的的图文资料。
软件产品是指向用户提供的计算机软件、信息系统或设备中嵌入的软件,或在提供计算机信息系统集成、应用服务等技术服务时提供的计算机软件。它是通过人的脑力劳动,通过知识、技术、环境信息的高度整合,所产生的逻辑产品。
软件产品的生产主要是研制;成本只要体现在软件的开发和研制上,软件开发研制完成后,通过复制就可以产生大量的软件产品,不需要再花费人力和物力。
按软件产品的使用环境来分:嵌入式软件、桌面级(PC)软件、大型(巨型)机软件、云计算软件等;
按软件产品的工作方式来分:实时软件、交互式软件、批处理式软件;
按软件产品的使用对象来分:个人软件、商业通用软件、企业定制软件、工程及科学应用软件、人工智能软件等;
从软件工程学的角度来分:基础软件、支撑软件和应用软件;

通俗地讲,软件工程是为了生产好的软件。
评判软件好坏的标准:
软件质量的评判标准取决于分析这个软件的人。但不同人的视角不同,往往对软件产品的质量会有不同的看法;
软件质量往往还取决于软件开发和维护的过程,这些过程的质量对于软件产品的质量是同等重要的。对过程建模可以让我们研究分析并改进软件的开发和维护,最终提高软件产品的质量;
用经济学的投资回报率来评判软件产品的商业价值,会使得软件产品的商业价值凸显出来。

国家标准GB/T 11457--2006《信息技术 软件工程术语》对软件工程的定义为:软件工程师应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。
因而,软件工程是指导计算机软件开发和维护的工程学科,它采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。软件工程的目的是在规定的时间和开发费用内,开发出满足用户需求的、高质量的软件产品。
03软件工程学的内容软件工程学的主要内容是软件开发技术和软件工程管理。其中,软件开发技术包括软件工程技术、软件工具和软件开发环境;软件工程管理包括软件工程经济学和软件管理学。
软件工程方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。
软件工程方法学有3个要素,分别为:
方法:完成软件开发任务的技术方法;
工具:为方法的运用提供自动或半自动的软件支持环境;
过程:规定了完成任务的工作阶段、工作内容、产品、验收的步骤和完成标准。
目前使用最广泛的软件工程方法学可以分为传统方法学和面向对象方法学两类。
传统方法学:采用结构化技术,包括结构化分析、结构化设计和结构化实现,来完成软件开发任务;
面向对象方法学:在传统方法学的基础上发展起来的,它把对象作为数据和对数据的操作相结合的软件构件,用对象分解取代了传统方法的功能分解。可以用:面向对象=对象+类+继承+消息通信 来概括。
是指为了支持计算机软件的开发和维护而研制的程序系统。使用软件工具的目的是提高软件设计的质量和生产效率,降低软件开发和维护的成本。
可用于软件开发的整个过程,目前,软件工具发展迅速,许多用于软件分析和设计的工具正在建立,其目标是实现软件生产前各阶段的自动化。
软件开发环境是方法和工具的结合
定义:
在1985年第八届国际软件工程会议上,国际工作小组将其定义为:软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。
国家标准GB/T 11457--2006《信息技术 软件工程术语》对其的定义为:软件开发环境是支持软件产品开发的软件系统,它由软件工具和环境集成机制构成,前者用以支持软件开发的相关过程、活动和任务,后者为工具集成和软件的开发、维护及管理提供统一的支持。、
软件开发环境的设计目标是提高软件生产率和改善软件质量。
软件工程管理就是对软件开发各个阶段的活动进行管理,其目的是确保按预定的时间和费用,成功地生产出软件产品。软件工程管理的任务是有效地组织人员,按照适当的技术、方法,利用好的工具来完成预定的软件项目。
其主要内容包括:
费用管理:开发一款软件是一种投资,人们总是期望将来获得较大的经济效益。从经济学角度来分析,开发一款软件系统是否划算,是软件使用单位负责人决定是否开发这个项目的主要依据。需要从软件开发成本、运行费用、经济效益等方面来估算整个系统的投资和回报情况;
人员管理:软件开发不是个人劳动,需要各类人员协调配合,共同完成工程任务,因而应该有良好的组织和周密的管理;
工程计划管理:软件工程计划是在软件开发早期确定的。在计划实施过程中,如果需要,应对工程进度作适当的调整。在软件开发结束后应写成软件开发总结,以便今后能制定出更切合实际的软件开发计划;
软件配置管理:软件工程各阶段所产生的全部文档和软件本身构成软件配置。

ISO(国际标准化组织) 9000将其定义为:把输入转化为输出的一组彼此相关的资源和活动;
国家标准GB/T 11457--2006《信息技术 软件工程术语》定义为:软件过程是由组织或项目使用的,用以计划、管理、执行、监控、控制和改进其软件相关活动的过程或过程的集合。
软件过程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施和各阶段任务完成的标志,是软件工程方法学的3各要素(方法、工具和过程)之一。
Q:软件过程和软件开发过程是相同的吗?
A:不是相同的,与软件过程的概念不同,软件开发过程是把用户要求转换为软件需求,把软件需求转换为设计,用代码来实现设计,对代码进行测试,完成文档编制并确认软件可以投入运行使用的过程。

著名软件工程专家B.W.Boehm综合有关专家和学者的意见并根据多年来开发软件的经验,于1983年在一篇论文中提出了软件工程的7条基本原理:
用分阶段的生存周期计划进行严格的管理;
坚持进行阶段评审;
实行严格的产品控制;
采用现代程序设计技术;
软件工程结果应能清楚地审查;
开发小组的人员应该少而精;
承认不断改进软件工程实践的必要性。
前6条,能够实现软件的工程化生产;第7条,不仅要积极主动地采纳新的软件技术,还要注意不断总结经验。



