作业九——报告及总结
二、每位同学写一篇博客对《软件工程》课程的总结(发布在自己的博客上)。16周周四之前完成。
内容包括:
1.对前期提出的问题的回答
2.总结本学期这门课程的体会
3.对课程的建议
一、对前期提出的问题的回答
1软件工程具体是什么
软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件
软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
2关于二人合作,怎么执行,一个人负责一部分?最后怎么合成代码啊?
关于二人合作,首先就是要先分配好任务,再根据自己相关的任务来负责需要自己负责的项目和功能,这是需要两个人一起商量,就是明确分工,根据分工编写相应的代码,最后代码如何合成直接用git就好了,没那么费事。
3我们要以什么思路才能够敏捷的面对流程团队总结,我不得其解。
这个还用说,先得明白什么是敏捷开发。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
4我们究竟如何对自己开发出的软件进行测试,仅仅是运行?
能够运行并且寻找其中的bug,但是真正的软件测试往往都是需要一些工具辅助,可以用黑盒测试或者白盒测试。
白盒测试,英文是White Box Testing。又称结构测试或者逻辑驱动测试。
是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试法的覆盖白盒测试标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
白盒测试常用工具有:Jtest、VcSmith、Jcontract、C++ Test、CodeWizard、logiscope。
黑盒测试
黑盒测试,英文是Black Box Testing。又称功能测试。
黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。
以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。
黑盒测试常用工具有:winrunner
总之软件测试是一个技术活,得需要系统的学习。
5如何定义软件的质量?根据发布前的测试,还是用户的简单体验,还是制作者费劲的心思软件的稳定性?
概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。上述定义强调了以下三点:
(1)软件需求是度量软件质量的基础,与需求就一致就是质量不高。
(2)指定的标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致质量不高。
(3)通常,有一组没有显式描述的隐含需求(如期望软件是容易维护的)。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。
影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移至性、可再用性、互运行性
这些明白了就明白了。
二、总结本学期这门课程的体会
开始上这门课的时候,我都不知道什么构建之法软件工程,后来我才一点点的明白,虽然明白的不多,但是总比一点都不明白的好。我感觉这门课还是特别实用的,真的实用性特别强,图文并茂,让我们能够很快去理解。
整一个学期下来,总的来说还是学到了很多东西的,有很多地方是值得肯定的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。
整本书的内容逻辑很清晰明了,由浅入深循序渐进,首先我就大概描述下我们所学的内容,第一章是从整体分析软件工程这门学科的发展和所处的社会环境,接着后面的几章深入分析了软件开放过程和模式、软件项目管理、计算机工程、需求分析、结构化分析建模以及基于UML面向对象分析建模等。
我明白了软件开发的整个过程:①需要项目团队,组建优秀的团队可以开发出更搞质量的软件产品。任务开发团队要求小而精,成员大多在8人以内,主要成员有项目负责人、开发人员、资料管理员和软件测试员等等。
开始冯老师让我们看这本构建之法书,并且提出问题,之后慢慢的我们开始学这本书,然后就是慢慢的区理解软件工程,并且带着好多小项目,从开始的简单的四则运算到之后的简单的结对编程到代码复审,到最后的团队做出一个小游戏,这是一个很好地一个过程,有理论有实践,劳逸结合,阴阳合体,很好。
总之学到的东西比较多,这门课开的很有意义,我认为比常规的学习书本知识强很多,理论实践相互呼应。
三、对课程的建议
我感觉这门课确实不错,老师好,书好,编写这本书的作者邹欣老师,更是好上加好,厉害加厉害,我觉得不足之处基本上没有,就是希望课程时间能够开长一点,一个学期感觉太少的,好多东西还没学会。所以我觉得应该从上大学的那一刻起,每个学期都开这个课程。