武汉理工大学软件工程复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章概述
1.软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它是包括程序(program),相关数据(data)及其说明文档(document)
(1)程序是按事先设计的功能和性能要求执行的指令序列
(2)数据是使程序能正常操纵信息的数据结构
(3)文档是与程序开发,维护和使用有关的图文材料
2.软件的特点:
(1)软件是一种逻辑实体,而不是具体的物理实体,具有抽象性
(2)软件的生产与硬件不同,在它的开发过程中没有明显的制造过程
(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题
(4)依赖于计算机硬件系统
(5)软件的开发至今尚未完全摆脱手工艺的开发方式
(6)软件本身是复杂的(实际问题的复杂性,程序逻辑结构的复杂性)
(7)软件成本相当昂贵
(8)相当多的软件工作涉及到社会因素
3.软件危机(software crisis)是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
4.软件危机包含两方面的问题:其一是如何开发软件,以满足不断增长、日趋复杂的需求;其二是如何维护数量不断膨胀的软件产品。
5.软件危机的主要表现:
质量:1. 软件产品的质量往往靠不住;2.软件常常是不可维护的;3.软件通常没有适当的文档资料;4.用户对“已完成的”软件系统不满意的现象
时间:5.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;6.经常发生对软件开发成本和进度的估计常常很不准确
预算:7.软件成本在计算机系统总成本中所占的比例逐年上升
6.出现软件危机的主要原因一方面是与软件本身的特点有关,另一方面是与软件开发和维护的方法不正确有关。解决的办法:软件工程
7.(1)软件工程(software engineering)是将工程化的思想用于软件的开发和维护
(2)软件工程(software engineering)就是为了经济地获得可靠的且能在实际机器上有效运行的软件,而建立和使用完善的工程原理。
(3)软件工程(software engineering)是:(1)将系统化的、严格约束的、可度量的方法应用于软件的开发、运行和维护,即将工程化应用于软件。(2)在(1)中所述方法的研究
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法去进行软件的开发和维护的学科。
8.软件工程包括两方面内容:软件开发技术和软件项目管理。其中,软件开发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。
9.软件工程包含四个关键元素:方法(methodologies)、语言(languages)、工具(tools)和过程
(procedures)
(1)软件的方法提供如何构造软件的技术。内容:明确的工作步骤与技术、具体的文档格式、明确的评价标准
(2)软件语言用于支持软件的分析、设计和实现
(3)软件工具为方法和语言提供自动和半自动的支持
(4)软件过程规定了完成各项任务的步骤
从内容上说软件工程包括:软件开发理论和结构、软件开发技术、以及软件工程管理和规范
10.软件工程的原理:
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采纳现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应少而精
(7)承认不断改进软件工程实践的必要性
11.软件的生存期:一个软件从计划开发到废弃不用的这段时期被称为软件的生命周期
12.软件生存周期阶段:
定义阶段:主要确定待开发软件系统要做什么
(1)系统分析(问题定义):要解决的问题是什么。同用户协商,达成共识。
(2)制定软件项目计划(含可行性研究):问题是否值得去解决。若可行,则须指定软件项目计划包括确定工作域、风险分析、资源规定、成本核算、以及工作任务和进度安排等。(3)需求分析:系统必须完成哪些功能。开发人员与用户共同讨论决定哪些需求是可以满足的,并对其加以确切的描述。
开发阶段:确定待开发的软件怎么做
(1)软件设计:总体上如何实现系统,将系统功能分割给几个子系统,子系统间的接口如何。如何具体地实现系统,如何描述数据结构和算法。
(2)编码:选择编程语言并编写代码。(投入最多,持续时间不长)
(3)测试:包括不同的测试阶段,如测试功能的单元测试、测试性能的综合测试。
维护阶段(持续时间最长):进行各种修改,使系统能持久的满足用户的需要。改正性维护、适应性维护、完善性维护和预防性维护
13.常见的软件工程模型有:瀑布模型、原型法模型、演化模型、螺旋模型、喷泉模型、第四代技术过程模型
(1)瀑布模型:具有顺序性和依赖性,便于分工合作,文档便于修改,并有复审质量保证,但与用户见面晚,纠错慢,工期延期的可能性大。适合于软件需求比较明确、开发技术比较成熟、工程管理比较严格,无重大变化的系统。优点:便于分工协作;文档驱动,有质量保证。缺点:易阻塞;推迟实现;成功率较低。适用范围:功能、性能需求明确,无重大变化的系统
(2)原型法模型:针对瀑布模型提出来的一种改进方法。它的基本思想是从用户需求出发,快速建立一个原型,使用户通过这个原型初步表达出自己的要求,并通过反复修改、完善,逐步靠近用户的全部需求,最终形成一个完全满足用户要求的新体系。
适用范围:(用户可见的功能和表示)对软件需求缺乏准确的认识的项目,采用新技术的项目
(3)演化模型:适用范围:对软件需求缺乏准确的认识的项目,系统开发的时限十分严格的项目
(4)螺旋模型:风险驱动:以降低风险为目的,极大地依赖风险评估技术
适用范围:开发的大型项目面向对象软件的项目需求不准确的项目
(5)喷泉模型:(面向对象)迭代与递增,重复,演进,无间隙,各阶段间无明显界限
第二章可行性研究
1.可行性研究的相关工作包括问题定义、可行性研究和需求定义
(1)问题定义:是可行性研究和软件开发计划的制定的依据
基本任务
——了解问题的背景和用户的目标
——提出关于问题的性质、工程的目标和规模的书面报告
(2)可行性研究:
可行性研究的前提:系统分析员与用户就项目的目标等取得了一致的认识
可行性研究的结论:启动,或延期,或终止
可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2.可行性研究的目的:技术可行性、经济可行性、操作可行性、法律可行性
技术可行性:
(1)风险分析:在给定的约束条件下,判断能否设计并实现系统所需的功能和性能
(2)资源分析:论证是否具备系统开发所需的各类管理人员和专业技术人员、软件、硬件资源和工作环境等
(3)技术分析:当前的科学技术是否支持系统开发的全过程
经济可行性:系统的经济效益是否能超过它的开发成本(系统效益包括经济效益和社会效益)操作可行性:确定在当前政治意识形态、法律法规、社会道德、民族意识以及系统运行的组织机构和人员等环境下,系统是否可行。
法律可行性:是否符合法律的规定
3.可行性研究最根本的任务是对以后的行动方针提出建议。
4.可行性研究的步骤:
(1)复查系统规模和目标
(2)研究目前正在使用的系统
(3)导出新系统的高层逻辑模型
(4)导出和评价若干供选择的解法
(5)草拟开发计划等文档并提交审查
5.可行性研究最终得到可行性研究报告
第三章需求分析
1.需求分析是在可行性分析和需求定义的基础上,要求更加详细、准确的分析清楚系统必须做什么。有时又称为软件系统分析,它处于软件工程的开始部分,提供了构建软件项目其余