到此,高级软件工程这门课结束了,上这门课不仅仅学习了课内的知识,还学习了很多计算机相关的知识,像第一节课就学习了VIM的使用,总之获益匪浅,感谢孟老师,感谢《高级软件工程》!
第一部分 软件工程总结
您认为一个软件工程师的软件工程知识技能水平高低主要体现在哪些方面?
1. 团队精神和协作能力:在我看来,这是软件工程人员应该具备的最基本的,也是最重要的一项技能。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神,很好的合作意识和团队精神更加适应时代发展的潮流,也是我们软件工程师的必修课。
2. 规范化,标准化的代码编写习惯:在一些外国知名软件公司,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
3. 良好的文档书写习惯:良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
4. 较强的英语阅读和写作能力:程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。
5.软件测试习惯:软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
6.具有软件工程的概念:基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。
7.学习与总结能力:软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力和对IT新技术比较敏感,同时,掌握最新的IT实用技术。
第二部分 软件工程测试
一、选择题:
(1)软件工程的出现主要是由于( )。
A、程序设计方法学的影响 B、其它工程科学的影响
C、软件危机的出现 D、计算机的发展
答案:C 来源:中国大学mooc北京大学软件工程课后题 考点:软件工程概念
(2)下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是()。
A.演化模型 B.瀑布模型 C.喷泉模型 D.增量模型
答案:C 来源:中国大学mooc北京大学软件工程课后题 考点:软件生存周期模型
(3) 需求规约是一个软件产品/系统的()
A.开发模型 B. 框架模型 C.概念模型 D.功能模型
答案:C 来源:中国大学mooc北京大学软件工程课后题 考点:需求规约的概念与格式
(4)结构化分析模型中,支持数据抽象的是哪些术语________
①数据流 ②数据存储 ③数据源 ④数据潭 ⑤加工
A.1.2 B.3.4 C.1.2.3.4 D.3.4.5
答案:A 来源:中国大学mooc北京大学软件工程课后题 考点:结构分析模型
(5)需求规格说明书的作用不应该包括( )。
A、软件设计的依据 B、用户与开发人员对软件要做什么的共同理解
C、软件验收的依据 D、软件可行性研究的依据
答案:D 来源:百度文库 考点:需求分析
(6)使用结构化分析方法时,采用的基本手段是( )。
A、分解和抽象 B、分解和综合 C、归纳与推导 D、试探与回溯
答案:A 来源:百度文库 考点: 结构化分析方法
(7)一个模块直接控制(调用)的下层模块的数目称为模块的( )。
A、扇入数 B、扇出数 C、宽度 D、作用域
答案:B 来源:中国海洋大学期末考试 考点:扇入扇出
(8)若一个模块内部的处理动作为:成分 A 的输出是成分 B 的输入,则该模块的聚合性称为( )。
A、顺序内聚 B、功能内聚 C、过程内聚 D、通信内聚
答案:A 来源:百度文库 考点:模块聚合
(9)下列耦合度表示中,最弱的耦合形式是( )。
A、特征耦合 B、公共耦合 C、数据耦合 D、数据结构
答案:C 来源:中国海洋大学期末试卷 考点:耦合
(10)软件测试方法中,黑盒和白盒测试法是常用的方法,其中白盒测试主要用于测试( )。
A、结构合理性 B、软件外部功能 C、程序正确性 D、程序内部逻辑
答案:A 来源:百度文库 考点:软件测试方法
(11)软件测试是软件开发过程中重要和不可缺少的阶段,其包含的内容和步骤甚多,而测试过程的多种环节中基础的是( )
A.集成测试 B.单元测试 C.系统测试 D.验收测试
答案:B 来源:百度文库 考点:软件测试方法
(12)软件工程方法学包括的三个要素是( )。
A.方法、工具和过程 B.对象、过程和方法
C.分析、设计和编程 D.开发、维护和工程
答案:A 来源:中国海洋大学期末试卷 考点:软件工程基础概念
(13)面向对象方法的要素是( )。
A.对象、类、数据类型和算法 B.对象、类、继承和消息
C.对象、基类、派生类和继承 D.对象、父类、子类和继承
答案:B 来源:中国大学mooc北京大学软件工程课后题 考点:面对对象方法
(14)软件开发活动的顺序应该是 ( )。
A.问题定义、可行性研究、需求分析、设计、编码和测试
B.问题定义、设计、可行性研究、编码和测试
C.需求分析、设计、编码和测试
D.需求分析、编码和测试、试运行
答案:A 来源:百度文库 考点:软件开发活动
(15)( )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A. 多态性 B. 继承 C. 封装 D. 消息
答案:C 来源:中国大学mooc北京大学软件工程课后题 考点:面对对象概念
二、判断题
1、软件就是所谓的程序.(F)
2、结构化分析与设计是软件工程学的一个重要思想.(T)
3、自顶向下逐步细化是结构化分析与设计的核心思想.(T)
4、信息隐蔽是指模块内部的数据与过程对其他模块隐藏起来. (T)
5、模块的耦合越弱,表明模块的独立性越差.(F)
6、模块的控制域与作用域是一样的. (F)
7、编码是软件开发时期最重要的阶段. (F)
8、软件测试是为了证明程序的正确性. (F)
9、条件组合覆盖一定包含判定覆盖. (T)
10、软件维护是可有可无的 (F)
三、填空题
1. 软件生命周期通常由______、 ______、 ______、 ______、 ______和单元测试、综合测试、 ______8 个阶段组成
答案:软件定义、可行性研究、需求分析、总体设计、编码、运行维护
2. 在 E-R 模型中,包含以下基本成分: __________、联系、属性
答案:数据对象(实体)
3. 结构程序设计中只使用__________、 __________和__________三种基本的控制结构。
答案:顺序、选择、循环
4. 可行性研究主要包括______、 ______、和操作可行性三个方面。
答案:技术可行性、经济可行性
5.类与类之间关系:—— —— —— ——(任写四种)
答案:关联、泛化(继承)、依赖和细化。
四、问答题
(1)软件危机的表现
参考答案:1)对软件成本和进度的估计常常不准确
2)用户对“已完成的”软件产品不满意
3)软件产品的质量达不到要求
4)软件难以维护
5)软件没有合适的文档资料
6)软件成本在计算机系统总成本中所占比例逐年上升
7)软件开发生产率提高的速度不能满足社会对软件产品日益增长的需求
(2)在软件设计过程中应遵循哪些基本原理?
参考答案:1.模块化与模块独立
2.抽象
3.逐步求精
4.信息隐藏
5.局部化
(3)什么是软件过程?列举几个常见的描述软件过程的模型?
参考答案:
软件过程:软件过程是为了获取高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。
(4)面对对象方法学的基本原则是什么?
参考答案:面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。
(5)简述白盒测试和黑盒测试。
1.白盒测试(又称结构测试)
把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
2.黑盒测试(又称功能测试)
把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。黑盒测试是在程序接口进行的测试,只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性
五、综合题
1. 画出下面伪码的程序流程图。
START
IF p THEN
WHILE q DO f END DO
ELSE
BLOCK
g
h
END BLOCK
END IF
STOP
来源:中国海洋大学期末试卷 考点:程序流程图
2.某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下。对其建立对象模型。
(1)报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称、订期、单价、份数等项目,订户通过填写订单来订阅报刊。
(2)报社下属多个发行站,每个站负责收集登陆订单,打印收款凭证等事务。
(3)报社负责分类并统计各个发行站送来的报刊订阅信息。
参考答案:
来源:中国大学mooc北京大学软件工程课堂例题 考点:对象模型
3. 在某小型图书管理系统中,读者(借阅者)可以请求以下服务:通过系统查询图书信息、借阅图书、归还图书(若读者还书时超过借阅期限,就要交纳一定罚金)。当读者登录系统后还可以查询本人的借阅信息,也可以进行图书预订。根据上述功能描述设计读者请求服务的用例图(Use Case),标明用例之间的关系。
参考答案:
来源:中国海洋大学期末试题 考点:用例图