导航:首页 > 工程技术 > 软件工程原理方法分析整理

软件工程原理方法分析整理

发布时间:2021-08-13 22:52:59

1. 软件工程的基本原理有哪些

软件工程的七条基本原理
1、用分阶段的生命周期计划严格管理有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,可见把建立完善的计划作为第一条基本原理是吸取了前人的教训而提出来的。
在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本原理意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。Boehm 认为,在软件的整个生命周期中应该制定并严格执行六类计划,它们是项目概要计划,里程碑计划,项目控制计划,产品控制计划,验证计划,运行维护计划。

不同层次的管理人员都必须严格按照计划各尽其职地管理软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。

2、坚持进行阶段评审

当时已经认识到,软件的质量保证工作不能等到编码阶段结束之后再进行。这样说至少有两个理由:第一,大部分错误是在编码之前造成的,例如,根据Boehm 等人的统计,设计错误占软件错误的63%,编码仅占37%;第二,错误发现与改正得越晚,所需付出的代价也越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。

3、实行严格的产品控制
在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价,但是,
在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。也就是说,当改变需求时,为了保持软件各个配置成分的一致性,
必须实行严格的产品控制,其中主要是实行基准配置管理。所谓基准配置又称基线配置,它们是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。基准配置管理也称为变
动控制:
一切有关修改软件的建议,
特别是涉及到对基准配置的修改建议,必须按照严格的规程进行评审,获得批准以后才能实施修改。绝对不能谁想修改软件(包括尚在开发过程中的软件),就随意进行修改。

4、采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。
60年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。以后又进一步发展出各种结构分析(SA)与结构设计(SD)技术。实践表明,采用先进的技术既可
提高软件开发的效率,又可提高软件维护的效率。

5、结果应能清楚地审查

软件产品不同于一般的物理产品,它是看不峥摸不着的逻辑产品。软件开发人员
(或开发小组)
的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的
开发过程更难于评价和管理。为了提高软件开发过程的可见性,更好地进行管理,应该根据
软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结
果能够清楚地审查。

6、开发小组的人员应该少而精
这条基本原理的含义是,软件开发小组的组成人员的素质应该好,而人数则不宜过多。
开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。
素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件中的错误。此外,随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。当开发小组人员数为N时,可能的通信路径有N(N?/FONT>1)/2条,可见随着人数N的增大,通信开销将急剧增加。因此,
组成少而精的开发小组是软件工程的一条基本原理。

7、承认不断改进软件工程实践的必要性遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技术的不断进步。
l
因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验,例如,收集进度和资源耗费数据,收集出错类型和问题报告数据等等。这些数据不仅可以用来评价新的软件技术的效果,而且可以用来指明必须着重开发的软件工具和应该优先研究的技术

2. 软件工程学科涉及哪些理论和方法

