附加题1---我想搞懂的软件工程问题

第一章问题:

1.2.1 软件有哪些形式?

答:①系统软件:操作系统、设备驱动程序、工具软件等;②应用软件:用户使用它们来完成工作,从管理核电厂到写文章,或者是通信、游戏、浏览网页、播放视频等;③恶意软件:软件病毒等。

第二章问题:

2.1 什么是单元测试?其创建函数主要步骤?

答:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。

①设置数据;②使用被测试类型的功能;③比较实际结果和预期的结果。

第三章问题:

3.1 什么是软件工程,它包括哪些?

答:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。

软件工程的主要课程

外语、高等数学、线性代数、高等代数、电子技术基储离散数学、计算机引论(C语言)、数据结构、C++程序设计、汇编语言程序设计、算法设计与分析、计算机组成原理与体系结构、数据库系统、计算机网络、软件工程、软件测试技术、软件需求与项目管理、软件设计实例分析、CMM/ISO9000等。

第四章问题:

4.3 代码设计规范有哪些?

答:1提高编码质量,代码可读性和可维护性。

2代码编写规范

2.1 删除所有无用代码
2.2 必须给代码添加注释,一个类的注释字数不得小于代码的百分之20%
2.3 建议遵循30秒原则。如果另一个程序员无法在三十秒内无法知道你的函数在做什么,如何做以及为什么要这样做,那么说明你的代码是难于维护的,需要得到提高。
2.4 一个函数的代码长度不允许超过100行,超过一百行的函数建议在不破坏原子性的基础上进行拆分。
2.5 变量都应在方法或者类的头部集中定义
2.6 保证一行代码只做一件事
2.7 使用括号来控制操作符的运算顺序,以免使用java默认的操作符优先级顺序。
2.8 代码格式化:对代码进行格式化,再进行提交。
2.9 接口不允许没有方法或者变量的声明

3. 命名规范
3.1 各种标识符的命名要使用有实际意义的英文单词或者英文单词缩写,缩写词及英文单词要收录在项目的简写词汇表中。切忌使用阿拉伯数字和拼音进行命名。
3.2 类名:首字母大写,每个单词首字母都需要大写。
3.3 方法名:首字母小写,其余单词首字母都需大写。
3.4 全局变量,和常量名称要求全部字母大写。
3.5 参数名称与局部变量基本相同,区别在于参数名称需要加上冠词a ,an 或者在单词结尾以s结束。

4. 注释规范
4.1 注释需要注意的事项:
★注释应该用中文清晰表达意思,应该是程序看起来更清晰,更容易理解
★注释要尽量简明,避免装饰性的注释。
★注释不但要说明做什么,还应当说明为什么要这样做。最好先写注释表明要做什么,再进行编码。

4.2 类的注释
★类的用途,目的。包括其他人感兴趣的介绍。
★已知bug,当然最好是修改好所有的错误,但有时可能暂时没有办法修改,或者没有时间修改。
★开发和维护该类的历史列表,记录每一次修改的作者,日期,修改的内容。
★列举类的各种稳定状态,说明调用成员函数使类的状态产生的变迁(可选)。
★同步问题(可选)
★对主要的算法必须加以说明,主要流程必须给予引导性说明
标准格式:
如果对已经版本话的类进行了修改,需要按照如下格式为每一次修改附加修改历史记录:
// 修改人 + 修改日期
// 修改说明 范例:

// 李四 2010/07/02
// 添加错误数据修改后继续批量保存的处理函数 saveBatch(
@Bind(key = "itemParams", defaultValue = "") String itemParams,
@Bind(key = "pid", defaultValue = "") String pid)。
// 王小二 2010/07/02

4.3 接口注释:
★接口的注释风格基本与类的注释风格相同;
★在别人使用接口之前,必须了解接口所包含的概念。检验一个接口是否应该定义的简单方法是:你是否能★够容易的描述接口的用途;
★接口如何应当和不应当被使用。开发者需要知道该接口如何被使用,也希望知道该接口不能被怎样使用。

4.4 函数的注释
★函数头注释必须包括:函数执行了什么功能,为什么要这样处理;函数处理过程中对对象的哪些属性
★可能进行更改;函数执行前后,对象的状态;
★比较、循环等控制结构加注释(可选);
★在代码的功能并非一目了然的情况下,应当说明为什么要这样做;
★局部变量必须加注释;
★复杂难写的代码必须加注释;

4.5类属性的注释:
★描述域的用途。使别人知道如何去使用它;
★对于有着复杂事物规则的域,可以加入范例来说明。有时候一个简单的小例子,抵的上千言万语.

第五章问题:

5.2 软件团队的模式有哪些?

答:①主治医师模式;②明星模式;③社区模式;④业余剧团模式;⑤秘密团队;⑥特工团队;⑦交响乐团模式;⑧爵士乐模式;⑨功能团队模式;⑩官僚模式。

第六章问题:

5.1 什么是敏捷流程?及其原则?

答:敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。除了原则和实践,模式也是很重要的,多研究模式及其应用可以使你更深层次的理解敏捷开发。

原则是:①最重要的是通过尽早和不断交付有价值的软件满足客户需要。

②我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。

③经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。

④业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。

⑤围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。

⑥在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。

⑦可以工作的软件是进度的主要度量标准。

⑧敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。

⑨对卓越技术与良好设计的不断追求将有助于提高敏捷性。

⑩简单——尽可能减少工作量的艺术至关重要。

?最好的架构、需求和设计都源自自我组织的团队。

?每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。

 
时间: 2024-11-08 23:48:26

