软件工程总结_软件工程的总结
软件工程总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程的总结”。
软件工程总结
软件的特点
软件是一种逻辑实体。
软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。 软件维护与硬件的维修有着本质的差别。
软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
软件的开发是一个复杂的过程。
软件的成本非常高昂。软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。软件工程的特性:
1.软件工程关注于大型程序的构造 2.软件工程的中心课题是控制复杂性 3.软件经常变化
4.开发软件的效率非常重要 5.和谐地合作是开发软件的关键 6.软件必须有效地支持它的用户
7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人
PM(Project Manager):负责整个项目计划的制定、进度的跟踪、监督以及与客户的沟通等。
PL(Project Leader):负责与项目有关的技术问题的调研、指导、培训以及项目进度的跟踪等。
Page 1of 17
CS(Consultant):负责与客户确认项目中所涉及的业务流程以及向项目组其他成员说明项目的业务流程。
SE(Software Engineer):负责项目的概要设计、详细设计以及开发架构的制定和系统测试用例的书写。 PG,也叫CD(Coder):负责写代码以及单体测试. TE(Tester):负责集成测试、压力测试以及用户测试。
1.2 软件工程定义
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精
Page 2of 17
承认不断改进软件工程实践的必要性
Page 3of 17
增量模型的优点
1.在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。
2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。
3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。增量模型的困难
1.在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。
2.开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险
螺旋模型(Spiral Model)螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。
Page 4of 17
统一开发过程(RUP)极限编程(敏捷开发过程)(XP)
软件 =程序+数据+文档软件危机: 原因,现象,办法(软件工程学)软件工程(学):开发、运行和维护软
Page 5of 17
件的系统方法软件工程3 个要素:方法、工具和过程。软件生命周期:定义,开发,运行维护 软件过程:瀑布模型+RUP
第二章
可行性研究的目的:
用小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的内容:(1)技术可行性(2)经济可行性(3)操作可行性
• • •
(4)社会可行性(法律可行性)(5)抉择
可行性研究过程: 1.复查系统规模和目标
确保分析员提交的报告书确实是用户要求解决的问题。2.研究目前正在使用的系统
现有系统要完成的工作,就是新系统所必需具备的功能。
现有系统存在的缺点,新系统必需加以改进。
现有系统所不具备功能,又是用户必须的,则新系统一定要予以增加。3.导出新系统的高层逻辑模型 4.进一步定义问题 用户使用可能性 时间进度可行性 组织和文化上的可行性
Page 6of 17
定义系统目标‐复查系统目标和规模‐研究现有系统‐设计新系统‐再定义系统目标。重复这个过程,直到提出新的系统逻辑模型。
5.导出和评价供选择的解法;针对多种供选方案,用户应从下面三个方面进行筛选:
从技术角度排除那些不现实的方案; 从操作角度去掉那些用户不能接受的方案;
从经济角度估算每个可能的系统的成本/效益。6.推荐建议方案 向用户提出推荐的方案,在推荐方案中应清楚地表明:
本项目的开发价值; 推荐这个方案的理由; 制定实现项目的进度表。7.草拟开发计划
工程的进度;
人才资源的需求及使用;
设备资源的需求及使用(软、硬件工具)、估算生存周期每个阶段的成本; 给出下一阶段(需求分析)的详细进度表和成本估计。8.书写文档提交审查
Page 7of 17
Page 8of 17
Page 9of 17
数据流图和数据字典共同构成系统的逻辑模型 没有数据字典数据流图就不严格,没有数据流图 数据字典也难于发挥作用。第3 章需求分析
需求分析是软件定义时期的后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
获取的需求的表达方式:(1)需求列表
需求与系统的特殊视角或环境的关系(2)业务流程图(状态/活动图)(3)数据流图(4)实体‐联系图 ER 图: 实体关系属性
验证软件需求的正确性,一般应从4 个方面进行:(1)一致性所有需求必须是一致的,任何一条需求不能和其 他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需
Page 10of 17
要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(4)有效性必须证明需求是正确有效的,确实能解决用户面 对的问题。第四章总体设计
总体设计过程一般分为两个阶段
系统设计阶段:确定系统的物理实现方案
结构设计阶段:确定软件的结构设计模块的衡量标准:
内聚耦合耦合: 数据耦合控制耦合公共环境耦合内容耦合结论:尽量使用数据耦合,少用控制耦合,限制公共
环境耦合的范围,完全不用内容耦合。
内聚:标志着一个模块内各个元素彼此间结合的 紧密程度。内聚有六种,由弱到强分别为:(1)偶然内聚:
一个模块程序A 和程序B 内有一组语句在两处或多处出现,于是把这组语句作为一个模块以节省内存,叫偶然内聚。(2)逻辑内聚
Page 11of 17
(3)时间内聚
• 例如,模块完成各种初始化工作或当一个模块处理
意外故障时,这个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任务,这就构成了时间内聚。(4)通信内聚(5)顺序内聚(6)功能内聚
对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软件设 计的一贯原则
面向数据流的设计方法:
信息流的两种类型: 变换流事务流(重点)
Page 12of 17 事务流Page 13of 17
第七章 实现 软件测试准则
(1)所有测试都应该能追溯到用户需求。(2)尽早的完成测试计划
(3)把parteo 原理运用到软件测试中(4)应该从小模块测试开始,逐步进行测试(5)穷举测试时不可能的Page 14of 17
(6)好由独立的第三方进行测试测试方法
1.白盒测试知道详细的内部构造,知道是怎么运行的2.黑盒测试只知道软件的详细功能,以及各个功能之间的的产生结果(也就是流程)
测试步骤
1.模块测试 ‐‐‐ 单元 2.子系统测试 ‐‐‐ 局部 3.系统测试 ‐‐‐ 集成4.验收测试 ‐‐‐ 用户参与 5.平行运行 ‐‐‐ 新旧共存集成测试:
1、非渐增式测试方法,即:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序进行测试。
2、渐增式测试,即:先把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法实际上同时完成单元测试和集成测试.目前在进行集成测试时普遍采用渐增式测试方法。第八章软件维护
维护的类型有四种: 改正性维护(改正错误)适应性维护(硬件环境)扩充与完善性维护(功能完善)
预防性维护(方法的改进)提高可维护性的方法:
• 建立明确的软件质量目标和优先级 • 使用提高软件质量的技术和工具
Page 15of 17
• 进行明确的质量保证审查 • 选择可维护的程序设计语言 • 改进程序的文档
第十三章软件项目管理评估软件规模的技术: 技术 功能点技术
依据软件的信息与特性,以及软件的复杂度工作量的估算
依据模型估算出软件的开发工作量软件项目的特点:
无形的产品,难于理解,算法,概念等的集合目标系统具有一定的模糊性
软件看法具有异变性
开发文档量大 开发技术强代码行软件开发人员的特点:
1.高知识、高技术、个人作用突出
2.多层次
3.知识更新快,知识更新快这是软件行业显著的特点。4.流动性大
软件质量保证的措施:
Page 16of 17
技术审查的必要性
走查 审查 序正确性 甘特图
在进度报告中很有效在作管理陈述时易于读懂和使用。作为计划编制工具不是太强。没有表示活动间的逻辑关系。程
Page 17of 17