(一软件工程学科已发展为计算机科学与技术、数学、工程学、管理学等相关学科的交 叉性学科。传统的计算机科学与技术学科已经涵盖不了软件工程可归属的二级学科问题, 不适应软件产业对软件工程人才培养的需要。

(二软件工程学科已形成较完整的理论与工程技术体系,课程体系基本明确,高端人才 培养能力基本形成,创新型复合型人才的社会需求不断提高。

(三软件工程涉及软件产业、信息产业和现代服务业,代表未来社会产业发展方向。

(四现有软件工程人才培养体系不完整,需要通过进一步学科建设方能适应产业发展对 高端人才的需求。

3. 传统的软件工程方法存在的主要问题有哪些

运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

IEEE在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究

Fritz Bauer在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

《计算机科学技术网络全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

4. 浅谈对软件工程的基本概念,方法与过程的理解及如何运用1500字左右

件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则.
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品.正确性指软件产品达到预期功能的程度.可用性指软件基本结构、实现及文档为用户可用的程度.开销合宜是指软件开发、运行的整个开销满足用户要求的程度.这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束.
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤.软件工程过程主要包括开发过程、运作过程、维护过程.它们覆盖了需求、设计、实现、确认以及维护等活动.需求活动包括问题分析和需求分析.问题分析获取需求定义,又称软件需求规约.需求分析生成功能规约.设计活动一般包括概要设计和详细设计.概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义.详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述.实现活动把设计结果转换为可执行的程序代码.确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求.维护活动包括使用过程中的扩充、修改与完善.伴随以上过程,还有管理过程、支持过程、培训过程等.
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则.

5. 软件工程的基本原理

自从1968年提出“软件工程”这一术语以来,研究软件工程的专家学者们陆续提出了100多条关于软件工程的准则或信条。美国著名的软件工程专家巴利·玻姆(Barry Boehm)综合这些专家的意见,并总结了美国天合公司(TRW)多年的开发软件的经验,于1983年提出了软件工程的七条基本原理。
玻姆认为,这七条原理是确保软件产品质量和开发效率的原理的最小集合。它们是相互独立的,是缺一不可的最小集合;同时,它们又是相当完备的。人们当然不能用数学方法严格证明它们是一个完备的集合,但是可以证明,在此之前已经提出的100多条软件工程准则都可以有这七条原理的任意组合蕴含或派生。
下面简要介绍软件工程的七条原理:
用分阶段的生命周期计划严格管理
这一条是吸取前人的教训而提出来的。统计表明,50%以上的失败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。玻姆认为,在整个软件生命周期中应指定并严格执行6类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。
坚持进行阶段评审
统计结果显示:大部分错误是在编码之前造成的,大约占63%错误发现的越晚,改正它要付出的代价就越大,要差2到3个数量级。 因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。
实行严格的产品控制
开发人员最痛恨的事情之一就是改动需求。但是实践告诉我们,需求的改动往往是不可避免的。这就要求我们要采用科学的产品控制技术来顺应这种要求。也就是要采用变动控制,又叫基准配置管理。当需求变动时,其它各个阶段的文档或代码随之相应变动,以保证软件的一致性。
采纳现代程序设计技术
从六、七十年代的结构化软件开发技术,到最近的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:方法大似气力。采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。
结果应能清楚地审查
软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。
开发小组的人员应少而精
开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少的多;当开发小组为N人时,可能的通讯信道为N(N-1)/2, 可见随着人数N的增大,通讯开销将急剧增大。
承认不断改进软件工程实践的必要性
遵从上述六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有的经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐。因此,玻姆提出应把承认不断改进软件工程实践的必要性作为软件工程的第七条原理。根据这条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。

6. 软件工程中常用的需求分析的方法有哪些

一、过滤需求的方法
做后端系统,要学会的第一个技能就是砍需求。也就是过滤需求。

这不是一个贬义词,反而是体现后端产品价值判断的基础。

过滤需求的方法,就是通过一定的手段判断需求是否是伪需求,应该被过滤掉。

1. 用户场景模拟法
后端产品的出发点就是帮助业务用户,因此在调研需求的时候要模拟业务的场景,分析业务用户提到的需求是否能解决他的问题。

如果不能帮助用户,那么这个需求就可能是伪需求。

以下面的案例说明:

背景:“货到付款”类型的订单会因为缺货而无法发出,如果超过一定的时间,客服就会跟顾客沟通,帮顾客取消订单。

需求:由于这种订单的数量还是蛮多的,逐个取消太费时间,因此业务用户要求在“缺货订单”列表页增加“批量取消订单”按钮。

分析:调研到业务操作场景,是先找到该类缺货订单,然后和顾客沟通,顾客同意删除,才进行删除。也就是逐个沟通确认,再逐个取消订单的,所以“批量取消订单”无法被有效使用。

因此,该需求是个伪需求,应该被过滤掉。

2. 功能归属分析
专门的系统做专职功能,有助于合理的产品体系建设。

因此需求调研的时候,可以通过系统的定位,判断需求是否应该在该系统完成。

如果不属于该系统范畴,那么直接说服需求方更换方案。以

下面的案例说明:

背景:CRM系统(顾客关系管理系统)有一个顾客标签生成功能,就是根据顾客的消费行为数据,自动对应关联上标签,如优质顾客、高潜力顾客、欺诈顾客等。

需求:业务用户提出需求,除了做上述的基础标签之外,还要做出英语版本的标签(就是把标签文案翻译成英文),这样欧美员工可以在英语版本的系统下使用。

分析:调研到翻译之后的标签不是在CRM系统使用的,而是给到SMS(客服系统)使用的。

所以应该由SMS根据CMS提供的基础标签数据,自己做二次的衍生。

之所以这样,首先是为了避免未来更多语言版本的扩展需求或更多系统提出类似的需求;

其次,CRM系统已经完成了“接力赛”的第一棒,创造了基础数据,那么其他系统要特殊化使用,完全可以自行进行特殊化处理,无需耦合回CRM系统。

结论:案例的需求本身是真需求,并且实现上也没难度,但是该功能的定位超出了本系统范畴,专门系统做专职功能,化衍生需求应该在下游执行。

否则,耦合性过高只会增加系统的复杂程度,难以维护和扩展。

二、拆分和聚合的方法
1. 拆分需求法
业务用户提出一个需求,很可能只是短短的一段话。

但是不要高兴太早,可能这一句话暗含了很多线索,因此要善于拆分:

先找他要解决的核心问题,再围绕核心点,理清前、后、左、右、上、下的旁系需求点。

每个需求点再当做一个子需求进行调研,最后再聚合在一起。

以下面的案例说明:

背景:订单业务的类型很多,订单退货之后需要创建售后单据,但是因为数量大,所以花费很多人力,且手动创建有出错的风险。

需求:业务提出的需求是“增加退货订单自动创建售后单的功能”,这是个一句话需求。

该一句话需求,其实包含了多种具体的订单类型和场景,那么我们就要拆分调研,拆分的维度比如:

自营订单、第三方订单、货到付款订单、先款后货订单、部分退货订单、完全退货订单、服装事业部订单、电子事业部订单等,其中每一个维度就相当于一个小需求。

这里不一一展开。

2. 聚合需求法
拆分法是对单个需求分解成若干小需求进行调研,聚合法相反,是找到许多个相互关联的小需求的共性,然后统筹成一个大需求去完成。例如:

由于业务用户分散在不同的部门,各自为政,于是张三、李四可能都对一个业务流程有相同的需求,或者对同一个功能有相同的优化期望,结果俩人分别提了需求过来。那么产品经理就要找到二者背后的相关性和交叉区。

然后统筹规划,聚合在一起当作一个需求来调研,最终输出一个整体的需求调研结果。

三、利用辅助功能调研需求
调研产品现有功能,可以用来确认原有功能的逻辑,或者确定新需求方案是否可行。

比如业务用户需要更新一个功能,为了避免更新出错或遗漏,产品经理需要知道修改前和修改后是否会能正常运行。

最基础的办法就是自己设计一个测试用例,记录操作方式、状态变化、数据流向等。看看下面的例子:

背景:从销售网站获取到OMS系统(订单管理系统)的订单信息中带着顾客的邮箱。顾客下完单,可能会在销售网站修改邮箱,而此时已经获取到OMS的历史订单中的邮箱是不变的。

需求:顾客若在销售网站修改邮箱,要求已获取到OMS的该顾客的订单中的邮箱也要同步修改。

分析:需求是很明白的,也有它的意义,但有风险。

因为我们知道订单信息贯穿于整个订单流转过程中,牵扯到订单编辑、审核、取消、配货、发货等,而这些环节跳转的触发条件可能就是某个信息更新(这里面就可能包括有邮箱更新)。

因此,更新邮箱是否会影响流程中的某些环节,一时间很难准确知道。

于是,我们可以采用预测试的方式,设计测试用例,在测试机运行一些订单,观察各个环节邮箱变更的影响,然后收集起来分析对策。

测试法就像是探雷一样,主要用来解决未知风险点。这个方式的重点是记录和分析操作前状态、操作位点、操作后状态、操作后触发的连锁反应、数据流向等。

四、“拔萝卜带出泥”的方式调研需求
调研需求时,产品经理要拔萝卜带出泥,挖掘用户没看到的需求点和价值。

举例说明:

背景:公司入驻到销售平台后,销售平台会对入驻的店铺的违规行为进行罚款。

需求:业务用户提出需求,将销售平台的罚款数据抓取到订单系统,关联订单数据,以便进行人工分析。

分析:

第一步,先拆分需求,确定什么是罚款数据,总共有哪些罚款种类,需要对接哪些罚款种类,罚款数据与订单系统关联方式是什么,是否都能关联到,关联不到怎么办,销售平台是否已经提供了公用的罚款接口,Token(请求权限)如何获取,抓取频率怎么样,数据增长幅度多大,获取之后做哪些展示和搜索,用户权限怎么设置,需要和订单系统做哪些交互,该需求的价值是什么……

第二步,挖掘需求:是否需要作分析功能,分析功能的规则是什么;是否需要做监控和预警,是否需要指派负责人;其他业务人员是否也有类似需求,其他平台是否也有类似需求……

通过“拔萝卜带出泥”的方式,连带出更多需求点。将上述调研结果重新组装起来,得到一个系统化的完整需求。

罗列出需求要点和对应的验收目标,这样使得需求具象化,同时又不会遗漏细节,内部充实,外部闭环,并且进行了价值挖掘,做成控制阈值、预警、责任人分派、趋势分析、损失分析等高价值的功能,超出业务的预期。

与软件工程原理方法分析整理相关的资料

热点内容
苏州假山景观设计工程 浏览:862
哈尔滨工程造价招聘 浏览:937
建筑工程土建劳务分包 浏览:632
道路监理工程师 浏览:476
安徽工程大学机电学院在本校吗 浏览:370
河北工程大学保研率多少 浏览:287
有学质量工程师的书吗 浏览:479
康乐县建筑工程公司 浏览:569
助理工程师二级 浏览:872
注册安全工程师初级考试时间 浏览:901
食品科学与工程专业课题研究 浏览:881
工程造价图纸建模 浏览:888
辽宁恒润建设工程有限公司 浏览:93
实行施工总承包的工程项目 浏览:737
道路桥梁工程技术兴趣爱好 浏览:316
密歇根理工大学电气工程专业 浏览:388
广西交通工程质量监督站 浏览:31
四川大学材料科学与工程学院考研参考书目 浏览:858
有线电视工程建设管理条例 浏览:270
云南工程监理公司排名 浏览:673