Week-2-作业1

第一章 概论

1、什么是程序?

答:在学习软件工程导论前,我们已经学习了一些计算机语言和数据结构这样的课程,并深刻的知道“程序=数据结构+算法”,但在学习中还是会产生如书中1.1讲所提到的那些疑问,二叉树的遍历算法有什么实际用处?大多数的算法都已经实现,我们只要调用即可,那学习数据结构有什么用呢?一个程序需要后台维护,那团队中新加入的成员就要读懂过去的程序并进行改进,程序到底是什么?仔细阅读过第一章的内容之后,我明白了这样两个推论,“软件=程序+软件工程”、“软件企业=软件+商业模式”。即,程序是基本功,但在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合,是为实现预期目的而进行操作的一系列语句和指令。如果要让这个程序货起来,就要进入到软件工程的阶段,解决各个时期的各种问题。

2、什么是软件工程?

答:软件可以说是人类创造的最复杂的系统类型,软件工程师能看到源代码,但是源代码不是软件本身,软件看上去很容易修改,软件不能独立存在,他总是要运行在硬件上面,人们比较容易理解连续的系统:增加输入,就能看到相应输出的增加。有许多不同的程序设计语言、软件工具和软件开发平台,存在许多不同的软件开发流程。。。那么软件工程到底是什么?1.2中有提到,软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护的过程中。查阅资料后了解到,它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮箱、嵌入式系统、人机界面、操作系统、编辑器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、*部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。

3、软件工程与计算机科学有什么样的关系?

答:书中的概括,如表格

计算机科学 软件工程
发现和研究长期的、客观的真理 短期的实际效果(具体的软件会过时)
理想化 对各种因素的折衷
确定性、完美、通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题
理论的统一 百花齐放的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性
计算机科学与技术和工程涉及的领域不同,计算机科学与技术是计算机的全面知识,包括计算机原理、硬件、及发展趋势。工程主要是计算机的开发,程序的编写。
计算机科学与技术是计算机综合性知识的专业,主要培养具有良好的科学素养,系统地、较好地掌握有关计算机科学与技术的理论和技术,包括计算机硬件、与计算机应用的基本理
论、基本知识和基本技能与方法,能在科研部门、教育单位、、事业、技术和行政管理部门等单位从事计算机教学、科学研究和应用的计算机科学与技术学科的高级科学技术人才。
工程专业以计算机科学与技术学科为基础,强调开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上熟练掌握从事需求分析、设计、测试、维护和项目管理等工作
所必需的基础知识、基本方法和基本技能,突出对学生专业知识和专业技能的培养,培养能够从事开发、测试、维护和项目管理的高级专门人才。
第二章 个人技术和流程
1、什么是单元测试?
答:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指
一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级
别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析和动态分析。
静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以
测试覆盖度方面的信息。
2、什么是PSP?
答:个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的
计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
第十六章
1、软件工程的技术和实践如何帮助创新?
答:在创建一个系统时,开发人员可以边编程边测试。 在软件工程中,介绍了很多用图形表示问题的技术,包括系统流程图、数据流图、层次图、结构图等,如何画这些图、如何利用
这些图清晰的表达出解决问题所在,这些图更适用于表示什么样的问题,相近图的相同点和不同点,各适用于什么场合,这样的创新就是用精炼的语言表达最丰富的内容。
2、影响产品竞争的因素都有什么?
答:产品行业的因素,公司和市场因素,团队执行因素,产品的价值因素,邹欣老师在书中的解释很详细,非常感谢。

 
上一篇:c# – 减少代码行数


下一篇:Java单元测试学习