0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件工程方法有哪些

tLJX_gh_ad43aef 来源:汽车电子系统与软件 作者:c2c 2021-08-11 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

软件工程方法为目标计算机的软件开发提供了一种有组织和系统的方法。有许多方法可供选择,对于软件工程师来说,为手头的软件开发任务选择一种或几种合适的方法是很重要的;这种选择会对软件项目的成功产生巨大的影响。使用这些软件工程方法,加上具有适当技能集的人员和工具,使软件工程师能够可视化软件的细节,并最终将表示转换为代码和数据的工作集。

下面将讨论选定的软件工程方法。主题区域被组织成启发式方法、正式方法、原型方法和敏捷方法的讨论。4.1启发式方法

启发式方法是那些基于经验的软件工程方法,它们已经在软件行业中得到了相当广泛的实践。本主题包含三个广泛的讨论类别:结构化分析和设计方法、数据建模方法和面向对象的分析和设计方法。

结构化分析和设计方法:软件模型主要从功能或行为的角度开发,从软件的高级视图(包括数据和控制要素)开始,然后通过越来越详细的设计逐步分解或细化模型组件。详细的设计最终集中于必须编码(手工、自动生成或两者同时生成)、构建、测试和验证的软件的非常具体的细节或规范。

数据建模方法:根据所使用的数据或信息的观点构建数据模型。数据表和关系定义了数据模型。这种数据建模方法主要用于定义和分析支持数据库设计或通常在业务软件中发现的数据存储库的数据需求,在业务软件中,数据作为业务系统资源或资产进行主动管理。

面向对象的分析和设计方法:面向对象模型表示为封装数据和关系的对象集合,并通过方法与其他对象交互。对象可以是真实世界的项目,也可以是虚拟的项目。软件模型是使用图来构成软件的选定视图来构建的。软件模型的逐步细化导致了详细的设计。然后,详细的设计要么通过连续的迭代进行演化,要么(使用某种机制)转换为模型的实现视图,其中表示最终软件产品发布和部署的代码和打包方法。

4.2正式的方法

形式方法是软件工程方法,通过应用严格的基于数学的符号和语言来指定、开发和验证软件。通过使用规范语言,可以以系统的、自动化的或半自动化的方式检查软件模型的一致性(换句话说,缺少模糊性)、完整性和正确性。这个主题与软件需求知识领域中的形式化分析部分有关。

本节讨论规范语言、程序细化和派生、形式验证和逻辑推理。

规范语言:规范语言为形式方法提供数学基础;规范语言是在软件规范、需求分析和/或设计阶段用于描述特定输入/输出行为的正式的、高级的计算机语言(换句话说,不是经典的第三代语言(3GL)编程语言)。规范语言不是直接可执行的语言;它们通常由表示法和语法、使用表示法的语义和一组允许的对象关系组成。

程序优化和派生:程序优化是使用一系列转换创建较低层面(或更详细)规范的过程。软件工程师是通过连续的转换来获得程序的可执行表示的。可以细化规范,添加细节,直到模型可以用3GL编程语言或所选规范语言的可执行部分来表述。通过定义具有精确语义属性的规范,可以实现规范的细化;规范不仅必须规定实体之间的关系,还必须规定这些关系和操作的确切运行时含义。

形式验证:模型检验是一种形式验证方法;它通常涉及执行状态空间探索或可达性分析,以证明所表示的软件设计具有或保留了某些感兴趣的模型属性。模型检查的一个例子是在所有可能的事件或消息到达交叉情况下验证正确的程序行为的分析。使用正式核证需要严格指定软件模型及其运作环境;这个模型通常采用有限状态机或其他正式定义的自动机的形式。

逻辑推理:逻辑推理是一种设计软件的方法,它包括在设计的每个重要部分周围指定前置条件和后置条件,并使用数学逻辑来证明这些前置条件和后置条件必须在所有输入下都存在。这为软件工程师在不执行软件的情况下预测软件行为提供了一种方法。一些集成开发环境(ide)包括在设计或代码的同时表示这些证明的方法。

4.3原型化方法

软件原型是一个活动,通常创建不完整或最低限度功能版本的软件应用程序,通常为特定的新特性,征求反馈软件需求或用户接口,进一步探索软件需求,软件设计,或实现选项,和/或获得其他一些有用的洞察软件。软件工程师首先选择一种原型方法来理解软件中最不被理解的方面或组件;这种方法与其他软件工程方法形成对比,后者通常首先从最容易理解的部分开始开发。通常,如果不进行大量的开发重做或重构,原型产品不会成为最终的软件产品。

