软件工程概论重点 湘潭大学
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:
软件定义:
软件是计算机系统中与硬件相互依存的另一部分,是程序、数据、文档的集合。程序是按事先设计的功能与性能要求执行的指令序列;数据是确保程序能够正确执行的数据结构;文档是与程序开发、维护和使用有关的图文材料。
软件分类:系统软件、应用软件、支撑软件、可复用软件。
软件危机产生原因:周期长、成本高、质量差、维护困难。
1)缺乏软件开发经验和有关开发数据的积累,使得开发工作计划难以制定。 2)软件人员与用户的交流存在障碍,除了知识背景的差异,缺少合适的交流方法和需求描述工具也是一个重要原因,这使得获取的需求不充分或存在错误。
3)软件开发过程不规范,缺少方法论和规范的指导,开发人员各自为战,缺少整体的规划和配合,不重视文字资料工作,软件难以维护。
4)随着软件规模的增大,其复杂性往往会呈指数级升高。
5)缺少有效的软件评测手段,提交用户的软件质量差,在运行中暴露出大量的问题。
软件工程定义:
软件工程是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维
护,把经过时间考验且证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以较少的代价获得高质量的软件,并维护它。
软件工程的目标:
是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。
软件质量衡量标准:功能性、可靠性、易用性、效率、可维护性、可移植性。
软件生存三时期:软件定义、软件开发、运行维护。
软件定义包括:问题定义、可行性研究、需求分析;
软件开发包括:概要设计、详细设计、编码、测试;
运行维护:在软件运行/维护阶段对软件产品所进行的修改就是所谓的软件维护。包括:
改正性维护:在软件运行/维护阶段,为了识别和纠正软件错误、改正软件性能缺陷、排除实施中的误使用,而进行的诊断和改正错误的过程就是改正性维护。适应性维护:为了能够使软件适应运行的外部环境或数据环境变化而修改软件的过程叫做适应性维护。
完善性维护:为了满足用户对软件提出的新的功能与性能要求而对软件作出修改、
功能扩充、性能增强、提高可维护性的过程称为完善性维护。
预防性维护:为了提高软件的可靠性、可维护性而做出软件修改的过程称为预防性维护。
两个软件工程方法学定义:
传统方法:传统方法也称为生命周期方法或结构化范型。它采用结构化技术来完成软件开发的各项任务。
面向对象方法:面向对象方法把数据和行为看成同等重要,它是将数据和对数据的操作紧密结合起来的方法,这是面向对象方法与传统方法的重要区别。
软件工程方法学三要素:方法、工具、过程。
第二章 软件生存周期模型:
瀑布模型:
优点:遵循严格的顺序性和依赖性;只有当上一个阶段的工作完成后,才能够开始下个阶段的工作;上个阶段的输出文档就是下个阶段的输入文档;每个阶段完成后都会得到一个规定的文档,并且在该阶段完成前通过对文档进行评审降低错误率;可使开发过程严格遵守规范化要求。
缺点:过度依赖书面说明,如果需求分析不准确或存在错误,很可能导致最终开发的软件不符合客户需求;只适用于需求在项目开发之初就已经明确的情况。 快速原型模型:
优点:有助于满足用户的真正需求;通过搭建原型系统并与用户确认来确保规格说明文档能够准确描述需求;由于需求说明文档正确性能够得到保证,可以避免
后续的开发过程中由于需求说明文档的错误而导致项目失败;软件开发人员在搭建原型系统的过程中可以学习和了解更多项目细节,这使得设计和编码间断中的错误率得到降低;可以缩短开发周期,降低开发成本。
缺点:搭建原型系统之前需要对项目具体情况有一定了解,要求客户能够准确描述原型特征,否则将给原型搭建带来很大困难;要求软件人员具备原型工具使用经验;在原型系统确认之后,若需求发生变更,将给开发工作打来巨大障碍。 增量模型:
优点:能够在较短时间内提交给用户一个可用的软件,减少用户等待时间;采用迭代式开发思想,逐步增加软件的功能,使得用户对软件能够有一个适应的过程,避免了全新的软件对用户造成的冲击;降低了项目整体失败的风险,能够将问题控制在某一个功能模块内,避免影响全局;按照优先级先后顺序开发,无疑最重要的模块最早完成开发,接受最多测试,从而大大降低关键性功能出现错误的概率。
缺点:个构件完成开发之后的集成工作具有一定难度;并且每完成一个构件集成,都必须经过足够的测试,以确保新的构件不会影响原来已经开发的产品;要求软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单。
螺旋模型:
优点:每个阶段开始之初都将对这个阶段进行充分的风险评估,从而降低软件开发过程中的风险;本质上是快速原型模型,具备快速原型模型的特征和优点。 缺点:开发过程过于繁琐,不利于项目的快速推进;要求软件人员有丰富的风险评估经验,若风险评估不准确,则风险评估的意义就将完全消失,最终导致大量人力物力的浪费;要求具备敏锐的风险辨识能力,能够在风险出现的时候作出准确的判断。
基于构件的开发模型:
优点:通过大量的构件复用,降低开发难度、开发成本、开发周期,减少了重复劳动力;已有的构件经过长时间的运行测试,质量有所保证;有助于实现软件设计的标准化和设计风格的统一,从而提高软件的可靠性和可维护性。
缺点:需要对已有构件的设计和功能有充分的了解;要求软件人员具备一定的构件集成开发经验;需要对集成后的程序进行充分的测试,以确保功能正常。
敏捷过程:
优点:能够快速地响应并适应需求变更的出现;能够确保项目的所有利益相关者得到有效的沟通;能够保证软件快速增量式交付;无论在开发的任何阶段都欢迎需求变更的到来。
缺点:用户缺少有效规范的需求表达;开发过程缺少正规的设计,从而降低了软件的可拓展性和可维护性。
第三者
需求分析阶段4个任务:需求获取、需求分析、需求定义、需求验证。
需求分析的内容包括:完整性、正确性、合理性、可行性、充分性。
结构化分析方法质量要求:完整性、无歧义性、一致性、可验证性、可修改性、可追踪性。
第四章
程序流程图要求掌握符号:起止端点、数据输入输出、处理、预定义处理或既定