附加题1---我想搞懂的软件工程问题的相关文章

附加题1——我想搞懂的软工问题

1.教材第2章  2.1 我的问题是关于编写好程序软件中的单元测试,教材上说单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误,单元测试应该准确.快速地保证程序基本模块的正确性. 问题:编写好一个程序软件已经很费时了,为什么还要对其进行单元测试? 答:因为它浪费了太多的时间,所以一旦编码完成,开发人员总是会迫切希望进行软件的集成工作,而单元测试需要时间,会推迟了对整个系统进行联调工作启动的时间.在实践工作中,进行了完整计划的单元测试和编写实际的代码所花费的精力大致上是相同的

附加题1—— 我想搞懂的软工问题

1.第一章第2节 软件工程的目标是创造”足够好“的软件 问题:什么样的软件才算”足够好“? a:用户满意度:用户使用时未发现较多BUG,一经发现也会及时修护,不会影响用户使用软件的效率. b:可靠性:某个软件一般情况下不会崩溃,操作系统也不会死机. c:软件流程的质量:软件团队成员能互相协作,按时交付软件. d:可维护性:某个软件出问题了,维护人员能及时并彻底解决问题,不需要花费太多的时间的资金. 2第四章第4节 代码复审 问题:代码复审看什么?是不是把你的代码拿给别人看就行了? a:找出代码的

“ 附加题1—— 我想搞懂的软工问题”

问题一: 教材1.2  我的问题关于软件工程开发和维护方面的.软件工程的目标是创造好的软件,好的软件并不代表软件没有缺陷.对此,我产生了疑惑,造成软件缺陷的主要原因有哪些?我认为问题有可能出现在以下几个方面:需求不明,没有清楚地了解需求:系统结构复杂导致无法很好地维护:没有考虑到软件之间的兼容问题. http://baike.baidu.com/link?url=F31cjcUCr_YOoVcP88l8XYYvmSzPDw27sw6WgbjVF1thKup1CBxAF_2paGBBbsDh5tp

附加题1--我想搞懂的软工问题

问题一:第二章第1节 单元测试的要点? 答:1.与其他部分相隔离:单元测试时,被测试代码依赖的代码,必须使用假的桩代码,因此,如果出问题的话,一定是被测试代码的问题. 2.单元测试必须是可重复的:随着项目的推移,被测试代码很可能被修改,并不是仅仅测试修改部分,还要运行其他单元测试,以保证修改的代码不会引入其他新的错误:因此,单元测试不能由手工进行,必须保证测试用例可以进行自我判断. 3.单元测试必须在整个软件系统的生命周期中都维护,单元测试是其他阶段测试的基础,以集成测试为例,集成测试要把所有代

一篇文章带你搞懂spring全家桶套餐

spring全家桶里都有哪些食物 上期我们讲了spring和springmvc两个框架的基础知识和学习路线,而这期内容,我们将围绕着spring全家桶展开来讨论. 大家应该都知道,按照出现的顺序,spring全家桶大概包含了spring.springmvc.springboot以及springcloud,从开胃小菜spring到满汉全席springcloud,spring全家桶可谓Java工程师的必备大餐,那么,我们不妨先来看看,spring全家桶是如何从光杆司令spring发展到如今的庞大家族

彻底搞懂最短路算法

转载自:戳 彻底弄懂最短路径问题 只想说:温故而知新,可以为师矣.我大二的<数据结构>是由申老师讲的,那时候不怎么明白,估计太理论化了(ps:或许是因为我睡觉了):今天把老王的2011年课件又看了一遍,给大二的孩子们又讲了一遍,随手谷歌了N多资料,算是彻底搞懂了最短路径问题.请读者尽情享用…… 我坚信:没有不好的学生,只有垃圾的教育.不过没有人理所当然的对你好,所以要学会感恩. 一.问题引入 问题:从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径——最短路径.解决

2016届阿里实习生在线笔试附加题3

#include<iostream> using namespace std; int a[1000]; int waiting = 1; int main(){ int temp = 0; int i = 0; while(cin>>temp){ a[temp] = 1; if(temp == waiting){ cout<<waiting; for(i = waiting + 1;a[i] == 1;i++){ cout<<","&l

彻底搞懂字符编码(unicode,mbcs,utf-8,utf-16,utf-32,big endian,little endian...)[转]

最近有一些朋友常问我一些乱码的问题,和他们交流过程中,发现这个编码的相关知识还真是杂乱不堪,不少人对一些知识理解似乎也有些偏差,网上百度, google的内容,也有不少以讹传讹,根本就是错误的(例如说 unicode编码是两个字节),各种软件让你选择编码的时候,常常是很长的一个选单,让用户不知道该如何选.基于这样的问题,我就写下我的理解吧,一方面帮助一些需要帮助的人纠正认识,一方面作为自己以后备查的资料. 1. ASCII(American Standard Code for Informati

结对项目(附加题)开发总结

结对项目(附加题)开发总结 这次附加题的任务就是把两个小组写的独立的UI和CORE模块打乱重组,拼接成一个新的APP. 我们小组选择了大神刘乾所在小组和我们合作交换.一拿到乾神的核心代码,我不得不说,乾神就是乾神,代码一出,直接把我镇住了,各种参数看不懂咋办?咋写UI? 还好我们的乾神同志给我们提供了帮助文档,介绍了各个参数的作用,现摘录如下: 对于计算表达式的值(CALC模式): AnswerGet(string s)其中s是给定的算式,以等号结尾. 调用生成器时,使用: public Gen