本节简要讨论原型风格、目标和评估技术。原型风格:这解决了开发原型的各种方法。原型可以被开发为一次性代码或纸制品,作为工作设计的演变,或作为可执行的规范。每种风格通常使用不同的原型生命周期过程。选择的风格基于项目需要的结果类型、需要的结果的质量和结果的紧迫性。

原型目标:原型活动的目标是原型工作所服务的特定产品。原型化目标的例子包括需求规范、架构设计要素或组件、算法或人机用户接口。

原型评估技术:一个原型可以由软件工程师或其他项目利益攸关方以多种方式使用或评估,主要是由最初导致原型开发的潜在原因驱动的。原型可以根据实际实现的软件或一组目标需求(例如,一个需求原型)来评估或测试;原型还可以作为未来软件开发工作的模型(例如,在用户接口规范中)。

4.4敏捷方法

敏捷方法诞生于20世纪90年代,当时人们需要减少大型软件开发项目中使用的重量级的、基于计划的方法所带来的巨大开销。敏捷方法被认为是轻量级的方法,因为它们的特点是短的、迭代的开发周期、自组织的团队、更简单的设计、代码重构、测试驱动开发、频繁的客户参与,以及强调在每个开发周期中创建可演示的工作产品。

文献中有许多敏捷方法;这里简要讨论一些比较流行的方法,包括快速应用程序开发(RAD)、极限编程(XP)、SCRum和功能驱动开发(FDD)。

RAD:快速软件开发方法主要用于数据密集型的业务系统应用程序开发。RAD方法通过软件工程师使用的专用数据库开发工具来实现,这些工具用于快速开发、测试和部署新的或修改过的业务应用程序。

XP:这种方法使用需求的事例或场景,首先开发测试,让客户直接参与到团队中(通常定义验收测试),使用成对编程,并提供持续的代码重构和集成。故事被分解为任务、划分优先级、评估、开发和测试。软件的每一个增量都通过自动化和手工测试进行测试;一个增量可能会被频繁地释放,比如每隔几周左右。

SCRum:这种敏捷方法比其他方法对项目管理更友好。SCRum管理员管理项目增量中的活动;每个增量称为冲刺,持续时间不超过30天。产品待办事项列表(PBI)是根据任务来确定、定义、排序和评估的。在每个增量中测试并发布软件的工作版本。每日SCRum会议确保工作按照计划进行。

FDD:这是一种模型驱动的、短的、迭代的软件开发方法,使用一个五阶段过程:

(1) 开发一个产品模型来扩大领域的范围,

(2) 创建需求或功能列表,

(3) 构建功能开发计划,

(4)开发针对特定于迭代的功能的设计,以及

(5)代码、测试、功能集成。

FDD类似于增量式软件开发方法;它也类似于XP,除了代码所有权被分配给个人而不是团队。FDD强调软件的整体架构方法,它促进在第一次就正确地构建特性,而不是强调持续的重构。

在文献和实践中还有许多敏捷方法的变体。请注意,重量级的、基于计划的软件工程方法和敏捷方法一样都有一席之地。有一些新方法是从敏捷方法和基于计划的方法的组合中产生的,从业者正在定义新的方法,这些方法主要基于当前的组织业务需求来平衡重量级和轻量级方法所需的特性。这些业务需求,通常由一些项目利益攸关方所代表,应该并且确实推动选择使用一种软件工程方法而不是另一种,或者从软件工程方法组合的最佳特性中构建一种新方法。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7763

    浏览量

    92673
  • 软件
    +关注

    关注

    69

    文章

    5296

    浏览量

    90861

原文标题:软件工程方法

