1.软件危机的概念,内容,原因及消除的途径;
软件危机的概念:
软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;
概括地说,软件危机包含两方面问题:
如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;
软件危机产生的原因:
软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;
消除软件危机的途径:
1对计算机软件应当有一个正确的认识;
2应当有组织、有计划、通过严格的管理手段进行软件的开发;
3及时总结软件开发的成功技术和方法并加以推广;
4开发和使用更好的软件工具;
总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;
2.软件工程的定义,基本原理;
定义:软件工程是指导计算机软件开发和维护的一门工程学科;
基本原理:软件工程的7条基本原理:
1用分阶段的生命周期计划严格管理
2坚持进行阶段评审
3实行严格的产品控制
4采用现代程序设计技术
5结果应能清楚地审查
6开发小组的人员应该少而精
7承认不断改进软件工程实践的必要性
3.软件工程方法学的基本概念、内容;
基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;
内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;
4.软件生命周期的具体内容,每一个阶段的任务是什么 结合具体的工程例子来理解做软件项目主要分那几个个阶段;
问题定义:确定要求解决的问题是什么
可行性研究:决定该问题是否存在一个可行的解决办法
需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;
概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;
详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;
编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;
综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;
软件维护:软件维护的费用通常占软件总费用的55%-70%;
①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;
瀑布模型内容:瀑布模型是带“反馈环”的;
优点:1可强迫开发人员采用的规范的方法结构化技术;
2严格地规定了每个阶段必须提交的文档;
3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;
缺点:瀑布模型是由文档驱动的;
1开发过程一般不可逆,否则代价太大;
2实际的项目开发过程很难严格按照模型进行;
3客户往往很难清楚地给出所有需求,而该模型却要求如此;
4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;
快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环
优点:软件产品的开发基本上是线性顺序进行的;
1可以得到比较良好的需求定义,容易适应需求的变化;
2有利于开发与培训的同步;
3开发费用低、开发周期短且对用户更友好;
缺点:1客户与开发者对原型理解不同;
2准确的原型设计比较困难;
3不利于开发人员的创新;
增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;
优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;
1人员分配灵活,刚开始不用投入大量资源;
2如果核心产品很受欢迎,则可增加人力实现下一增量;
3可先发布部分功能给客户,对客户起到镇定剂的作用;
缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构
2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;
螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;
优点:
1设计上的灵活性,可以在项目的每个阶段进行变更;
2以笑得分段来构建大型系统,使成本计算变得简单容易;
3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;
4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;
缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;
2过多的迭代次数会增加开发成本,延迟提交时间;
喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;
6.了解可行性研究中的任务和过程;
用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;
实质:一次大大压缩简化了的系统分析和设计;
任务:1.初步确定项目的规模,目标,约束和限制;
2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;
3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;
4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性
过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;
2.研究目前正在使用的系统:现有系统的问题;
3.导出新系统的高层逻辑模型;
4.进一步定义问题;
5.导出和评价供选择的解法;
6.推荐行动方针;
7.草拟开发计划;
8.书写文档提交审查;
7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p38
8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P40
9.掌握数据字典的内容、方法、用户和实现p47
内容:
数据字典由4类元素定义组成;
1数据流;
2数据流分量即数据元素;
3数据存储;
4处理;
定义数据的方法:
数据字典中的定义就是对数据自顶向下的分解;
由数据元素组成数据的方式只有下述3种基本类型:
顺序选择重复
用途:作为分析阶段的工具;
实现:P49
10.了解成本/效益分析方法p50
货币的时间价值
投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间
纯收入:整个生存周期之内的累计经济效益折成现在值-投资;
投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;
11.了解需求分析过程中任务是什么.p47
1.确定对系统的综合要求
功能需求;指定系统必须提供的服务
性能需求;指定系统必须满足的定时约束或容量约束
可靠性和可用性需求;应定量指定
出错处理需求;指环境错误,非系统本身的错误;
2.分析系统的数据要求
接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求;
约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;
逆向需求;说明软件系统不应该做什么;
将来可能提出的要求;
3.导出系统的逻辑模型;
用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;计算机软件开发培训
4.修正系统开发计划;
用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;
12.理解面向数据流自顶向下逐步求精的方法和意义;p59
结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;
方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;
意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了;
2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,
并且可能导致新的或精化的算法描述;
3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;
13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型
14.
需求分析需要建立三种模型:
1.数据模型:实体-联系图E-R数据对象即实体之间的关系
2.功能模型:数据流图DFD系统对数据进行变换的功能
3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换
15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P62
16.掌握状态图的概念,内容,实现方法和作用;p65
17.掌握层次方框图、warnier图、IPO图的概念,内容和作用p68
18.有穷状态机的概念和内容;Petri的概念;P77
有穷状态机:状态集、输入集、转换函数、初始态、终态集
Petri:P82
19.总体设计是做什么总体设计的过程是怎样的P91
20.
总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;
总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;
典型的设计过程包括:1.设想选择的方案
2.选取理想的方案
3.推荐最佳方案
4.功能分解
5.设计软件结构
6.设计数据库
7.制定测试计划
8.书写文档
9.省查和复审
21.掌握软件设计的几个设计原理,理解他们的内容和意义;p94
1模块化就是把程序划分成独立命名且可独立访问的;
2抽象;
3逐步求精;
4信息隐藏和局部化;
5模块独立;它有两个定性标准度量:内聚和耦合;
22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;
耦合:耦合是对一个软件结构内不同模块之间互连程度;
内聚:内聚标志着一个模块内各个元素彼此结合的紧密;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。