第二章 软件开发过程及其组织
第二章 软件开发过程及其组织
2.1软件开发中的困难
1、软件开发的基本问题(单个程序员遇到的问题)
两个转换
(1)第一个转换是用户对软件功能的理解与程序员对软件功能的理解之间的转换
解决手段:用尽可能标准化的方法编写程序设计任务书
(2)第二个转换解决的是人和机器之间的交流与协调问题:人和机器之间的思维方式、工作方式上都有许多根本的区别。
解决手段:关键在于程序员的知识水平与实际经验
2、大型软件开发中的困难(简答:)
(1)一致性的保持成为十分困难的问题
(2)测试的困难大大增加。
(3)工作进度难以控制
(4)文档与代码的协调十分困难
这里的 文档包括(功能说明书)(总体设计、各模块的设计任务书)(每个部分的研制报告)(测试报告)(验收报告)(用户手册)------(多选题)
(5)版本更新带来的困难
名词解释:
水波效应 : 当人们修改程序的某一处时,由于没有充分考虑到这一修改对相关部分带来的影响,结果出现了新的错误。
“黑箱”检验方法: 输入一些信息,观察是否能否得出预期输出来判断
3、大型软件开发困难产生的原因(简答:)
(1)大系统的复杂性
(2)许多具有主动性的个人之间的组织与协调本身也会带来大量的困难
(3)各个应用领域之间的差别
(4)时间的因素、变化的因素也给软件开发工作开来许多困难
2.2软件开发方法的发展
1、大型软件开发中的角色及其任务
(1)用户
任务:提出要求、验收、使用、要求修改
(2)项目负责人
任务:分析需求,向程序员分配任务,验收程序员的工作成果代码与文档,对整个软件进行联调,向用户交付使用,接收与分析用户的修改要求,向程序员布置修改任务,验收修改成果并向用户提交新的版本或修改的结果
(3)程序员
任务:编写程序,编写文档,调试自己编码的程序,向项目负责人提交工作成果
2、结构化程序设计的起点标志:《GO TO语句是有害的》《结构化程序设计》(多选题)
3、结构化程序设计的思想和方法(简答:)
思想:
把程序的结构分解成三种基本模块:处理单元、循环机制、二分决策机制
指(顺序,选择,循环)
方法(模块划分原则):
(1)模块的功能在逻辑上尽可能地单一化、明确化,最好做到模块与任务地一 一对应。
凝聚性---名词解释: 每一个模块实现一项明确地任务,反之每一项任务仅有一个模块来完成。
(2)模块之间的联系及其相互影响尽可能地少,对于必要地联系都应当加以明确地说明。
耦合---名词解释: 模块之间地各种联系及其相互影响称为耦合。
尽量避免(逻辑耦合),使用(数据耦合)(选择、填空题)
(3)模块的规模应当足够小,以便使它本身的调试易于进行。
4、如何实施结构化程序设计的思想?(简答:)
(1)限制甚至不用GOTO语句,绝对禁止超越模块边界的GOTO语句
(2)子程序尽可能做到只有一个入口、一个出口
(3)程序风格尽量明确、清晰
(4)在程序编写的同时完成有关的文档编撰,不要拖延时间
5、结构化程序设计方法主要是为(程序员)服务的。(单选、填空题)
6、结构化程序设计方法的
优点:保证了软件可靠、准确度,易于修改
缺点:增大了程序工作量,增加了编程中的麻烦与琐碎的工作(多选题)
7、工程思想的核心:(标准化的表达方式)(规范化的工作步骤)(填空题)
8、软件工程的思想 (简答:)
(1)对软件开发过程进行规范,把开发过程分为:需求分析、分析与设计阶段、编程阶段、测试阶段、使用及维护阶段五个阶段。
(2)在标准化方面,一方面是表达方式的标准化,另一方面是对工作的质量及检查制定标准。
9、软件工程的思想主要集中于加强(项目管理者)的工作上(单选、填空题)
10、Object Oriented的翻译方法有:(面向客体)、(面向目标)、(物件导向)(面向对象),(面向客体)更为准确(选择题)
11、面向对象的程序设计思想 (简答:)
(1)客观世界的任何事物都是对象,它们都有一些静态属性,也都有一些有关的操作。具有封装性
封装性 --名词解释:
作为一个整体,这些对象对外不必公开这些属性与操作,称为“封装性”
(2)对象之间有抽象与具体、群体与个体、整体与部分等几种关系。
(3)抽象的、较大的对象所具有的性质包括静态属性和动态操作,自然地成为它地子类地性质,不必加以重复说明或规定,这就是“遗传性(继承性)”(名词解释)
(4)对象之间可以传递消息。
12、与即插即用的程序设计方法相关的概念有:(组件程序设计)(组合文件)(宏观程序设计)(多选题)
13、即插即用--名词解释:
在软件生产过程中,一部分人专门生产软件组件,而另一部分人则设计整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件地研制工作。
14、可视化程序设计--名词解释:
指用图标、图像、图表,甚至随手画的素描等可视化的元素来编制程序(所见即所得)。
2.3软件开发过程的管理
1、项目管理的要素是(进度)(质量)(费用)(资源利用)(多选、填空题)
2、好软件、好程序员、好项目组的标准(P29-30)
3、项目组中的一员必须具有高度的(组织纪律性)和(团队精神)(填空题)