文章出处:【微信号:gh_ad43aef0e0b3,微信公众号:树根互联VS物联网VS数据应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    光庭信息亮相2025 CCF中国软件大会

    11月28日-30日,由中国计算机学会(CCF)主办,CCF软件工程专委会、系统软件专委会、形式化方法专委会、武汉大学承办的2025 CCF中国软件大会(ChinaSoft 2025)
    的头像 发表于 12-05 11:44 251次阅读
    光庭信息亮相2025 CCF中国<b class='flag-5'>软件</b>大会

    开源鸿蒙技术大会2025丨AI软件工程分论坛:智能创新,赋能开源鸿蒙软件工程

    师生深度参与技术交流联动。论坛由华为终端软件工程与IT装备部孙为国与开源鸿蒙AI软件工程SIG副组长王意明联合出品。此次论坛的成功举办标志着开源鸿蒙AI软件工程从技术探索步入规模落地阶段,预计2025年底将赋能10万+开发者。
    的头像 发表于 11-20 17:32 591次阅读
    开源鸿蒙技术大会2025丨AI<b class='flag-5'>软件工程</b>分论坛:智能创新,赋能开源鸿蒙<b class='flag-5'>软件工程</b>

    工程师变身AI“指挥者”,吉利与阿里云的软件开发变革实验

    1975年,IBM工程师Fred Brooks在《人月神话》中提出软件工程的核心难题:随着系统规模和团队规模增长,复杂度会呈指数级上升。他的结论是, 软件工程“没有银弹”,没有单一技术能带来数量级
    的头像 发表于 11-13 10:43 199次阅读
    <b class='flag-5'>工程</b>师变身AI“指挥者”,吉利与阿里云的<b class='flag-5'>软件</b>开发变革实验

    利用软件方法解决EMC问题

    有时候解决EMC问题利用软件方法反而是更高效快速的。二整改案例今天分析一个用软件方法解决EMC问题的实际案例,通过该案例可以了解到软件
    的头像 发表于 10-28 11:35 161次阅读
    利用<b class='flag-5'>软件</b>的<b class='flag-5'>方法</b>解决EMC问题

    湃睿科技参与制定的两项国家标准发布

    近日,由全国信标委软件与系统工程分技术委员会主办,中国科学院软件研究所承办的“智能软件工程标准工作会”在北京召开,上海湃睿信息科技有限公司(以下简称“湃睿科技”)作为智能
    的头像 发表于 07-08 15:45 669次阅读

    开源鸿蒙工程工具分论坛圆满举办

    近日,开源鸿蒙开发者大会2025(OHDC.2025)工程工具分论坛在深圳圆满举办。本次分论坛由开源鸿蒙IDE SIG组长、华为终端BG工程工具技术专家唐春担任出品人,主题为“开源鸿蒙应用开发新范式下的软件工程技术和
    的头像 发表于 06-05 15:35 808次阅读

    北京做软件的公司哪些?北京哪些做软件的公司

    软件
    北京华盛恒辉科技
    发布于 :2025年04月29日 11:37:05

    如何成为一名嵌入式软件工程师?

    、Java等)和软件开发工具,还需要对硬件的工作原理深入的理解。 在团队中,嵌入式软件工程师往往扮演着核心角色,他们的工作直接关系到产品的性能、稳定性和用户体验。 02掌握核心技能与知识
    发表于 04-15 14:37

    学硬件好还是学软件好?

    、计算机硬件等领域相关。 学习软件则侧重于编程、算法、数据结构等方面。软件工程师负责开发、测试和维护各种软件应用程序,如操作系统、办公软件、游戏等。如果你对编程、数学、逻辑或解决复杂问
    发表于 04-07 15:27

    软件工程师学习硬件原理图--第一讲看懂GPIO和门电路

    开篇引言:开这个的原因是因为,对于一个从小搞软件,除了电容,电阻,还有用过蓝福电池、奥迪双钻电池的我,真一直都搞求不懂这些硬件原理图,所以对于FPGA工程师来说,至少你得会看原理图吧,原理图都不会
    的头像 发表于 03-05 19:33 959次阅读
    <b class='flag-5'>软件工程</b>师学习硬件原理图--第一讲看懂GPIO和门电路

    嵌入式软件工程师就业好不好?

    嵌入式软件工程师就业好不好?会不会越老越吃香?今天一起来看看。 首先看下市场需求。 随着物联网、人工智能、5G等前沿技术的快速发展,嵌入式系统的应用领域不断扩大,从智能家居、汽车电子到工业自动化
    发表于 02-20 10:19

    在Linux下安装软件哪些方法

    在Linux下安装软件,可以哪些方法? 首先是最简单的,使用软件包管理工具。 如果是ubuntu或者debian系统,可以使用apt;如果是红帽或者centos,可以使用yum。 所
    的头像 发表于 02-08 09:41 1018次阅读

    Testin云测获智能化软件工程工作组优秀单位荣誉

    随着人工智能技术的深度应用,大模型等AI技术在推动软件行业智能化进程中的重要性日益凸显。软件工程,作为大模型、智能体等AI技术落地应用的前沿领域,正加速推进智能化转型。在这场变革中,企业、科研机构以及众多行业专家纷纷投身其中,共同探索智能化
    的头像 发表于 01-21 10:46 630次阅读

    AB伺服软件使用方法

    AB伺服软件使用方法
    发表于 12-24 14:45 1次下载