软件工程工作总结

2021-03-01 来源:其他工作总结收藏下载本文

推荐第1篇:软件工程

填好发给我!!!!

一、填空题:

1.面向对象分析的目的是对客观世界的系统进行 __________________,对象就是客观世界的;

2.软件工程方法学包括:工程环境建立、方法、工具和过程;

3.思想概括起来,就是以人为本,最优先要做的是通过尽早地、持续地交付有价值的软件来使客户满意;

4.UML是指,是用于建立面向对象系统模型的标记方法;

5.需求分析的基本任务是和一起完全弄清用户对系统的确切需求,确切地讲就是系统做什么的问题;

6.的目的就是用最小的代价在的时间内确定该软件项目是否能够开发,是否值得去开发;

7.在众多的软件工程环境的影响中,和是最重要的。

8.是对系统不同版本进行标识和跟踪的过程,主要分为版本的访问与同步控制、。

9.模块的耦合性分为四种类型:据耦合、、、;

10.软件工程学的主要内容包括和。

二、选择题:

1.软件维护的困难主要原因是()

A.费用低B.人员少

C.开发方法的缺陷D.维护难

2.模块(),则说明模块的独立性越强。

A.耦合越强B.扇入数越高C.耦合越弱D.扇入数越低

3.指出PDL是下列哪种语言()。

A.伪码B.高级程序设计语言

C.中级程序设计语言D.低级程序设计语言

4.在进行软件测试时,首先应当进行(),然后再进行组装测试,最后再进行有效性测试。

A.单元测试B.集成测试C.确认测试D.组合测试

5.软件测试的目的是()。

A. 评价软件的质量B.发现软件的错误

C. 找出软件的所有错误D.证明软件是正确的

6.软件设计阶段分为()。

A.逻辑设计与功能设计B.模型设计和功能设计

C.结构设计和模块过程设计D.数据库设计和文件设计

7.结构化设计方法是面向()的设计。

A.数据流B.数据编码

C.数据库D.数据结构

8.程序的三种基本控制结构是()。

A.过程、子程序和分程序

B.顺序、选择和重复

C.递归、堆栈和队列

D.调用、返回和转移

9.系统定义明确之后,应对系统的可行性进行研究,可行性研究应包括(

A.软件环境可行性、技术可行性、经济可行性、社会可行性

B.经济可行性、技术可行性、操作可行性

C.经济可行性、社会可行性、系统可行性

D.经济可行性、实用性、社会可行性

10.数据字典包括()个条目。

A.2B.3C.4D.

5三、名词解释题:

1.需求分析?

2.软件危机?

3.软件生存周期模型?

4.系统测试?

5.结构化分析?

。)

四、简答题:

1.快速原型法?

2.从软件开发的过程按阶段划分,软件测试分为哪些类型?

3.数据流程图的基本符号及各自的含义是什么?数据流程图的功能是什么?

4.软件维护包括哪些方面?主要由谁来完成?

5.简述软件项目管理的实质?

推荐第2篇:软件工程

2 6软件工程

1软件工程基本思想

用科学∞知识和技术原理来定义、开发、维护软件,用工程科学∞观点进行费 用估算,制定进度,制定计划和方案,用管理科学的方法和原理进行生产∞管理, 用数学的方法建立软件开发中的各种模型和算法。

2软件工程目标

付出较低开发成本,达到要求的功能,取得较好的性能,开发的软件易于移 植,只需较低的维护费用,能按时完成开发任务,及时交付使用,开发的软件可靠

性高。

3软件工程内客

研究内容包括开发技术和开发管理两个方面。开发技术主要研究软件开发方 法,开发过程,开发工具和环境。开发管理主要研充软件管理学,软件经济学,软

件心理学。

4软件工程需要解的问题

软件的费用,可靠性,可维护性,软件生产率和软件的重用。

5软件开发方法

使用早已定义好的技术集及符号表示习惯来组织软件生产∞过程。软件开发方 法是克服软件危机∞重要方面之一。

6软件开发的目标

通过使用成功的软件开发方法,在规定人投资和时间内,开发出符合用户需求 的高质量的软件。

推荐第3篇:《软件工程》

《软件工程》课程分析

本课程是软件技术专业学生必修的一门专业必修课。根据培养软件开发人员的需要,本课程的任务是使学生通过本课程的学习,了解软件项目开发和维护的一般过程,掌握软件开发的传统方法和最新方法。能在软件工程的理论指导下,开发一个小型管理系统,为今后从事软件工程实践打下良好的基础。

一、课程分析

(一)教学计划的制定和教学内容的选取

根据培养应用技能型人才的总目标,制订本专业教学计划,课程的教材配套,教学、实验、实训、课程设计大纲和指导书等教学文件齐全,近几年来引入了现代教学技术手段,已初步建设、形成了具有特色的全套课堂教学和实验教学课件。

根据该课程的基本教学要求和特点,结合学时的安排,从教材的整体内容出发,有侧重地进行取舍,筛选出学生必须掌握的基本教学内容,较好地解决了教学中质量与数量的矛盾。

(二)教学方法分析

由于该课程是用于指导软件开发的,和实践联系非常紧密。所以采用了理论联系实际的方法进行授课。一方面,让学生模拟软件公司的项目小组进行软件开发;一方面,对学生进行适时的理论指导。既调动了学生的积极性,又让学生了解了该课程的理论内容,收到了一举两得的效果。具体教学过程如下:

第一步:模拟软件公司的开发项目小组,分组,分设角色(项目经理、用户、需求人员、设计人员、程序员、测试人员、软件安装培训维护人员),确定开发题。让每个小组的学生聚在一起,在项目经理的组织下通过调研、讨论来制定自己小组的开发题目,大家感觉就象在软件公司实习一样,非常新鲜,感兴趣。每个学生都积极主动的去完成自己应承担的那部分工作。

第二步:模拟软件项目开发全过程的各个阶段,进行相关的理论授课和实际开发。即对软件开发的每一阶段,首先按照教材内容进行理论授课,然后让学生参照授课内容进行实际的软件开发实践。

在此阶段结束后,每班召开一个模拟方案论证会,由各开发小组选出代表上台讲解本组的开发方案,其他同学模拟用户对开发方案提出意见。 由于大家对模拟方案论证会非常感兴趣,发言积极踊跃,论证会结束后,每个小组的设计方案都得到了很好的补充和完善。

第三步:学期末各小组提交各自完成的软件系统及开发文档,并进行总结演示,由任课教师进行讲评。

抽象理论课的教学应理论联系实际,让学生在实际应用中掌握抽象的理论,在兴趣中学习,达到我们高职的双向型培养目标。

二、存在的问题与希望

在上述的教学中,虽然实现了理论联系实际,但也存在着一些问题,比如每个项目小组中总有个别同学存在依赖心理,不参与项目开发,最后抄袭别的同学的项目成果,自己得不到实际的锻炼,影响了大三的毕业设计和日后的软件开发。另外,如果该课程只上课,没有实训的话,实验课时太少,学生很难全面完成一个系统的开发。

推荐第4篇:软件工程

1.

软件工程:是指导计算机软件开发和维护的工程学科

2.

软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题

3.

软件过程:是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤

4.

软件生命周期:是指从软件定义、开发、使用、信息”。此外,系统还应该具有“定时取样生理信号”、“更新日志”和“产生病情报告”的功能。为了分析病人生理信号是否超出了医生规定的安全范围,应该存储“患者安全范围”信息。此外,定时记录病人生理信号所形成的“患者日志”,显然也是一个数据存 储。

23.

软件危机有那些典型表现?

(1)央一个索引号)。

针对若干个不同的NAME重复执行上述命令序列。

⑫测试系统非正常操作的测试数据 ①用过长的关键字作为命令b的参数:例如,b(reliability software and hardware combined)

预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能性被截预期的输出:X=1,Y=20,Z=3 ④ 3个判定表达式依次为假、真、真 输入:A=1,B=40,C=60 预期的输出:X=1,Y=20,Z=30 ⑤ 3个判定表达式依次为真、假、假 输入:A=20,B=1,C=1 预期的输出:X=10,Y=2,Z=3 ⑥ 3个判定表达式依次为真、假、真 输入:A=20,B=1,C=60 对软件开发成本和进度的估计常常很不准确。 维护到淘汰的全过程

5.

软件工程环境:方法与工具的结合,加上配套的软、硬件支持称为软件工程环境

6.

模块:是数据说明、可执行语句等程序对象的集合

7.

模块化:是按规定的原则将一个大型软件分为一个个较小的、相对独立但又相关的模块

8.

耦合:是对一个软件结构内不同模块之间互连程度的度量

9.

内聚:标志着一个模块内各个元素彼此结合的紧密程度

10.

结构程序设计:如果一个程序的代码块只有一个入口和一个出口,则称这个程序是结构化的

11.实现:通常指编码和测试

12.

软件可靠性:是指程序在给定的时间间隔内,按照规格说明书的规定成功地运行地概率

13.集成测试:是测试和组装软件的系统化技术 14.

软件维护:是指软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程

15.

对象:在应用领域中有意义的、与所解决的问题有关系的任何事物

16.

对象模型:表示静态的、结构化的系统的“数据”性质

17.功能模型:表示变化的系统的“功能”性质 18.

面向对象分析:就是抽取和整理用户需求并建立问题域精确模型的过程

19.

重用:是指同一事物不作修改或者稍加改动就多次重复使用

20.

可行性分析包括:技术可行性、经济可行性、操作可行性

21.

北京某高校可用的电话号码有以下几类:校内电话号码由 4 位数字组成„„定义上述电话号码

电话号码=[校内电话号码|校外电话号码]

校内电话号码=非零数字+ 3 位数字 //后面继续定义 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8 位数字

外地号码=数字零+3 位数字+8 位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0

3 位数字=3{数字}3//3 至 3 个数字 8 位数字=非零数字+7 位数字 7 位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9]

22.

目前住院的病人主要由护士护理,这样做不仅需要大量护士„„写出问题定义,分析可行性 从问题陈述可知,本系统数据源点是“病人”和“护士”,他们分别提供生理信号和要求病情报告的信息。进一步分析问题陈述,从系统应该“定时记录病人情况以形成患者日志”这项要求可以想到,还应该有一个提供日期和时间信息的“时钟”作为数据源点。从问题陈述容易看出,本系统的数据终点是接收警告信息和病情报告的护士。系统对病人生理信号的处理功能主要是“接收信号”、“分析信号”和“产生警告

(2)用户对“已完成的”软件系统不满意的现象经常

发生。

(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例

逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算

机应用迅速普及深入的趋势

25.

银行计算机存储系统的工作过程大致如下:„„请用数据流图描绘本系统的功能,并用实体—联系图描绘系统中的数据对象 26.

复印机的工作过程大致如下:未接到复印命令时处于闲置状态„„请用状态转换图描绘复印机的行为

27.用面向数据流的方法设计下列系统的软件结构

(1)机票预定系统(2)患者监护系统 28.

耦合包括数据耦合、控制耦合、公共环境耦合、内容耦合

29.

内聚包括功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚

30.

美国某大学有200名教师,校方与教师工会刚刚签订一项协议。按照协议„„

31.

画出下列伪代码的流程图,计算它的环形复杂度

32.

某图书馆有一个使用CET

终端的信息检索系统,该系统有下列4个基本检索命令:

(1)设计测试数据以全面系统的正常操作

(2)设计测试数据以测试系统的非正常操作

解:⑪测试系统正常操作的测试数据 ①顺序执行下列3个命令:b(KEYWORD)s(L)d(N)

其中KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个(至少应该使L分别为第一个、最后一个和中央一个行号);N是执行命令s后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。

针对若干个不同的KEYWORD重复执行上述命令序列。

②顺序执行下列2个命令:f(NAME)d(N)

其中,NAME是已知的作者姓名;N是执行命令f后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中

短为reliability software

②用不正确的关键字作为命令b的参数:例如,b(AARDVARK)

预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示 1.AARON,JULES(book) ③用比执行命令b后列出的最大行号大1的数作为命令s的参数

预期的输出:“命令s的参数不在行号列表中”

④用数字和标点符号作为命令b和命令f的参数

预期的输出:“参数类型错”

⑤用字母字符作为命令s和命令d的参数 预期的输出:“参数类型错”

⑥用0和负数作为命令s和命令d的参数 预期的输出:“参数数值错” ⑦命令顺序错:例如,没执行命令b就执行命令s,或没执行命令s就执行命令d 预期的输出:“命令顺序错”

⑧命令语法错:例如,遗漏命令名b、s、d或f;或命令参数没用圆括号括起来 预期的输出:“命令语法错” ⑨命令参数空:例如,b()、s()、d或f()

预期的输出:系统提供默认参数或给出出错信息

⑩使用拼错了的作者姓名作为f的参数 预期的输出:“找不到这们作者的著作”

33.(2)答:经验表明,在类似的程序中,单位长度

里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常

0.5X10-2≤ ET/IT ≤2X10-2

也就是说,在测试之前每1000条指令中大约有5~20个错误。

假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为

5000X10/1000=50(个) (3)① 使3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 使3个判定表达式之值全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 ① 3个判定表达式之值全为假 输入:A=1,B=1,C=1 预期的输出:X=1,Y=2,Z=3 ② 3个判定表达式依次为假、假、真 输入:A=1,B=1,C=60 预期的输出:X=1,Y=2,Z=30 ③ 3个判定表达式依次为假、真、假 输入:A=1,B=40,C=1

预期的输出:X=10,Y=2,Z=30 ⑦ 3个判定表达式依次为真、真、假 输入:A=20,B=40,C=1 预期的输出:X=10,Y=20,Z=3 ⑧ 3个判定表达式全为真 输入:A=20,B=40,C=60 预期的输出:X=10,Y=20,Z=30 34.

软件的可维护性与哪些因素有关:软件的可理解性、可测试性、可修改性、文档描述符合要求、用户文档简洁明确、系统文档完整并且标准

35.

面向对象方法是一种运用对象、类、继承、封装、聚合、消息、多态等概念来构造系统的软件开发方法。

面向对象方法的优点是:符合人们习惯的思维方式、稳定性好、可重用性好、可维护性好、容易开发大型的软件产品

推荐第5篇:软件工程

2.2软件开发的基本策略

人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。

2.2.1复用

复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。

复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。

把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了” 。

将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。

软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。

2.2.2分而治之

分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?

图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。

2.2.3优化——折衷

软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。

著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。

就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。

软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。

软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。

人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。

下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。

问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?

解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。

2.3一些不正确的观念

本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。

观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。

客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。

观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。

客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。

观念之三:如果我们落后于计划,可以增加更多的程序员来解决。

客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。

观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。

客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。

2.4一些有争议的观念

本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。

争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?

作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。

类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。

争议之二:有最好的软件工程方法,最好的编程语言吗?

作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今

的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。

程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。

争议之三:编程时是否应该多使用技巧?

作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。

《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。

争议之四:软件中的错误是否可按严重程度分等级?

作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。

一级严重:错误导致软件崩溃。

二级严重:错误导致一个特性不能运行并且没有替代方案。

三级严重:错误导致一个特性不能运行但有替代方案。

四级严重:错误是表面化的或是微小的。

表1.1 错误的四个等级

上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。

开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。

2.5小

软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些

思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。

3程序员与程序经理

工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。

我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”

不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:

(1)项目经理对软件一无所知;

(2)技术负责人对编程不感兴趣;

(3)真真编写代码的程序员是临时雇用的。

如果上述三个条件同时具备,就请放心失败好了。

让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。

3.1了解程序员

早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。

推荐第6篇:软件工程

1.软件危机的概念 系统的数据要求,功能需求,性能需求,显示出程序的轮廓。

软件危机是指在计算机软件开发、使用与可靠性需求,可用性需求,出错处理需求,混合方式

维护过程中遇到的一系列严重问题和难接口需求,约束,逆向需求以及将来可能优点:综合了以上两种策略的长处 题。 提出的需求。 9.确认测试

补充: 5.常使用的图形工具 确认测试又称有效性测试。有效性测试是

1.软件危机的表现有哪些? 实体-联系图,数据流图,状态转换图,在模拟的环境下,运用黑盒测试的方法,答:1)对软件开发成本和进度的估计常层次方框图,warnier图,IPO图。 验证被测软件是否满足需求规格说明书常很不准确。 第五章 列出的需求。任务是验证软件的功能和性

2)用户对已完成的软件不满意1.总体设计的任务 能及其他特性是否与用户的要求一致。对的现象时有发生。 划分出组成系统的物理元素——程序、文软件的功能和性能要求在软件需求规格

3)软件产品的质量往往是靠不件、数据库、人工过程和文档等等 说明书中已经明确规定,它包含的信息就住的。 设计软件的结构。也就是要确定系统中每是软件确认测试的基础。

4)软件常常是不可维护的。 个程序是由哪些模块组成的,以及这些模10.什么是白盒测试,其测试技术有那些,

5)软件通常没有适当的文档资块相互间的关系。 覆盖标准的强弱程度

料。 2.模块化思想 白盒测试是一种测试用例设计方法,盒子

6)软件成本在计算机系统总成就是把程序划分成独立命名且可独立访指的是被测试的软件,白盒指的是盒子是本中所占比例逐年上升。 问的模块,每个模块完成一个子功能,把可视的,你清楚盒子内部的东西以及里面

7)软件开发生产率提高的速度这些模块集成起来构成一个整体,可以完是如何运作的。\"白盒\"法全面了解程序内远跟不上日益增长的软件需求。 成指定的功能满足用户的需求。 部逻辑结构、对所有逻辑路径进行测试。

2.产生软件危机的原因主要有哪些? 3.衡量模块独立的标准( 内聚和耦合的白盒测试的测试方法有代码检查法、静态答:1)用户对软件需求的描述不精确。 含义,种类) 结构分析法、静态质量度量法、逻辑覆盖

2)软件开发人员对用户需求的内聚:标志着每一个模块内各个元素彼此法、基本路径测试法、域测试、符号测试、理解有偏差。 结合的紧密程度,是信息隐藏和局部化概路径覆盖和程序变异。

3)缺乏处理大型软件项目的经念的自然拓展。偶然内聚,逻辑内聚,时种覆盖标准:语句覆盖、判定覆盖、条件验。 间内聚,功能内聚,顺序内聚,通信内聚,覆盖、判定/条件覆盖、条件组合覆盖和

4)开发大型软件易产生疏漏和过程内聚。 路径覆盖发现错误的能力呈由弱至强的错误。 耦合:是对一个软件结构内不同模块之间变化。

5)缺乏有力的方法学的指导和互连程度的度量。数据耦合,控制耦合,11.什么时候黑盒测试,其测试技术有哪有效的开发工具的支持。 特征耦合,公共环境耦合,内容耦合。 些,(等价划分,边介值分析法)

6)面对日益增长的软件需求,4.启发式规则 黑盒测试也称功能测试,它是通过测试来人们显得力不从心。 1.改进软件结构提高模块的独立性检测每个功能是否都能正常使用。

2软件的概念 2.模块规模应该适中等价类划分的办法是把程序的输入域划完成特点功能的程序以及数据结构和文 3.深度、宽度、扇出和扇入都应适当 分成若干部分(子集),然后从每个部分档 4.模块的作用范围应在控制范围之内中选取少数代表性数据作为测试用例

3.软件工程的基本原理 5.力争降低模块接口的复杂程度 边界值分析是通过选择等价类边界的测

1.用分阶段的生命周期计划严格管理 6.设计单入口单出口的模块试用例。边界值分析法不仅重视输入条件

2.坚持进行阶段评审 7.模块功能应该可以预测 边界,而且也必须考虑输出域边界。它是

3.实行严格的产品控制 5.面向数据流的设计方法把信息流映射对等价类划分方法的补充。

4.采用现代程序设计技术 成软件结构 12.软件调试技术有哪些

5.结果应能清楚地审查 信息流:变换流,事物流 蛮干法,蛮干法可能是寻找软件错误原因

6.开发小组的人员应该少而精 映射:变换分析,事物分析 的最低效的方法,仅当所有其他方法都

7.承认不断改进软件工程实践的必要性失败的情况下才使用。

4软件生命周期分成哪几个阶段?各阶第六章 回溯法,回溯法是一种相当常用的调试方段的任务是什么? 1.详细设计的基本任务 法,当调试小程序时很有效。从发现症

1.问题定义: 1.为每个模块确定采用的算法。2.确定状的地方开始,人工沿程序的控制流往回

2.可行性研究:研究问题的范围,探索这每一模块使用的数据结构追踪分析源程序代码,知道找出错误原因个问题是否值得去解决,是否有可行的解3.确定模块接口的细节,包括对系统外为止。

决方法。 部的接口和用户界面,对系统内部其 原因排除法,对分查找法、归纳法、演绎

3.需求分析:主要是确定目标系统必须具它模块的接口,以及关于模块输入数据、法都属于原因排除法。

备哪些功能 输出数据及局部数据的全部细节。13.软件可靠性(可靠性和可用性的含义)

4.总体设计: 4.为每一模块设计出一组测试用例。

5.详细设计:就是把解法具体化,设计出2.程序的三种基本结构

程序的详细规格说明。 顺序结构,选择结构,循环结构

6.编码和单元测试:写出正确的容易理解3.详细设计的工具

容易维护的程序模块。 1.图形工具

7.综合测试:通过各种类型的测试使软件2.表格工具

达到预定的要求 3.语言工具

8.软件维护:通过各种必要的维护活动使4.jackson方法

系统持久地满足用户的需要。(改正性维5.复杂性度量的方法

护,适应性维护,完善性维护,预防性维Halstead方法:它根据程序中运算符和

护) 操作数的总数来度量程序的复杂程度

5.瀑布模型,快速原型模型,增量模型,McCabe方法 :McCabe方法根据程序控制

螺旋模型的特点 流的复杂程度定量度量程序的复杂程度,

瀑布模型阶:段时间具有顺序性和依赖第七章

性。推迟现实的观点。质量保证的观点。 1.选择程序设计语言应考虑哪些因素

快速原型模型:软件产品的开发基本上是1.系统用户的要求

线性顺序进行的,本质是“快速”加速软2.可以使用的编译程序

件的开发过程,节约软件开发成本。3.可以得到的软件工具

增量模型:能在较短时间内向用户提交可4.工程规模

完成部分工作的产品。逐步增加产品功5.程序员的知识

能,可以使用户有较充裕的时间学习和适6.软件可移植性要求

应新产品,从而减少一个全新的软件可能7.软件的应用领域

给客户组织带来的冲击。 2.良好的编程风格包括哪些方面

螺旋模型:对可选方案和约束条件的强调1.程序内部的文档2.数据说明 3.语句构

有利于已有软件的重用,也有助于把软件造4.输入输出 5.效率

质量作为软件开发的一个重要目标。减少3软件测试的目标

了过多的测试或测试不足带来的风险。更目的:(1)测试是为了发现程序中的错误

重要的是在螺旋模型中维护只是模型的而执行程序的过程;

另一个周期,在维护和开发之间并没有本(2)好的测试方案是极可能发现迄今为

质区别。风险驱动的。 止尚未发现的错误的测试方案;

(3)成功的测试是发现了至今为止尚未

第二章 发现的错误的测试。

1.可行性研究的目的 定义:为了发现程序中的错误而执行程序

就是用最小的代价在尽可能短的时间内的过程。

确定问题是否能够解决。 补充:

补充: 软件测试步骤 :

可行性研究的步骤 :(1)模块测试(2)子系统测试(3)系统

1.复查系统规模和目标。测试(4)验收测试(5)平行运行

2.研究现有的系统。4.确定测试计划是在哪个阶段制定的

3.导出新系统高层逻辑模型。5.黑盒测试和白盒测试的概念

4.进一步定义问题黑盒测试

5.导出和评价供选择的解法。1把程序看作一个黑盒子,完全不考虑程

6.推荐行动方针序的内部结构和处理过程

7.草拟开发计划2对程序接口进行测试,检查程序功能是

8.书写文档提交审查 否能按规格说明书的规定正常使用;

程序是否能适当地接受输入数据并产生

2.系统流程图的作用 正确的输出信息;

系统流程图是描绘物理系统的传统工具,程序运行过程中能否保持外部信息的完

它用图形符号来表示系统中的各个部件。整性

它表达了系统中各个元素之间的信息流白盒测试

动的情况。 1把程序堪称装在一个透明的白盒子里,

3.数据流图的概念 测试者完全知道程序的结构处理算法

数据流图是一种图形化技术,它描绘信息2按照程序内部的逻辑测试程序,检测程

流和数据从移动到输出的过程中所经受序中的主要执行通路是否都能按

的变换。 预定要求正确工作

4.数据流图里面的符号,画数据流图。6.测试的步骤及每个步骤形成的文档

5.数据字典最基本的功能,以及与数据流单元测试:(模块测试)发现的往往是编

图的关系。 码和详细设计的错误

最基本的功能:在软件分析和设计的过程集成测试:着重测试模块的接口 中给人提供关于数据的描述信息。

关系:数据流图和数据字典共同构成系统系统测试:发现的往往是软件设计中的错的逻辑模型,没有数据字典,数据流图就误,也可能发现需要说明中的错误 不严格,然而没有数据流图,数据字典也验收测试:(确认测试)往往发现需求说难于发挥作用。只有数据流图和对数据流明书中的错误 图中每个元素的精确定义放在一起,才能7.渐增式和非渐增式的区别 共同构成系统的规格说明。 “非渐增式”,即先独立地测试每一模块,第三章 然后将所有这些模块连接到一起运行; 1.需求分析属于哪一个阶段,任务是什“渐增式”,即在已测试过的N个模块的么。 基础上再增加一个模块,再对N十1个模需求分析是软件定义时期的最后一个阶块进行测试。 段.渐增式比非渐增式优越,因为用渐增式,1.确定对系统的综合要求(功能需求,性如果是“由顶向下”则可利用前面已测试能需求,可靠性和可用性需求,出错处理过的模块,而不必另外准备驱动模块,如需求,接口需求,约束,逆向需求,将来果是“由底向上”,也可利用已测试过的可能提出的要求)模块,不必再准备桩模块。渐增式可以较2.分析系统的数据要求早地发现模块界面之间的错误,有利于排3.导出系统的逻辑模型 错,检查比较彻底 4.修正系统开发计划2.需求分析的产品是什么 8.自顶向下,自下而上,以及混合策略的3.面向过程的分析方法主要是建立三类优缺点 模型 自顶向下数据模型(按照用户的观点对数据建立的优点:能较早显示整个程序的轮廓,向用模型,把用户的数据要求清楚,准确地描户展示程序的概貌,取得用户的理解与支述出来。描述了从用户角度看到的数据,持。 缺点:当测试上层模块时因使用桩它反应了用户的现实环境,属性,联系),模块较多,很难模拟出真实模块的全部功功能模型,行为模型(通过描绘系统的状能,使部分测试内容被迫推迟,只能等待态及引起系统状态转换的事件来表示系换上真实模块后再补充测试。统的行为) 由底向上4.软件需求规格说明书的内容 优点:测试从下层模块开始,测试设计用通常用自然语言完整,准确,具体地描述例比较容易。 缺点:在测试的早期不能

推荐第7篇:软件工程

软件工程

1.谈谈你对软件工具的理解,你用过什么软件工具

软件工具是指为支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。它是为专门目的而开发的,在软件工程范围内也就是为实现软件生存期中的各种处理活动(包括管理、开发和维护)的自动化和半自动化面开发的程序系统。

开发软件工具的最终目的是为了提高软件生产率和改善软件的质量。

软件工具分为六类:模拟工具、开发工具、测试和评估工具、运行和维护工具、性能质量工具和程序设计支持工具。

应该是看对象来选择测试工具!比如:

功能测试工具:WinRunner

性能测试工具:LoadRunner

内存泄漏测试工具:Purify

单元测试工具:Junit

测试管理工具:TestDirector还有东软的bugbaseIBM开发的 rational。

2.什么是软件的可维护性:

软件可维护性即维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。

决定可维护性的因素:

1.系统的大小

2.系统的年龄

3.结构合理性

可维护性的度量:

可理解性

可测试性

可修改性

可移植性

3.软件开发和写程序有什么不同?软件开发的内容是:需求、设计、编程和 测试 维护!

需求分析

软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。

设计

软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。

编码

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的\"源程序清单\"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。

测试

软件测试的目的是以较小的代价发现尽可能多的错误。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。黑盒法。

维护

维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。

4.什么是软件设计的”高内聚 低耦合”

内聚:一个模块内各个元素彼此结合的紧密程度

耦合:一个软件结构内不同模块之间互连程度的度量

对于低耦合,(模块的独立性)

一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合.

对于高内聚:

在一个模块内,让每个元素之间都尽可能的紧密相连。也就是充分利用每一个元素的功能,各施所能,以最终实现某个功能。

5.case在软件工程中的作用

CASE(Computer Aided(or Aisted)Software Engineering计算机辅助软件工程。CASE的一个基本思想就是提供一组能够自动覆盖软件开发生命周期各个阶段的集成的、减少劳动力的工具。CASE已被证明可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品质。CASE工具由许多部分组成,一般我们按软件开发的不同阶段分为上层CASE和下层CASE产品。上层或前端CASE工具自动进行应用的计划、设计和分析,帮助用户定义需求,产生需求说明,并可完成与应用开发相关的所有计划工作。下层或后端CASE工具自动进行应用系统的编程、测试和维护工作。

除非下层CASE和上层CASE工具的供应商提供统一界面,否则用户必须编写或重新将所有信息从上层CASE工具转换到下层CASE工具。独立的CASE工具供应商愈来愈希望将它们的工具连接在一起建立统一的界面以减少用户不必要的开发工作。

CASE工具带来的好处

计算机专业人员利用计算机使他们的企业提高了效率,企业的各个部门通过使用计算机

提高了生产率和效率,增强了企业的竞争力并使之带来了更多的利润。

6.为什么要进行软件测试?常用的软件测试的方法有哪些?

软件测试的目的:尽可能发现并改正被测试软件中的错误,提高软件的可靠性。

软件测试方法主要包括单元测试,集成测试,系统测试,用户测试,回归测试。

还有就是自定而下,和自下而上的方法。

7.谈谈你对保证软件质量的技术和方法的认识? 1.作为一个软件质量保证人员需要良好的沟通能力,因为如果没有良好的沟通能力,很多问题都没有办法解决,原因很简单,测试人员发现了bug,开发人员或项目经理在怎么不理,但是他们都会想到,万一测试人员发现了bug而自己忽视了,那么就有可能成为软件里的一颗不定时地炸弹,那么作为一个开发人员或项目经理对bug的重视程度肯定相对比较高,至少要看测试人员发现的bug ,但是QA就不一定了,因为QA保证的流程的正确的执行,相关人员就是认为流程不重要,只要我开发的产品没有问题那就没有问题,客户肯定不会关注我的流程,在加上古人的名言“结果说明了一切”,所以没有良好的沟通能力,一些问题将很难去解决,做起来就没有成就感。

2.个人感觉比沟通能力更重要的是,坚持原则,在遇到困难的时候,是不是还能坚持原则,在遇到项目组的种种不理不睬的时候,是不是还能坚持原则,在项目组不按照计划走的时候,是不是还能坚持原则。

3.个人心态,我工作三年的经历告诉我,如果开发和测试相比,开发是天堂,测试是地狱的话,但如果测试和QA相比的话,那测试就是天堂,QA就是地狱,所以心态很重要,在三年里我就锻炼成一个非常好的心态,随便怎么说CMMI没用,随便怎么说CMMI就是写文档,随便怎么说QA真烦人,我笑容依然灿烂,从容面对,而且一个QA要有坚定的信念,如果你都不相信过程能给项目开发带来好处,那你还指望谁能相信。

8.提高软件生产率有哪些手段?

1.挑选精干人员 (管理 计划不好 技术搭配不当)

2.提高阶段效率 3消除人工阶段

4.减少重复劳动 5.建造简单产品

6.重用软部件库(已经存在的软件功能部件

9.什么是软件的可靠性和有用性

可靠性就是指软件运行的稳定性,可用性就是操作的便利性。比如一辆汽车,可靠性好应该归功于机械部分,可用性好则是内饰和中控系统的功劳。

10什么是软件规格说明?作用是什么?将其形式化的意义是什么?

11.什么是软件重用?实现软件重用的方法有哪些?

软件重用,是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。通常,可重用的元素也称作软构件,可重用的软构件越大,重用的粒度越大。

根据软件开发的不同阶段实现软件重用主要有四个途径:

抽象:对重用对象概括提炼, 从而得到能全面描述侧重算法和数据结构的软件构件的各部分的描述。

选择:是对重用对象进行存放,匹配和检索的功能。

实例化:对数据类型中对象进行参数的提供 转换。

集成:

12.什么是软件移植?你认为构造一个工具实现windows到Unix的移植有意义吗?难大不? 软件可移植性是指代码可以在不同平台间移植,我们一般说的软件的可移植性指的是软件可移植性,简单的说就是指源代码移到不同的平台下(不同的操作系统,例如从Windows

下移到Linux下)时,需要修改的内容越少,移植性越好。要保证软件可移植性,就是少用或不用系统特有的东西,比如你用C语言编程,你可以使用C语言本身的库,但不要用

WindowsAPI函数,因为WindowsAPI函数在Linux下是没有的,如果想移植到Linux平台下,使用WindowsAPI函数的部分代码就要做出修改了。

推荐第8篇:软件工程

球经济一体化进程加速,虽然金融危机爆发,但中国市场对于外企来说显示是个比较好的避风港。而伴随着外企的进入和市场竞争的加剧势必将进一步带动国内软件市场的繁荣。随着外企的进入,缺乏软件系统理念指导的传统企业将面临严峻的挑战。他们弥补缺陷的唯一出路就是引进人才,实现自我改造,向管理要效益也成了目前国内许多大中型企业的共识。现在中国政府正在大力支持中国软件行业的发展,经过了系统化体系培训的软件人才更容易走向国际化,也更受国内大中型规模软件公司的欢迎(2009软件工程师的待遇城市之间差异比较大,一级城市初-高级软件工程师的待遇在4000-9000之间;内地其他省会城市一般在2000-6000之间。国外软件工程师绝对不是青春饭,但在中国情况不一样。如果一直走技术路线而且一直在国内民营企业做,那么基本上就是青春饭了。如果能够从技术转管理或者转咨询那就当然不是了,尤其是在跨国公司有过项目管理经验的话还是很吃香的。

目前我国的软件行业规模不是很大,有些软件企业在软件制作上,也只是采用了一些软件工程的思想,距离大规模的工业化大生产比较还是有一定的差距;原因有管理体制的问题,市场问题,政策问题,也有软件工程理论不全面和不完善的问题。所以软件工程的研究和应用,以及我国软件行业的进一步发展,都需要一定的既有软件工程的理论基础和研究能力,又有一定的实践经验的软件工程科学技术人员来推动。

软件工程人才的就业前景十分看好。未来几年,国内外高层次软件人才将供不应求。毕业生主要在各大软件公司、企事业单位、高等院校、各大研究所、国防等重要部门从事软件设计、开发、应用与研究工作。有数据表明,我国软件出口规模达到215亿元,软件从业人员达到72万人,在中国十大IT职场人气职位中,软件工程师位列第一位,软件工程人才的就业前景十分乐观。

信息化是IT界的焦点。而信息化的实现,除了需要技术支持,人才也是很重要的环节。如何培养与国际接轨的高素质软件工程人才,已经成为中国软件产业的当务之急。

软件产业的发展水平,决定了一个国家的信息产业发展水平及其在国际市场上的综合竞争力。目前,我国软件高级人才的短缺已经成为制约我国软件产业快速发展的一个瓶颈。在中国,国内市场对软件人才的需求每年高达80万人,而院校毕业生中的软件工程人才还很缺乏,尤其是高素质的软件工程人才的极度短缺。尽快培养起适合信息产业所需要的高素质软件工程人才,已经成为信息化工作中的重中之重。

推荐第9篇:软件工程

软件工程—心得体会

摘要

本文结合基层实践教学的实际情况和现实需要,系统地总结了《软件工程》实践教学的特征,详细分析了实践教学过程存在的问题,并提出了该课程实践教学改革的新格式。

关键字:软件工程,教学素质,软件开发,实践,实验

正文

通过这学期的“软件工程”这门课,我拓宽了知识面,锻炼了能力,综合素质得到较大的提高。我觉得在大四安排这门课的学习,其主要目的,在于在课堂中学到的理论知识与实际的结合,尤其是观察、分析、解决问题的实际工作能力。软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在1968年第一次提出了软件工程的概念,至今软件工程已经走过了30多年的历程。在不断发展的过程中,人类越来越加注重在软件的开发中应该按工程化的方法进行开发,并注重进行软件项目工程的管理。在现代社会中,软件应用于多个方面,典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等,这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

中国的软件行业规模不是很大,有些软件公司在软件制作上,也只是采用了一些软件工程的思想,与大规模的工业化大生产比较还是有一定的差距,原因有管理体制的问题,市场问题,政策问题,也有软件工程理论不全面和不完善的问题。所以软件工程的研究和应用,以及中国软件行业的进一步发展,都需要一定的既有软件工程的理论基础和研究能力,又有一定的实践经验的软件工程技术人员来推动。软件工程的前途是光明的。软件服务外包属于智力人才密集型现代服务业。大量著名外包企业落户宁波。主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任程序员、软件测试员、项目经理等工作岗位

软件工程是计算机领域发展最快的学科分支之一,国家非常重视软件行业的发展,对软件人才的培养给予了非常优惠的政策。本专业培养掌握计算机软件基本理论知识,熟悉软件开发和管理技术、能够在计算机软件领域中从事软件设计、开发和管理的高级人才。软件工程的七条原理:用分阶段的生命周期计划严格管理、坚持进行阶段评审、实行严格的产品控制、采纳现代程序设计技术、结果应能清楚地审查、开发小组的人员应少而精、承认不断改进软件工程实践的必要性。根据这几条原理,不仅要积极采纳新的软件开发技术,还要注意不断总结经验,收集进度和消耗等数据,进行出错类型和问题报告统计。这些数据既可以用来评估新的 软件技术的效果,也可以用来指明必须着重注意的问题和应该优先进行研究的工具和技术。

推荐第10篇:软件工程

一、名词解释

软件: 指计算机系统中的程序及其文档。

支持软件:支持软件的开发和维护的软件。

系统软件:属于计算机系统中最靠近硬件的一层,其它软件一般都通过系统软件发挥作用,它与具体的应用领域无关。

软件工程:是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。

软件过程模型:是软件开发全部过程、活动和任务的结构框架,也称软件开发模型或软件生存周期模型。

技术可行性:主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。

需求管理:是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动。信息流:表示了数据和控制在系统中流动时的变化方式,输入对象被变换为中间信息(数据和/或控制),然后进一步被变换为输出。

软件项目管理:是指软件生存周期中软件管理者所进行的一系列活动,其目的是在一定的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成 。

软件度量:是指计算机软件范围内的测量,主要是为产品开发的软件过程和产品本身定义相关的测量方法和标度。

面向对象的多态性:是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。(也就是说,相同操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的这个操作去执行,从而产生不同的结果。 )

动态绑定:是指在程序运行时才将消息所请求的操作与实现该操作的方法连接起来 数据耦合:两个模块之间仅通过参数表传递简单数据,则称为数据耦合。

功能内聚 :指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联系,不可分割的。

二、简答

1.、克服软件危机的途径:

 消除错误的概念和做法

 推广使用成功的开发技术和方法

 使用软件工具和软件工程支持环境

 加强软件管理

2、计算机系统工程的任务:

 确定待开发软件的总体要求和范围,以及它与其它计算机系统元素之间的关系

 进行成本估算,做出进度安排

 进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。

3、软件过程三层含义:

① 个体含义,即指软件产品或系统在生存周期中的某一类活动的集合,如软件开发过

程,软件管理过程等;

② 整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;

③ 工程含义,即指解决软件过程的工程,它应用软件工程的原则、方法来构造软件过

程模型,并结合软件产品的具体要求进行实例化,以及在用户环境下的运作,以此进一步提高软件生产率,降低成本。

4、创建用况模型的步骤包括:

1) 定义系统

2) 确定执行者

3) 确定用况

4) 描述用况

5) 定义用况间的关系,

6) 确认模型

5、需求分析原则

① 必须能够表示和理解问题的信息域

② 必须能够定义软件将完成的功能

③ 必须能够表示软件的行为(作为外部事件的结果)

④ 必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

⑤ 分析过程应该从要素信息移向细节信息

6、需求验证目的是要检验需求是否能够反映用户的意愿

评审人员评审时往往需要检查以下内容:

① 系统定义的目标是否与用户的要求一致;

② 系统需求分析阶段提供的文档资料是否齐全;文档中的描述是否完整、清晰、准确

地反映了用户要求;

③ 被开发项目的数据流与数据结构是否确定且充足;

④ 主要功能是否已包括在规定的软件范围之内,是否都已充分说明;

⑤ 设计的约束条件或限制条件是否符合实际;

⑥ 开发的技术风险是什么;

⑦ 是否详细制定了检验标准,它们能否对系统定义是否成功进行确认。

三、选择填空

软件分类:系统软件、支持软件和应用软件。

软件按工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件。

软件按服务对象的范围划分:项目软件和产品软件 。

软件按使用的频度进行划分: 一次使用和频繁使用。

软件按失效的影响进行划分:高可靠性软件、一般可靠性软件

典型的软件过程模型有:瀑布模型、演化模型、增量模型、原型模型、螺旋模型、喷泉模型、基于构件的开发模型、形式方法模型。

技术可行性分析通常包括:风险分析、资源分析和技术分析。

软件需求工程细分为:需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。

需求跟踪两种方式:正向跟踪、逆向跟踪。

正向跟踪:以用户需求为切入点,检查《需求规约》中的每个需求是否都能在后继工作产品中找到对应点。

逆向跟踪:检查设计文档、代码、测试用况等工作产品是否都能在《需求规约》中找到出处。 软件设计:把软件需求变换成软件表示的过程。

软件设计的两个阶段:软件体系结构设计阶段和部件级设计 。

测试用例的设计方法大体可分为两类:白盒测试和黑盒测试,也称白箱测试和黑箱测试 一种测试策略就是将测试分为单元测试、集成测试、确认测试和系统测试。

测试类型:静态测试和动态测试。

软件的特点

 软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算  软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大

 软件的使用没有硬件那样的机械磨损和老化问题

为了使程序能在不同的计算机上运行:

1)要使程序具有较好的可移植性。

2)对程序段的设计具有功能性。

3)变量名的使用对提高编程效率没有影响。

可维护性关键在于:选择好的程序设计风格。

软件开发生命周期中的编程阶段任务:得到好的源程序代码。 软件特点:抽象性、复杂性、开发成本高。

第11篇:软件工程专业实习工作总结(材料)

工作总结,现在做任何一项工作,不管是个人也好,团队也好干工作都需要一种奉献精神和团结协作精神,要从细处着手,认真思考,反复操作、辛勤劳动才能完成。以下是小编给大家带来的几篇软件工程专业实习工作总结,供大家参考借鉴。

软件工程专业实习工作总结1

时间过的很快,转眼间已经实习将近5个月,其中有2个月是属于完全被流放的。

最先在内部系统组参与内部管理系统开发(struts+mysql+spring+hibernate),之后是去做网络交换机软件的脚本测试。现在又回归内部系统,虽然在脚本组期间,编码能力被别人甩在后头,但至少具有了一些测试经验。

至少自己做的东西,是真正交付到了客户手上,到也稍微有些成就感。

1、浅谈测试

一直以来,我都认为测试是脱离了软件工程范围的工作,不以为屑。但在实际情况中,测试是既重要且难以精湛的.其真正的压力,在于找不到bug,责任在你,而不在于编码人员。一般的测试人员不懂编码,他们靠的是日以累计的经验总结和想象力。而要做到高级测试工程师,则一定要懂编码,因为这是你完全掌握整个系统的方方面面具体运作的前提。但占主导地位的,还是大型系统的集成测试经验。实际项目中,编码时间一般只占30%左右,真正耗费时间的是IT阶段的找 bug与对应bug,此阶段基本评定了coder的编码质量。

2、程序员的困惑

有些人,以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那?如何定位?如何解决?通通跟一样能力有关,debug追踪能力,也称调试。在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化?

有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题。但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你。

3、如何调试追踪

如果你能在短短的时间内就看到问题点在那,放下断点去追踪,出去找工作,绝对没问题。出现问题的时候,不要光看代码,要用实际行动去追踪运行期间的具体值,那是最好途径。eclipse是个很爽的ide,这点做的很好。例如页面内容显示不是自己想要的数据,我们要先从数据库查询语句去下手,设置断点,一步一步step over,让sql字段(存取最终sql语句的字符串)运行到有值,inspect进去看,如果还看不出来,就点击它,copy后在sql客户端去实际运行,看看实际查询出来的表是什么,如果是对的,有可能就是页面调用的错误或者action逻辑的传值问题。

页面错误的调试,基本方法是用右键点击实际网页查看源代码,copy到editplus,就能看到具体错误发生在那几行。通常有几种常见的错误,例如:缺少对象这种很多时候是有些被你调用的字段有可能为空的情况出现的,可以加if(xxx=null)语句加保护。追踪的方法基本就是用alert语句,放在有可能出错的地方。

4、一些习惯

遇到问题先自己思考,无从下手再找高手帮忙看看,注意他帮你看的思路,别在一旁闲着,看多了自己也会了,不然你一辈子都停留在那种水平,从人身上学到的东西远远比书多的多。

解决了一个问题后,要去究根问底去找到问题产生的起因,以防你下次遇到类似的问题再浪费同样的时间。

把代码写的漂亮,注释、空行、规范一样不能少,可读性是放在第一位。曾经看过一个高手写的代码,真的一看就是不同水平的人写的,几乎很完美,读起来很流畅,方便自己也方便别人。

任务完后不要呆着,去要求经理给你更有挑战性的任务,只要你肯去尝试,他们就会对你另言相看,把三天的任务一天加班搞定,效率和忠诚都有了,路也比较好走了。

软件工程专业实习工作总结2

时间过得真快,转眼间,在山大实习生活就结束了。

四周的时间能够和山大的同学一起工作、学习、生活我感到非常的荣幸,同时也感觉到很大的压力,作为电子商务专业的学生从事软件开发感觉还是有一定的困难,特别是我们还是和山大大三的学生一起,在初来时自己就有一些不自信,但随着项目的进展,我慢慢的找到了自己的位置,找到自己的目标,虽然自己与好的同学还有差距,这也给了我很大压力,但是我相信没有压力就没有动力,所以整个实训过程中我都在不断地努力。

实训期间让我学到很多东西,不仅在理论上让我对it领域有了全新的认识,在实践能力上也得到了很大的提高,真正的学到了学以致用,更学到很多做人的道理,对我来说受益匪浅。特别是利用周六上午的时间山大为我们安排的讲座让我们了解it领域一些新的发展动态以及一些领先的技术,让我意识到自己知识的缺少,这激励我在以后的学习、工作、生活中要不断了解信息技术发展动态以及信息发展中出现的新的技术。

除此之外,我还学到了如何与人相处,如何和人跟好的交流,我们组成一个团队大家一起开发一个项目,大家的交流沟通显得尤为重要,如何将自己的想法清楚明白的告诉队友,如何提出自己想法的同时又不伤害其他的队友的面子,这些在我的实训生活中都有一些体会。可是说,第一次亲身体会理论与实际相结合,让我大开眼界。也是对以前学习的一个初审吧,相信这次实训多我以后的学习、工作也将会有很很大的影响,在短短的二十几天里这些宝贵的经验将会成为我以后工作的基石。

作为大二的学生,经过两年的在校学习,对程序设计有了一些基本的理性的认识和理解。在校期间一直忙于理论的学习,没有机会也没有经验来参与我们项目的开发,所以在实习之前软件按开发对我来说是非常抽象的,一个完整的项目要怎么来分工以及完成该项目所需要的基本步骤也不明确,经过这次实训让我明白一个完整项目的完成必须团队分工合作,并在每个阶段进行必要的总结和检查。

在我们项目的开发过程中我们项目的步骤:详细设计、详细设计review、编码、编码review、单体测试。在项目开发过程中我也深刻的体会到详细设计对一个项目开发有明确的指引作用,它可以使开发人员对这个项目所要实现的功能在总体上有具体的认识,并能减少在开发过程中出现不必要的脱节。

经过二十多天的obbligato信息安全管理的java开发,是我对java软件开发平台有了更深一步的了解,也对nec公司的obbligato平台有了一定的了解。

这次实训是对我们两年学习的一个检验,虽然项目中很多知识我们在日常的学习中都没有遇到,这同时提醒我:要想成为一个合格的程序员就有具备一种自学能力,在工作中会遇到很多从未接触过的问题,当有了问题时要去解决,在你不断努力,寻找答案的过程中,自己的能力也在潜移默化的提升。有时遇到问题时可能有很多想法但却不知道那个正确,这就让我们不断地去探索,不断地尝试。

这次实训也让我深刻的了解到,不管在工作中还是在生活中要和老师、同学保持良好的关系是很重要的。做事首先要先做人,要明白做人的道理,如何与人相处是现代社会的做认得一个最基本的问题,对已自己这样一个即将步入社会的人来说,需要学习的东西很多。

从一起做项目的同学身上我看到了谦虚谨慎、细心努力的态度,在以后我的生活中我还会留意身边同学的优点,从他们身上找寻我所缺少的品质,不断学习。从老师那里我看到了企业人的生活面貌,没有事情可以不劳而获,今天老师们能够领导我们是他们之前努力的结果,虽然老师没有和我们讲很多公司里的事情,可是他们的言行中所表现出来的都是比我们要严谨的多的对工作的态度。

在此次的实训中我感觉到我们最大的不足就是动手的能力太差,在项目组中山大的同学也给我提出一些建议,让我有机会自己多动手,不是我们缺乏知识,而是我们没有运用知识的能力,在二十多天的项目开发过程中,我自己也认识到虽然我们的理论知识没有山大同学那么全面,但是如果在学校认真学习了,我们的理论知识并不比他们差,所以以后的日子,如果自己还要继续从事软件开发相关工作,我会更加注重自己的动手能力。

再者,我们要有更好的学习心态,看到山大的很多同学会在晚上项目结束后再去教室上自习,深深地意识到我们的学习态度有多大的差距,原来在学校的时候我们九点基本就要从教室回宿舍了,而他们还会再继续利用九点以后的时间努力学习,虽然在山大就短短不到一个月的时间,可是我所体会到的对我以后的学习将会有很大的影响,我想在大三专升本复习的过程中,在山大的经历会让我更加有动力,更能坚定信念:坚持、努力。学习山大学生刻苦、勤奋的学习态度。

山大的实训已经成为过去,可是在山大学到的东西会一直影响我以后的发展,突然想起鲁迅先生的一句话:世上本没有路,走的人多了,便成路。生活的路也是人走出来的,每个人一生总要去很多陌生的地方,然后熟悉,然后再走向另一个陌生的地方。在不久的将来,就要踏上人生的另一段旅程,以后的路上有时不免会感到有些茫然、无助,但生活的路谁都无法预测,只能一步步摸索,但只要方向正确,只要我们向着目标不断努力,相信在不远的将来我们一定会有一片属于我们自己的天空。

软件工程专业实习工作总结3

转眼之间,2020年两个月的实习期即将结束,回顾这两个月的实习工作,感触很深,收获颇丰。这两个月,在领导和同事们的悉心关怀和指导下,通过我自身的不懈努力,我学到了人生难得的工作经验和社会见识。我将从以下几个方面总结计算机通信岗位工作实习这段时间自己体会和心得:

一、努力学习,理论结合实践,不断提高自身工作能力

在计算机通信岗位工作的实习过程中,我始终把学习作为获得新知识、掌握方法、提高能力、解决问题的一条重要途径和方法,切实做到用理论武装头脑、指导实践、推动工作。思想上积极进取,积极的把自己现有的知识用于社会实践中,在实践中也才能检验知识的有用性。在这两个月的实习工作中给我的感触就是:我们在学校学到了很多的理论知识,但很少用于社会实践中,这样理论和实践就大大的脱节了,以至于在以后的学习和生活中找不到方向,无法学以致用。同时,在工作中不断的学习也是弥补自己的不足的有效方式。信息时代,瞬息万变,社会在变化,人也在变化,所以你一天不学习,你就会落伍。通过这两个月的实习,并结合计算机通信岗位工作的实际情况,认真学习的计算机通信岗位工作各项政策制度、管理制度和工作条例,使工作中的困难有了最有力地解决武器。通过这些工作条例的学习使我进一步加深了对各项工作的理解,可以求真务实的开展各项工作。

二、围绕工作,突出重点,尽心尽力履行职责

在计算机通信岗位工作中我都本着认真负责的态度去对待每项工作。虽然开始由于经验不足和认识不够,觉得在计算机通信岗位工作中找不到事情做,不能得到锻炼的目的,但我迅速从自身出发寻找原因,和同事交流,认识到自己的不足,以至于迅速的转变自己的角色和工作定位。为使自己尽快熟悉工作,进入角色,我一方面抓紧时间查看相关资料,熟悉自己的工作职责,另一方面我虚心向领导、同事请教使自己对计算机通信岗位工作的情况有了一个比较系统、全面的认知和了解。根据计算机通信岗位工作的实际情况,结合自身的优势,把握工作

三、转变角色,以极大的热情投入到工作中

从大学校门跨入到计算机通信岗位工作岗位,一开始我难以适应角色的转变,不能发现问题,从而解决问题,认为没有多少事情可以做,我就有一点失望,开始的热情有点消退,完全找不到方向。但我还是尽量保持当初的那份热情,想干有用的事的态度,不断的做好一些杂事,同时也勇于协助同事做好各项工作,慢慢的就找到了自己的角色,明白自己该干什么,这就是一个热情的问题,只要我保持极大的热情,相信自己一定会得到认可,没有不会做,没有做不好,只有你愿不愿意做。转变自己的角色,从一位学生到一位工作人员的转变,不仅仅是角色的变化,更是思想观念的转变。

四、发扬团队精神,在完成本职工作的同时协同其他同事

在工作间能得到领导的充分信任,并在按时完成上级分配给我的各项工作的同时,还能积极主动地协助其他同事处理一些内务工作。个人的能力只有融入团队,才能实现的价值。实习期的工作,让我充分认识到团队精神的重要性。

团队的精髓是共同进步。没有共同进步,相互合作,团队如同一盘散沙。相互合作,团队就会齐心协力,成为一个强有力的集体。很多人经常把团队和工作团体混为一谈,其实两者之间存在本质上的区别。优秀的工作团体与团队一样,具有能够一起分享信息、观点和创意,共同决策以帮助每个成员能够更好地工作,同时强化个人工作标准的特点。但工作团体主要是把工作目标分解到个人,其本质上是注重个人目标和责任,工作团体目标只是个人目标的简单总和,工作团体的成员不会为超出自己义务范围的结果负责,也不会尝试那种因为多名成员共同工作而带来的增值效应。

五、存在的问题

几个月来,我虽然努力做了一些工作,但距离领导的要求还有不小差距,如理论水平、工作能力上还有待进一步提高,对计算机通信岗位工作岗位还不够熟悉等等,这些问题,我决心实习报告在今后的工作和学习中努力加以改进和解决,使自己更好地做好本职工作。

针对实习期工作存在的不足和问题,在以后的工作中我打算做好以下几点

1.做好实习期工作计划,继续加强对计算机通信岗位工作岗位各种制度和业务的学习,做到全面深入的了解各种制度和业务。

2.以实践带学习全方位提高自己的工作能力。在注重学习的同时狠抓实践,在实践中利用所学知识用知识指导实践全方位的提高自己的工作能力和工作水平。

3.踏实做好本职工作。在以后的工作和学习中,我将以更加积极的工作态度更加热情的工作作风把自己的本职工作做好。在工作中任劳任怨力争“没有只有更好”。

4.继续在做好本职工作的同时,为单位做一些力所能及的工作,为单位做出自己应有的贡献。

软件工程专业实习工作总结4

在半年的学习生活以来。我学会了很多,也懂得了很多从生活中没发获得到的知识和道理。回顾半年以来,从那天真的我直接到经历了生活中的挫折和失败,到现在稳重和冷静的我,使我明白了一个道理:人生不可能存在一帆风顺的事,只有自己勇敢地面对人生中的每一个挫折和失败,才能通往自己的罗马大道。在这半年里,我有失落过,烦恼过,悲伤过。有时觉得自己放手让时间在自己的手里流走,可能是或者我的缺陷和不足。但我知道这是上天对我的一个考验,但在每次失落的时候我都会反省过来,告诉自己清楚自己应该做的是什么,在挫折面前我們应该善用于扬长避短的方法来促进自己,提高自己的综合水平能力。在学习方面虽然自己普通平凡,但是我会努力提高,做到最好,不管遇到什么困扰我都不会跌倒,我会不懈努力。从以前学习情况中,我觉得自己更应该发奋学习。

我知道,在这又是我人生中的一大挑战,角色的转换,这除了有较强的适应力和乐观的生活态度外,更重要的是得益一年的学习积累和技能的培养。在这里我知道我的将来会有光辉灿烂的一天。

在半年的锻炼里,给我仅是初步的经验积累,对于迈向社会远远不够的,所以在学习生活除外,在假日我会积极参加社会各种实践活动,获取更多学习的经验和社会实践能力,我的未来不是梦,只要自己努力过,成功是不会拒绝你的。

因此,面对过去,我无怨无悔,面对现在,我努力拼搏,面对将来,我期待更多的挑战,战胜困难,抓住每一个机遇,相信自己一定会演绎出精彩的一幕。在今后的学习生活里,我会继续努力,做好社会主义的接班人,在生活上自觉从严要求自己,艰苦朴素,遵纪守法,作风正派,各方面表现良好。为社会主义现代化建设,贡献自己的力量。

销售助理工作总结相关文章:

1.销售助理岗位工作总结四篇

2.销售助理2019年终工作总结及2020年工作计划

3.销售助理年度个人工作总结范文

4.销售助理精选的工作总结

5.有关于销售助理年终工作总结

第12篇:09级软件工程1班10月工作总结

09级软件工程专业1班10月工作总结

一:班级篇

1:班纪的落实也实施

>1针对上个月在同学们中出现的纪律涣散的情况,几个班委积极配合组织召开了数次定期不定期班会,对纪律的问题做出了明确规定。希望同学们通过这几次班会做好自身总结并争取早日改掉纪律涣散的毛病,为我班的班级愿景建设做出自己的贡献。

>2 在接近两个月的学习生活与观察中,我们发现了部分班委出现了消极工作的现象,对班级工作漠不关心,交与的任务也不能按时按量完成。针对此种情况,班长团支书迅速向班主任反映了情况。并在课后对出现问题的班委进行了谈话。

2:级工作的落实

>1校方责任保险。校方责任保险是一项关系到全班同学切身利益的事情,当工作任务传达到班上的时候,本班组织委员第一时间将工作传达到了所有同学并很快完成了任务。

>2 火车票优惠卡办理。针对部分学生来自外地,火车票优惠卡的办理显得十分重要。次工作由本班生活委员负责。在宣传,报名,资料填写,收费过程中生活委员认真负责,不到规定时间就将任务很好地完成。

二:活动篇

1:辩论会

总结了上次辩论会和几次练习赛的经验,我班于10月18日晚9:10进行了第二次辩论赛。赛上队员们表现积极活跃,但也暴露了许多不足。尤其是紧张和不能抓住主题展开辩论。虽然最后胜利了,但也只是险胜。

2:团支部愿景建设活动

>1 响应校团委的号召,我班进行了第一次团支部愿景建设。建设过程中我们通过制作PPT的方式展现了我班特有的风采。

>2 本次活动中,全班同学积极参与。本次活动我们以小组的形式参与。共有英语学习小组,C语言学习小组,数学学习小组和思想政治小组。活动通过拍摄各小组工作开展的形式进行。活动取得了良好的效果。

3:团组织生活

>1这是我班进入大学以来的第一次团组织生活。本次活动以个人手机摄影并举办手机摄影展的形式进行,本次活动我们联合了软件2班一同举办。

>2活动中,同学们通过自己的手机记录下了在学校生活中的点点滴滴发现了学校中许多不为人知的美好一面。本次活动摄影展于周五下午在三教大厅成功举办。班上同学悉数到场参加,学生会及分团委也派人来参观对我班本次活动作出了肯定。

4:班级志愿者活动

>1 在做好了充分的策划和准备中,我班于10月25日上午按计划进行了本次义务为80路和97路公交车做清洁工作的志愿者活动。

>2 本次活动中,我们于公交车调度室做好了充分的交涉,为活动的顺利进行做好了保障。活动过程中,各组组长分工明确,同学们活动积极。

>3 本次活动的效果受到了公交司机及调度室的赞扬及肯定。

三:班级团队建设篇

1:班级愿景建设

>1按十月的工作计划,我班继续进行了班级愿景建设。建设过程中,全班同学积极参与,给出了大量关于愿景建设的意见和建议,为我班的愿景建设创造了有力条件,我们班的班级愿景正在顺利地有条不紊地建设中。

>2 在本次愿景建设中,班主任李焰老师也积极参与并指导我们合理的有效率的将班级建设得更加美好。

四:交流篇

学生会在召开班长团支书联会的时候能够更加明细的给我们各班进行工作安排。并能给各班班长团支书介绍近期的活动计划,让各班负责人做好更充分的准备。

总结人:黄亚雄

2009年10月29日

第13篇:软件工程答案

软件工程课后习题答案

殷锋主编·天津科学技术出版社

注:有些可能错误,读者自己注意

第一章

一、填空题:

1、软件是计算机系统中与硬件相互依存的另一部分,是包括、、及相关文档的的完整集合

2、软件工程包括三要素:方法、工具和过程。

3、软件开发的基本方法包括和

二、选择题:

1、C

2、B

3、C

第二章

一、填空题:

1、软件生存周期的各个过程可以分成三类,及主要生存周期过程、支持生存周期过程和组织的生存周期过程。

2、软件生存周期包括计划、需求分析、设计、程序编码、软件测试和运行维护6个阶段。

3、软件过程改进(SPI)帮助软件企业对其软件过程的改变进行计划,制定以及实施。

二、填空题

1、A

2、B

三、判断题

1、√

2、X

第三章

三、填空题:

1、可行性研究的目的是用最小的代价,在尽可能短的时间内,确定够解决

2、可行性研究在进行简要需求分析和设计时,要在高层次上以进行

3、需求分析阶段产生的最重要的文档是。

4、为解决一个复杂的问题,往往采取的策略是

5、SA方法中使用半形式化的描述方式表达需求,采用的主要描述工具是流图和E-R图。

6、数据流图中有四种负号元素,它们是点

7、数据字典中有四类条目,分别是

8、在IDEF0图中,表示系统功能的图形成为图。

9、在画分层的DFD时,父图与子图的输入/输出的数据流要

10、用于描述基本加工的小说明的三种描述工具是定表。

二、选择题

1、A

2、C

3、B

4、B

5、D

6、D

7、D

8、A

9、D

10、A

11、C

12、B

第四章

一、填空题

1、变换型系统由3部分组成:。

2、模块的分解的基本原则是。

3、在软件开发的过程中必须遵循的软件工程原则有:和模块独立性。

二、选择题

1、D

2、A

3、A

4、A

5、B

三、判断题

1、√

2、X

3、X

4、√

5、X

第五章

二、填空题

1、软件测试是为了而执行程序的过程。

2、运行被测程序的方法称为测试。

3、动态测试中,主要测试软件功能的方法称为法

4、选择测试用例,使得被测程序中每个判定的每个分支至少执行一次,这种逻

辑覆盖标准为判定/覆盖法。

5、要覆盖含有循环结构的所有路径是不可能的,一般通过限制来测试。

6、用等价类划分法设计测试用例时,如果被测程序的某个输入条件规定了取之

范围,则可确定一个合理的等价类和两个不合理的等价类

7、凭经验或直觉推测程序中可能存在的错误而设计测试用例的方法是测。

8、集成测试中的具体方法是非渐增式、渐增式。

9、确认测试阶段的两项工作是。

10、在单元测试中,测试一个模块时,需要设计。

11、与编码风格有关的因素有数据说明、语句构造、输入/输出、效率等,其

中有个重要的因素是源程序的文档化。

三、选择题

1、B

2、C

3、B

4、D

5、D

6、A

7、B

8、D

9、A

10、A

11、C

12、B

13、D

14、A

15、C

第六章

一、填空题

1、用例之间的关系可以有包含关系、和。

2、面向对象的基本特包括:抽象、封装、和继承。

3、类与类之间可以有具有关联、聚合、和等关系。

二、选择题

1、C

2、C

3、B

三、判断题

1、√

2、√

3、X

4、X

第七章

一、填空题

1、面向对像分析的步骤包括:分析问题域建立用例模型、发现和定义对象和类、

识别对象的内部特征、识别对象的外部特征、识别对象之间的交互。

2、面向对象分析的第一步就是分析用户需求,在此的基础上建立建模。

3、用户需求包括系统的功能、性能、可靠性等非技术性要求,其中需求分析阶段需要着重考虑的是用户对系统的功能要求。

二、选择题

1、C

2、D

3、D

三、判断题

1、X

2、√

3、X

4、√

第八章

一、填空题

1、复用性

2、子系统

3、数据库设计

二、选择题

1、D

2、C

3、D

4、D

三、判断题

1、X

2、X

3、√

第九章

一、填空题

1、测试

2、对对象之间交互的测试

3、待维护的软件是可以理解的、待维护的软件是可以修改的

二、选择题

1、A

2、B

3、C

三、判断题

1、X

2、√

第十章

一、填空题

1、直接度量、间接度量

2、人的因素、问题因素、过程因素、产品因素、过程因素

3、甘特图、时标网状图、PERT技术和CPM方法

4、项目风险、技术风险、商业风险;已知风险、可预测的风险、不可预测的风

5、项目经理、配置控制委员会、配置管理员、系统集成员、开发人员

6、配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计

7、按课题划分的模式、按职能划分的模式、矩阵型模式

8、(1)牢固掌握计算机软件的基本知识和技能

(2)善于分析、综合问题、具有严密的逻辑思维能力

(3)工作踏实、细致,遵循标准和规范,具有严格的科学作风

(4)工作中表现出耐心,毅力和责任心

(5)善于听取别人的意见,善于与周围人员团结协作,建立良好的人际关系

(6)具有良好的书面和空头表达能力

9、(1)能把用户提出的非技术性要求加以整理提炼,以技术说明书的形式转告给分析员和测试员。

(2)能说服用户放弃一些不切实际的要求,以便保证合理的要求得以满足。

(3)能够把表面上似乎无关的要求集中在一起,归结为“需要什么”“要解决什么问题”,这是一种综合问题的能力。

(4)要懂得心理学,能说服上级领导和用户,即让他们理解什么事不切实际的要求。又使他们毫不勉强,乐于接受。

10、鼓励、引导、通信

11、选定标准、重大偏离、特殊情况

二、选择题

1、

2、

3、

4、

5、

6、

7、8

三、判断题

1、

2、

3、

4、

5、

6、

7、8

第14篇:软件工程心得体会

软件工程心得体会

软件工程心得体会一:软件工程心得体会

软件工程心得体会未接触软件工程之前一直都很想学这门课程,因为觉得这门课很牛,是那些有工程师称号的高手才摆弄的东西。学了一个学期的软件工程课,终于知道了个软件工程的大概。学的时候总觉得很抽象,理解起来好像不难,但总是摸不着头脑一种很茫然的感觉。曾经以为程序就是软件,软件就是程序。学习这门课程第一个收获是,知道了二者的不同之处。以前做过的一些小型的软件比如加密软件,我也只是在程序旁边附上一个软件的说明,看来已经很接近作坊了。不过大的项目没有接触过,用软件工程的方法还是第一次。我想也是程序的不断复杂化导致了软件危机的发生,使得人们不得不探索新的解决方法。

经过倪老师的讲解,理解了软件工程,就是一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。吾生也有涯,而知也无涯,学习永无止境。起初,对软件工程处于一知半解的状态,分工比较混乱。

在划分模块后明确了各自分工,渐渐形成良性循环。在学习过程中,知道了团队合作十分重要,争议固然存在,但通过讨论、协商,群策群力,在不断磨合中能够达成一致与默契。团队成员中能力各有高下,互相尊重,各取所长,不宜妄自菲薄。组长多加协调,组员积极配合,才能合作愉快。学习能力体现在能尽快接受新的知识,顺应变化,学为所用。

上《软件工程导论》这门课,我的收获大概如下:我们为什么需要软件工程呢?上面已经给出了一些原因。专业点讲,软件工程最终是为了实现“软件制造业”的社会化,工业化大生产,提高其劳动生产效率。只有如此,软件业才能实现社会化,工业化大生产,才能“做大做强”。没有管理的设计是失败和混乱的设计,没有设计指导的编程是无序的忙碌的。根据开发的软件的规模,应该适当程度的运用软件工程化的思想,需要灵活,毕竟我们开发的软件大多数是中小型的,大型的并不多见(我是这么认为的)。但只要涉及人员间的交流和沟通,或多或少都要需要软件工程才能更有效率,工作成果更稳定。

其实开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。在我看来,除了第一步外,其余的步骤应该是一个循环的过程。在编码的过程中,你总是需要不断地回过头来修改原先的模块设计,甚至最初选定的实现算法。具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。1.可行性分析就是关于当前项目能不能干的分析结果。

2.项目描述这是在决定立项以后,对当前项目的一份扼要说明。

3.需求分析就是对客户要求的功能的定义。

4.软件设计这就是对程序的每一个模块的详细设计的说明文档。

5.开发日志我一直都认为这是文档中最有趣的部分。开发日志相当于编码阶段的文档,它的形式可以很随意,主要是记录一些在写程序时突然萌发的灵感,或对代码的一些微小的修改,或对程序结构的一些微小变动等,还要对上述这些修改变动作些说明。

6.测试分析用于指出程序存在或潜在的缺陷和错误,以及程序性能的数字描述。

>软件工程心得体会二:软件工程学习心得>>(3185字)

在本学期的软件工程课程的学习中,我们学习了十一章的内容。第一章软件与软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。还引出了工具UML。第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。

要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则:软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。

软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。

软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。

我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。包括程序流程图、N-S图、PAD图、HIPO图

程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。

N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。

PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。PAD也设置了五种基本控制结构的图示,并允许递归使用。

HIPO图:HIPO图是由一组IPO图加一张HC图组成。它是美国IBM公司在软件设计中使用的主要表达工具。

HC图既是层次图,用于表示软件的分层结构。HC图中的每一个模块,均可用一张IPO图来描述。IPO图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。

还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。

静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。

动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。

还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。

软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。

在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。

而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序?读不懂程序,维护又从何谈起呢?所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。

在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。

在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。不断锻炼自己,向一名合格的程序设计师迈进。

>软件工程心得体会三:软件工程心得体会>>(797字)

时间飞逝,不知不觉间《软件工程》的学习已经过了大半了。在这将近半学期的学习中,虽然我不能说我将《软件工程》学习的有多么的好,但是通过学习,我还是受益良多。

在以前,我一直对软件存在一些偏见或则是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。

但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。

而且在以前,我一直以为软件的开发其实是一件很轻松快乐的事情,只要一天坐在电脑旁敲敲键盘,那么一切就可以了,但是现在我才发现,我以前的很多的思想是多么的肤浅可笑。编程其实是一种乐趣和苦恼共存的一项创造性活动。因为编程不仅能够满足我们内心深处进行创造的渴望,而且还能愉悦我们内在的情感。

而且通过学习《软件工程》,我还学到了很多其他的东西。比如通过学习《软件工程》,特别是老师每次用实际的软件现场的讲解,为我提供了一个尽早接触世界工作和真实项目的机会。让我知道如何在以最小的成本中,训练自己的基本工程素质和能力,如何激发自己的积极性等。而且通过学习《软件工程》,还让我认识和培养了我的团队协作能力,特别是对于我们这些在校的学生来说,这种学习更是能让我在以后工作中少走很多的弯路。

所以,通过《软件工程》的学习,我是真的学习到了很多有用的东西,让我明白了很多的道理。在此我对老师的辛勤教育表示感谢,因为是你让我学习到了这些,是我获益良多。

第15篇:软件工程实验

作业一

1.请画出由下列文字描述的系统流程图,请用Microsoft Visio 或Word软件画图

设某城市招干考试成绩统计系统。

考生分三个专业,不同专业考试科目不同:

法律专业---考政治、语文、法律

行政专业---考政治、语文、行政

财经专业---考政治、语文、财经学

每个考生在报名时登记姓名、地址、年龄和报考专业。报名后招干办公室根据专业考生专业及地址在市区或郊区来编排准考证号码和考场。考生参加考试后,输入每个考生的各门课程的成绩,并统计出每个考生三门课程的总成绩。按准考证号的顺序打印出考生考试成绩单,分发给每个考生。各专业分别将考生按成绩总分从高到低的次序排序,以便决定录取名单。

作业二

画考务处理系统的数据流图。

考务处理系统功能如下:

(1)对考生送来的报名单进行检查; (2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站; •3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者; (4)制作考生通知单(含成绩及合格/不合格标志)送给考生; (5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。

作业三

1、请为某仓库的管理设计一个ER模型。该仓库主要管理零件(包括零件编号、名称、颜色、重量)的定购和供应等事项。仓库向工程项目(包括项目编号、项目名称、开工日期)供应零件,并且根据需要向供应商(包括供应商编号、名称、地址)定购零件。

2、画复印机的状态转换图 复印机的工作过程大致如下: 未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;

如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;

如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。

作业四

请将上列给出的具有变换型的DFD图导出它的软件结构SC图

作业五

某程序流程图如下图所示,请分别用N-S图和PAD图表示。

作业六

练习题:用判定表和判定树表示“检查订货单”伪码 IF 客户订货金额超过5000元 THEN IF 客户拖延未还赊欠钱款超过60天 THEN 在偿还欠款前不予批准

ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单 ENDIF ELSE (客户订货金额未超过5000元) IF 客户拖延未还赊欠钱款超过60天 THEN 发批准书,发货单,并发催款通知书 ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单 ENDIF ENDIF

作业七

设计下列伪码程序的语句覆盖和路径覆盖测试用例: START

INPUT (A,B,C) IF A>5 THEN X=10 ELSE X=1 END IF IF B>10 THEN Y=20 ELSE Y=2 END IF IF C>15 THEN Z=30 ELSE Z=3 END IF PRINT (X,Y,Z) STOP

实习

请参考机票预订系统实例 飞机票预订系统.zip

一、课程实践任务

学生自行分组选择一个项目,完成一个实际软件项目的分析、设计、开发、测试全过程,领会软件工程的基本思想,明晰各个阶段的主要任务,使用 MicroSoft Visio、Project、Rose、VSS、Power Designer 等计算机辅助软件工具,采用规范化的软件工程方法进行软件项目的研发。

二、课程实践的要求

第16篇:软件工程自荐信

网上了解到贵公司将招聘2011届本科毕业生,我非常希望到贵公司工作,故冒昧地给您写信。

在校期间,我充分利用学校优越的学习条件和浓郁的学术氛围,认真学习软件工程专业教学规定的内容。同时也辅学了会计经管方面的内容,取得了优异的成绩,具备了较高的理论水平和实践能力。同时,我对互联网领域有着特别的兴趣,大量的阅读了关于互联网行业的学术论文和杂志论文。同时也有着自己的理解。

在学好文化课程同时,我也并没有满足于对互联网感兴趣,有想法阶段。而是自己动手,组建自己的团队积极的把己有想法付诸实施。利用假期上线了共赢网,淘书吧等网站人站长,负责了整个网站的运营,推广等工作。对技术的热爱,使我办事认真、严谨,擅长JavaWeb及其主流框架技术,熟悉mysql数据库,也能熟练运用c和javascript,ajax。大量的社团活动和社会实践经历使我有着良好的组织协调能力和与人沟通的能力,做事认真负责,富有激情、创造力。

严于律己,精益求精。我严格要求自己,认真遵守学校各项规章制度,团队观念强,能很好的处理和同学之间的关系,也是一个有理想、有道德、有文化、有纪律的接班人。大学深造使我树立了正确的人生观,价值观,形成了热情,上进,不屈不挠的性格和诚实,守信,有责任心,有爱心的人生信条。

以上是我的一些简单的个人情况。在面临毕业的重要阶段,我希望自己能够为踏上社会打下一个坚实的基础。我非常希望能凭借自己的实力取得贵单位实习的机会。

望贵单位能给我一次机会,我将以真诚的心和实际行动来回报贵单位对我的选择。最后,祝贵单位广纳贤才,再创佳绩。

第17篇:《软件工程》学习心得

《软件工程》学习心得

一、软件工程的定义

软件工程 (Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。

二、软件工程的目标

在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。

三、软件工程的原则

是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。软件工程的原则有以下四项基本原则:1)选取适宜开发范型;2)采用合适的设计方法;3)提供高质量的工程支持;4)重视开发过程的管理。

四、软件工程的由来

据说上个世纪60年代的程序员都是天才,写程式就像写日记一样,吃过晚饭没事干随手就可以写几个出来玩,第二天还可以拿去卖钱。所以那时候程序员在大家眼中,跟那些搞美术,音乐的是一类的,被称为“艺术家”。

但事过境迁,就像任何人都不会嫌钱多一样,永远都不会有人嫌CPU快的。于是,随之而来的就是硬件的迅猛发展和越来越变态的软件。记得以前常去同学家拷游戏,通常几张软盘就可以搞定,而现在的游戏,两三张CD-ROM都算少的了。像如此庞大复杂的怪物,就算你是如何的天才,一个人肯定是搞不定的,否则,等你把程式写出来,人家Intel连奔腾N都开发出来了。既要开发大型的软件还要追求速度(这样才能赚钱),于是很自然地,合作的概念被提了出来。

在开始合作的初期,由于大家都习惯了当很有个性的“艺术家”,结果可想而知,一个是毕加索派的,而另一个是意大利印象派的,再加上一个画泼墨山水画的,要是像这样凑出来的东西都能不出问题的话,那么Bill早就转行了。所以,那时侯的大型软件,据说“蓝屏”比WINDOWS 98还多。

马克思告诉我们,万物都是从量变到质变的。随着问题的不断涌现,一些master们开始尝试去总结经验,并归纳了一些规范去指导软件的分析,设计,实现,测试,维护,人员交流协作,项目预算及时限控制等方方面面,这就是软件工程的前身。

软件工程到现在已发展了30多年,可以说是相当成熟的了。现在开发软件,据说都是一大帮人排排坐,按着一整套的规章制度来干活。于是,软件开发成了“工程”,程序员也就沦为“工人”了。

五、软件工程的核心

软件工程,说白了,就是这样一套用于软件的团队开发,以提高软件质量和程序员工作效率为目的的规范。其核心就是,对于软件开发的5个重要组成部分:需求分析,设计,编码,调试,维护,如何组织这5个部分的工作,以及如何完成每一个工作。简单来说,就是对于总体的组织和对于局部的实现。

六、软件开发过程

开发软件,就像是解决一个逻辑问题。想想自己平时是怎样写程序的。首先是要有一个想法,即我写的这个程序是要干什么的;然后就是对要实现的核心功能大概构思一种或多种实现方法,并从中选出一种自认为是较好的;接下来就是将涉及的各种主要或次要功能分成各个模块;最后就是分模块来编码和DEBUG。除了第一步外,其余的步骤应该是一个循环的过程。既然软件开发是一个具有不可预知性和变化性的动态的过程,那么,对其每一个步骤的组织,即周期模型,就必须包容它的这种性质。

具体到每一步的工作要怎样完成,是非常灵活的,只要把握住大体的方向就行。在进行分析,设计,编码,调试,维护这几部分的工作的时候,最核心的就是文档的编写。文档的作用在于以下3个方面:一是可以帮助整理思路。把要完成的目标,系统的结构,每一个模块的功能等整理一下,然后分门别类地写下来,这样在开发的过程中,就有据可依,在需要回过头来修改设计的时候,也有证可考。二是便于交流。想象一下开会时的情形。一大帮子人争先恐后,激烈辩论,然后会终人散,思想灵感也就随之散了,结果是开了半天会,什么也没讨论出来。这就是后来会议记录被发明出来的原因。在脑子里的东西一多,就会散而且乱,用语言表达的时候,很容易会丢三落四,别人也很难把握住你的思想。但经过整理写在纸上以后,则会清晰得多,无论是别人还是自己,看起来都可以一目了然。三是可以作为以后维护时的参考资料。有一句名言:“笔和纸永远都比大脑可靠”,意思就是说,放在大脑里的东西说不准哪天就忘了,但写在纸上的东西,只要不发生什么意外,一般是丢不了的。当过了一段时间,你需要再回过头来修改你的程序的时候,你就会发现,你以前写下的文档实在太有价值了。别指望你的源代码,对于复杂一点的程序来说,单纯的源代码几乎会扼杀掉你所有的时间。

可行性分析 就是关于当前项目能不能干的分析结果。主要考虑的方面包括:是否能把这个项目开发出来;假如可以的话,预计需要多少时间,能否满足客人的时间要求;需要多少人力和资金的投入;最重要的是,这个项目能否赚钱,能赚多少。还要对可能存在的风险进行评估。

七、软件工程学习感悟

时间飞逝,不知不觉间《软件工程》的学习完了。在这将近半学期的学习中,虽然我不能说我将《软件工程》学习的有多么的好,但是通过学习,我还是受益良多。

在以前,我一直对软件存在一些偏见或则是误解,认为软件就是程序,软件的开发就是编写程序,只要编完了程序,一切也就ok了,而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就能写程序了。一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学生,就能组成一个软件公司。

但是通过了《软件工程》这门课的学习,使我认识到了我以前的错误。软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序,软件是思想在硬件上的载体和体现,处理的是逻辑和信息。唯有对软件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、质量受控的软件产品。

而且在以前,我一直以为软件的开发其实是一件很轻松快乐的事情,只要一天坐在电脑旁敲敲键盘,那么一切就可以了,但是现在我才发现,我以前的很多的思想是多么的肤浅可笑。编程其实是一种乐趣和苦恼共存的一项创造性活动。因为编程不仅能够满足我们内心深处进行创造的渴望,而且还能愉悦我们内在的情感。

而且通过学习《软件工程》,我还学到了很多其他的东西。比如通过学习《软件工程》,特别是教员的课程讲解和每次用实际的软件现场的讲解,为我提供了一个尽早接触世界工作和真实项目的机会。让我知道如何在以最小的成本中,训练自己的基本工程素质和能力,如何激发自己的积极性等。而且通过学习《软件工程》,还让我认识和培养了我的团队协作能力,特别是对于我们这些在校的学生来说,这种学习更是能让我在以后工作中少走很多的弯路。

所以,通过《软件工程》的学习,我是真的学习到了很多有用的东西,让我明白了很多的道理。在此我对教员的辛勤教育表示感谢,因为是你让我学习到了这些,是我获益良多。

第18篇:软件工程名词解释

Adaptive maintenance适应性维护:为使软件产品在新的环境下仍能使用而进行的维护,称为适应性维护。

Data flow diagram数据流图:描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出的加工过程。

baseline基线:它提供一个正式标准,随后的工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。

Big-bang testing一次性组装测试:也叫集成测试,是单元测试的扩展,最简单的形式是两个已经测试过的单元组成一个整体,并且测试他们的接口。

Black box黑盒:是对一个项目组建造的软件的修改标识,组织和控制的技术,其目标是通过最大限度的减少错误,来最大限度提高生产率。

白盒测试:也称结构测试或透明盒测试,测试应用程序的内部结构或运作,而不是测试应用程序的功能。

Software configuration item软件配置项:软件生存周期各个阶段活动的产物经审批后即可称之为软件配置项。为了配置管理而作为单独实体处理的一个工作产品或软件。

Configuration management配置管理, 配置管理是对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。

Corrective maintenance 改正性维护:在软件交付运行以后,由于开发阶段测试工作的不彻底,不完全,一些隐藏的软件错误在系统运行的过程中逐步暴露出来,通常把发现和改正这类错误的过程叫做改正性维护。

Coupling 耦合:何亮不同模块之间接口的相对独立性。

Integration testing集成测试:在单元测试的基础上,将所有模块按照概要设计组装成为子系统或系统进行测试 cohesion内聚:衡量一个模块内部各个元素彼此结合的紧密程度。

Detailed design详细设计:是对概要设计的一个细化,就是详细设计每个模块实现算法所需的局部结构。

Test case测试用例:是一组条件或变量,测试者根据它来确定应用软件系统是否正确工作。

Program design language 过程设计语言:它是用正文现实表示数据和处理过程的设计工具。

模块化:把软件按照规定原则,划分为一个个较小的相对独立的但又相对关联的部件

prototyping原型:目标系统软件的一个可操作的模型,它实现了目标软件系统的某些重要方面的功能。

Information hiding信息隐蔽:模块应该设计设计的使共所信息(过程和数据)对于哪些不需要这些信息的模块来说是隐蔽的,每个模块只完成一个相对独立的特定功能,模块这件仅仅叫唤哪些为完成系统功能而必须交换信息。

requirement软件需求:用户对目标软件系统在功能,性能,介为,设计约束等方面的期望

Requirement analysis需求分析:通过对应用问题及其环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确化,完全化,一致化,最终形成需求规格说明文档的过程。

software软件:软件=程序+数据+文档

Software life cycle软件生命周期:软件产品从形成概念开始,经过定义,开发,使用和维护知道最后退役的过程

Stepwise refinement逐步求精:随着软件开发过程的进展,在软件结构每一层中的模块,表示了对软件抽象层次的一次精化。 Structured program结构化编程:一种编程典范,采用子程序、for循环以及while循环等结构,来取代传统的goto。

testing软件测试:使用人工或自助手段来运行或测定某个系统的过程

Walk-through代码走查:是一个开发人员与构架师讨论代码的过程

Waterfall model瀑布模型:将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水。

Regreion testing回归测试,在发生修改之后重新测试前的测试保证修改的正确性

Unit testing单元测试:是开发者编写的一小段代码,用于检测被测代码的一个很小的很明确的功能是否正确。//指对软件中的最小可测试单元进行检查和验证。

1、软件的特点:P3

1软件是一种逻辑实体,具有抽象性

2软件的生产与硬件的生产存在某些相同点,但二者有根本上的不同。

3软件的维护更为复杂,成本更高。

4软件在运行和使用期间,没有硬件的机械磨损,老化问题,但软件存在退化问题

5大多数软件是根据客户实际需求制定的,而不是通过已有构件组装而成的。

2、计算机软件的发展阶段,各有何特点?P2

第一阶段:编写程序只有低级语言,不存在什么系统化的方法,程序的质量完全依赖于程序员个人的技巧。

第二阶段:高级程序设计语言出现,开始用工程化的方法解决软件危机问题。

第三阶段:分布式系统出现,硬件的发展使软件危机加剧。开始研究软件工程学的科学理论、方法等一系列问题。

第四阶段:面向对象的技术的出现,多媒体技术快速发展。 //

3、什么是软件危机?其产生的原因是什么?P5

软件危机是指由于落后的软件生产力方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

原因:1和软件本身的特点有关2和软件开发与维护的方法不正确有关

//

4、什么是软件工程,其目标和内容是什么?P6

软件工程,将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程。 目标:在给定的成本和进度前提下,开发出具有可修改性,可理解性,可维护性,有效性,可靠性,可适应性,可移植性,可跟踪性和互化性并且满足用户需求的软件产品内容

5、什么是软件生存周期模型?它有哪些主要模型?

软件周期模型:即软件的开发模型,清晰直观的反映了软件开发的全部过程、所涉及的活动和任务结构框架,并指出了开发各阶段的关系、开发活动的衔接情况。

模型:瀑布模型,原型模型,螺旋模型,增量模型,喷泉模型,迭代模型。

6、什么是软件生命周期?包括哪些阶段?各阶段有哪些活动?P10

我们把软件产品从形成概念开始,经过定义、开发、使用、维护直到退役的全过程称为软件生命周期。

软件定义:问题定义、系统的可行性研究、需求分析 软件开发:概要设计、详细设计、编码、软件测试 软件使用维护:软件发布与实施、软件维护 退役:版本更新或退役

7、瀑布模型和原型模型的特点:P12

瀑布模型特点: 阶段间具有顺序性和依赖性关系、推迟实现、质量保证 缺点:逆转性差,错误的传递会采取发散扩大的方式。

原型模型的特点:1适合需求不确定的情况2使用软件重用技术3缩短了开发周期,降低成本

8、什么是软件开发方法?软件开发有哪些主要方法?

定义:软件开发过程所遵循的办法和步骤。

主要方法:1结构化方法2面向对象的方法

//

9、讲述软件需求,需求分析,需求建模概念,含义与区别:p26,p38

软件需求:指用户对目标软禁系统在功能,性能,行为,设计约束等方面的期望,这种期望可能是原始的,笼统的 ,也可能是抽象的太细节化的

需求分析:通过对应用问题及环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确换,完全化,一直化,最终形成需求规格说明文档的过程

需求建模:为了理解事物所做出的一种抽象,用符号语言对事物屋歧义的书面描述。 //

10、可行性研究的目标及主要内容是什么?

目标:用最小的代价在尽可能短的时间内确定该软件项目是否能够开发是否值得去开发

内容:1经济可行性2技术可行性3方案可行性4社会环境和人的可行性

//

11、成本效益分析可用哪些指标进行度量?

//

12、需求分析各阶段的基本任务是什么?P28 1明确所开发的软件必须具备什么样的功能,获得当前系统的物理模型

2抽象出当前系统的逻辑模型建立目标系统的逻辑模型

3为了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充

4编写文档

5需求验证

13、常见的初步软件需求获取的方法有哪些?为什么用这些方法进行需求获取?P33

1访谈与会议

2观察用户工作流程

3建立联合小组

4快速原型法

5基于本体的需要获取方法。为了准确、全面的获取软件需求的信息。

14、简述需求分析阶段的过程P36

问题识别、分析与综合、编制需求分析阶段的文档、需求验证。 //

15、可行性研究的具体步骤

1确定项目规模和目标 2研究正在运行的系统

3建立新系统的高层逻辑模型

4导出和评价各种方案

5推荐可行的方案

6编写可行性研究报告

//

16、在软件需求分析时,应首先建立当前系统的物理模型,再根据物理模型建立当前系统的逻辑模型,试问,什么是当前系统的物理模型?当前系统的物理模型与逻辑模型有什么区别?P28

物理模型:确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中,它是软件的基础。

与物理模型不同,逻辑模型很是实现机制与细节,只描述系统要完成的功能和要处理的数据。

//

17、什么是软件的概要设计?该阶段的基本任务是什么?

软件的概要设计:设计出软件的总体结构框架

基本任务:1设计软件系统结构(软件结构)2数据结构及数据库设计3编写概要设计文档4评审

//

18、详细设计的基本任务是什么?有哪几种描述方法?

基本任务:1为每个模块进行详细的算法设计2为每个模块内的数据结构进行设计3对数据库进行设计4其他设计5编写详细设计说明书6评审

描述方法:程序流程图2PAD图3过程设计软件

//

19、软件设计的基本原理包括哪些?P51

1抽象与逐步求精2模块化3信息屏蔽4模块独立

20、衡量模块独立性的两个标准是什么?个表示什么含义?P57

1内聚,衡量一个模块内部各个元素彼此结合的紧密程度

2耦合,衡量不同模块之间的相对独立性

21、模块的内聚有哪几种?各表示什么含义?P61

1巧合内聚2逻辑内聚3时间内聚,4过程内聚5通信内聚6信息内聚7功能内聚

22、模块的耦合有几种?各表示什么含义?P57

1非直接耦合2数据耦合3标记耦合4控制耦合5外部耦合6公共耦合7内容耦合

23、结构化程序设计的基本要点是什么?P76

任何程序逻辑都可以用顺序,选择,循环三种基本控制结构,并且每个代码块只有一个入口和一个出口,逐步求精,则称这个程序是结构化的。结构化设计方法的主要思想是进行逐层分解和模块化。

//

25、什么是结构分析方法?该方法使用什么描述工具?

机构化分析方法:一种利用自顶向下逐层分解,由粗到细,有复杂到简单技术的求解方法

描述工具1数据流图2实体关系图3数据字典4描述基本加工的小说明

//

26、什么是数据流图?作用是什么?其中个符号表示什么含义?P87 数据流图是描述熟路流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,一级把逻辑输入转换逻辑输出所需的加工处理。

//27什么是数据字典?作用是什么?有哪些条目?P94 数据字典是软件分析工程中对数据的描述,是数据流程图的必不可少的辅助资料。条目:数据项条目,数据流条目,数据库文件条目

//

28、简述如何画分层数据流图?对分层数据流图的审查有哪些审查要点.P89--92

29、什么是“变换流”,什么是“事务流”?P104

变换流:信息通常外部形式进入系统,经过处理后又以这种形式离开系统。

事务流:信息由外部形式变换为内部形式后到达事务中心,事务中心根据不同结果从若干路径中选择一条继续执行。

30、试述“变换分析”,“事务分析”设计步骤P106

变换映射:把DFD图划分为输入、变换和输出三个部分

建立初始SC图的框架

分解SC图的各个分支

事务映射:在DFD图中确定接收部分、事务中心和发送部分

画出SC框架图

分解SC图的各个分支

按照优化规则改进初始SC图,获得最终SC图

31、简述哪些启发式设计策略可以帮助软件设计人员改善软件质量、优化软件结构?

模块的高独立性和规模适中 保持高扇入和低扇出 模块的作用域应在控制域之内 降低模块接口的复杂度

33、什么是UML?为什么使用UML?P118

UML是统一建模语言,用来对面向对象开发系统的产品进行说明,可视化和编制文档的方法。UML是用来描述建模活动的,有利于更好的理解和认识软件。

34、在UML中用例图的作用是什么,其包括哪些符号?

作用:捕获系统中用户的需求。

符号:系统,参与者,用例,参与者与用例的联系, 用例与用例之间的关系

35、用例建模的步骤:P125

1识别参与者2识别用例3识别关系4建模

36、什么是用例规约?包括哪些基本内容?什么是基本流和备选流?

37、在UML中的状态图,活动图,时序图在系统分析中各起到什么作用?

状态图:用来描述对象、子系统、系统在生命周期中响应外部事件的状态转换行为,通过状态的变化来描述系统功能模型的事项过程

活动图:主要目的是描述动作以及对象状态改变的结果。有助于理解系统高层活动的执行行为,通过其可以深入描述系统功能的实现流程P148

时序图:是一种强调消息时间顺序的交互图,是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档,它详细而直观地表现了一组相互协作的对象在执行一个用例的行为为依赖关系,以及操作和消息的时序关系。 //

38、简述关联和依赖的区别

关联表示两个类的对象之间存在某种意义上的联系

依赖表示描述两个模型元素(类、用例等)之间的语义连接关系 //

41、软件维护的副作用有哪些?

1修改编码的副作用2修改数据结构的副作用3修改文档的副作用

42、什么是白盒测试?有哪些覆盖标准?对他们的检错能力进行比较?

白盒测试法:全面了解程序内部逻辑结构,对所有逻辑路径进行测试。 覆盖标准:P206 检错能力:P206

43、什么是黑盒测试法?有哪几种方法?各有什么特点?P198

黑盒测试,着眼于程序外部结构,不考虑内部逻辑结构,针对软件界面和软件功能进行测试。

方法:等价类划分,边界值分析,因果图法,错误推测法,比较测试

44、软件测试要经过哪些步骤?这些测试与软件开发个阶段之间有什么关系?

45、单元测试有哪些内容?测试中采用什么方法?P213,P214 46什么是集成测试?非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?P2115,216,217

47、软件维护有哪些内容?P229

48、何为非结构化维护和结构化维护?P231

第19篇:软件工程总结

软件工程的定义:软件工程是将系统化的,规范化的,可度量的方法应用于软件的开发,运行和维护过程,即将工程化应用于软件中的方法的研究。

软件工程的定义2:开发运行,维护和修复软件的工程方法。

软检策略思想:软件复用,分而治之,优化折中。

软件的生命周期:软件生命周期是指一个计算机软件从功能确定,设计,到开发成功投入使用,并在使用中不断地修改,增补和完善,直到停止该软件使用的全过程。

它包括制定计划(可行性与计划研究),需求分析,设计,程序编码(实现),测试及运行维护6个阶段。

软件开发模型:瀑布模型,快速原始模型,增量模型,螺旋模型,喷泉模型,组件复用模型。

软件开发过程:(1)定义;(2)开发;(3)验证;(4)维护。

软件开发的基本方法:传统的结构化方法,面向对象的方法。

可行性研究的主要任务:

可行性研究的主要任务不是具体解决系统中的问题,而是以最小的代价在尽可能短的时间内确定问题是否值得解决,是否能够解决。

可行性研究主要包括以下几个方面:1,技术可行性(风险分析,资源分析和技术分析);2,经济可行性(成本-效益分析);3,社会可行性(社会可行性是指开发后的系统能否得到社会的认可)

系统模型:物理(框图),逻辑(流程图);

系统流程图在可行性分析阶段使用。

成本—效益分析:

成本—效益分析的目的是从经济角度来评价开发一个新的软件项目是否可行。

系统的成本包括系统的开发陈本与运营成本。

系统成本包括:(1)硬件成本;(2)系统软件成本;(3)软件开发成本;(4)施工成本;(5)用户培训费用;(6)不可预见费用。

系统的运营成本是指发生在软件生命周期内维持系统运行的费用,以每年的花费量计算。

它包括:(1)人员费用;(2)网路使用费用;(3)维修费用;(4)消耗品费用。

需求分析的任务是理解和表达用户的需求,描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的借口细节,定义软件的其他有效性需求。

数据流图在需求分析阶段

ER模型包含“实体”,“联系”和“属性”三个阶段。

在ER图中用矩形方框代表实体

在ER图中用菱形方框代表联系。

在ER图中用椭圆或圆角矩形表示属性。

层次框图是用树形结构的一系列多层次的矩形框描述数据的层次结构。

软件设计的原则:模块化,抽象化,信息隐蔽,模块独立。

模块化是指解决一个复杂问退时自顶向下逐层把软件系统划分为若干模型的过程。

抽象化是指认识复杂现象过程中使用的思维工具,即抽出事物本质的,共同的特性而暂不考虑它的细节,不考虑其它因素。

抽象化和逐步求精,模块化的概念是一致的。

模块独立性的概念是模块化,抽象化和信息隐蔽的直接产物。

模块独立性可用两个定性标准来度量:内聚性和耦合性

内聚性:又称块内联系,是指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。

耦合性:又称块间联系,是指软件系统结构中各模块间相互联系紧密程度的一种度量。

偶然内聚:这种模块内各部分之间没有有意义的关系或者关系很松散。

逻辑内聚:这种模块把几种相关的功能组合在一起,每次被调用时,根据传送给模块的控制型参数来确定应执行的功能。

时间内聚:这种模块大多为多功能模块,但要求模块的各个功能必须在同一时间段执行。

工程内聚:使用流程图作为工具设计程序的时候,通过流程图来确定模块划分,把流程图中的某一部分划出组成模块,就是过程内聚模块。

通信内聚:一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据。

顺序内聚:一个模块中各个部分都是完成一项具体的功能而协同工作,紧密联系,不可分割的。

内容耦合:如果一个模块直接访问另一个模块内的内部数据,或一个模块不能通过正常入口转到另一个模块内部,或两个模块有一部分程序代码重叠(在汇编语言程序中可能出现),或者一个模块有多个入口,则两个模块之间就发生了内容耦合。它是最高程度的耦合,应该避免。

公共耦合:如果一组模块都访问同一个公共数据环境,则它们之间的耦合称为公共耦合。

外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

控制耦合:如果一个模块把控制信息传递给另一个模块,对其功能进行控制,这种耦合称为控制耦合。

标记耦合:如果一组模块通过参数表传递记录信息,这组模块就是标记耦合。事实上这组模块共享了某一数据结构的子结构,而不是简单变量。

数据耦合:如果一个模块访问另一个模块彼此之间通过数据参数(不是控制参数,公共数据结构或外部变量)来交换输入,输出信息,这种耦合称为数据耦合。

非直接耦合:如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。

数据流图的类型:变换型,事务型,混合型。

SD方法以数据流图为基础设计系统的模块结构。

事务型中间是有事务中心的!由它来进行处理的!

程序设计语言的分类:

机器语言——第一代语言

汇编语言——第二代语言

高级语言——第三代语言

4GL——第四代语言

变换型数据流图是线形结构的,由输入,变换(或称主加工)和输出三部分组成。

程序的效率:程序执行速度的快慢和程序占用存储空间的大小。

效率要求实际上就是性能要求对效率追求应取决于再需求分析阶段确定的效率方面的要求;

程序的效率包括以下三个方面:程序运行时间;存储器效率;输入/输出的效率。

公式计算:V(G)=m-n+p

V(G)有向图G的环数;

m有向图G的有向弧数;

n有向图G的节点数;

p=1;

软件测试的目标:为了发现错误而执行程序的过程。

软件测试的常用方法:

黑盒法:已知该程序应具备的功能而通过检测来检验的它的每一项功能是否能正常使用此方法为黑盒测试。

白盒法:已知程序的内部结构和工作过程,通过检测可检验产品内部动作是否符合规格说明书的规定,为白盒测试。

用白盒法设计测试用例最常用的是逻辑覆盖法:包括语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖。

软件测试分为4个步骤进行:单元测试,集成测试,确认测试,系统测试。

软件可维护性的因素:可理解性,可测试性,可修改性。

第20篇:软件工程知识点

第一章

软件工程概述

一、软件的定义和特性

(P2—P3) 定义:软件=程序+数据+文档

程序:按照事先设计的功能和性能要求执行的指令或语句序列

数据:程序能正常操纵信息的数据结构

文档:描述程序操作和使用的文档 特性:

(1) 软件是一种逻辑实体,具有抽象性,不是一般的物理实体;

(2) 软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;

(3) 软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件; (4) 软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;

(5) 基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。

* 掌握P4图1-2(b)软件失效率曲线

二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)

共经历了四个阶段

特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术

第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机

第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件

第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。

三、什么是软件危机?其产生的原因是什么?

定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。(P4) 原因:(P5)

(1) 用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求; (2) 用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;

(3) 大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;

(4) 软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;

(5) 开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化

(6) 软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。

四、什么是软件工程?它的目标和内容是什么?

定义:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,并对方法的研究。(P6)

目标:在给定的成本和进度前提下,开发出具有可修改性、可理解性、可维护性、有效性、可靠性、可适用性、可重用性、可移植性、可跟踪性和互操作性并且满足用户需求的软件产品。(P7)

内容:主要内容包括软件开发技术和软件工程管理两方面。(P6)

要素:方法,工具,过程

五、什么是软件生存周期?它有哪几个活动?

定义:(software life cycle)把软件产品从形成概念开始,经过定义、开发、使用和维护直到最后退役的全过程。

活动:软件定义、软件开发、软件使用维护和退役(P9)

六、什么是软件生存周期模型?它有哪些主要模型?

定义:又称为软件开发模型,软件过程模型,它清晰直观地反映了软件开发的全部过程、所涉及的活动和任务结构框架,并指出了开发了开发各阶段的关系、开发活动的衔接情况。

主要模型:瀑布模型(waterfall model),原型(prototype)模型,螺旋(the spiral)模型,增量(incremental)模型,喷泉(fountain)模型,迭代(iterative)模型

七、简述有哪些主要的软件开发方法?(P22)

结构化方法:也称为生命周期方法或传统方法,由结构化分析(structured analysis)、结构化设计(SD)、结构化编程(SP)三部分有机组合而成。其基本思想是自顶向下,逐步求精,基本原则是抽象和分解。

面向对象方法(Object—Oriented Method):把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO。包括面相对象分析(OOA)、面向对象设计(OOD)、面向对象的程序设计(OOP)等过程。

八、软件生命期各阶段的任务是什么?(P10)

软件定义:问题定义,系统的可行性研究,需求分析

软件开发:概要设计,详细设计,编码实践,软件测试

软件使用维护和退役:软件发布与实施,软件维护,版本更新或退役

九、简述瀑布模型(P12)、原型模型特点。

瀑布模型:软件开发的各项活动严格按照线性方式进行,各阶段之间具有顺序性和依赖性,且为了保证软件的开发质量进行阶段性评审。缺点是逆转性差,若在评审中发现缺陷或错误往回追溯修正时要付出一定的代价。适合在软件需求明确且很少发生变化、开发技术比较成熟、工程管理比较严格地场合使用。

原型模型:有助于用户和软件分析员双方相互学习对方领域知识,使得用户和开发人员统一对软件需求的认识,理解,有助于需求的定义评审,从而有助于提高开发速度。缺点是用户对原型没有正确认识,会催促开发人员尽早交付软件,同时也在一定程度上限制了软件开发人员的创新。(P14)

第二章

软件需求基础

一、试述软件需求、需求分析、需求建模概念的含义及区别。

软件需求:指用户对目标软件系统在功能、性能、行为、涉及约束等方面的期望,这种期望可能是原始的、笼统的,也可能是抽象的太细节化的。(P26)

需求分析:通过对应用问题及其环境的分析与理解,采用一系列的分析方法和技术,将用户的需求逐步精确化、完全化、一致化,最终形成需求规格说明文档的过程。(P26)

需求建模:需求建模是为了更好的理解用户所描述的需求所作出的一种抽象,是用符号语言对事务无歧义的书面描述。模型主要包括数据模型,功能模型和行为模型。(P38)

二、可行性研究的任务是什么?(P31)

用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。

三、成本—效益分析可用哪些指标进行度量?(P32)

成本效益分析是衡量经济可行性的。

指标:(1)货币的时间价值。(2)投资回收期(3)纯收入

四、需求分析阶段的基本任务是什么?(P27)

任务:深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。

五、简述需求分析阶段的过程。(P36)

1.问题识别

2.分析与综合

3.编制需求分析阶段的文档

4.需求验证

六、常用的初步软件需求获取的方法有哪些?为什么要用这些方法来进行需求获取?(P33)

方法: 1.访谈与会议

2.观察用户工作流程

3.建立联合小组

4.其他获取方法:快速原型法,基于本体的需求获取方法

原因:分析人员和用户的共同知识领域可能不多,致使分析人员对问题往往知之不多,而用户对目标软件的要求及对要求的描述常常是零乱而模糊地,从而会造成相互交流和互相理解上的困难。

七、在软件需求分析时,应首先建立当前系统的物理模型,在根据物理模型尽力当前系统的逻辑模型。试问:什么是当前系统?当前系统的物理模型与逻辑模型有什么差别?(P28)

当前系统:可能是需要改进的某个已在计算机运行的数据处理系统,也可能是一个人工的数据处理过程。

物理模型是确定待开发软件系统的系统元素,并将功能和数据结构分配到这些系统元素中,它是软件实现的基础。逻辑模型忽视实现机制与细节,只描述系统要完成的功能和要处理的数据。

逻辑模型是在物理模型的基础上去掉一些非本质因素形成的,它反应的是系统的本质。

第三章

软件设计基础

一、什么是软件概要设计?该阶段的基本任务是什么?

定义:设计人员依据软件需求规格说明文档,确定软件的体系结构,建立软件模块间的关系,定义个功能模块的接口,设计全局数据库或数据结构,规定设计约束,指定组装测试计划。

任务:将软件需求转化为软件的系统结构和数据结构(P49)

*力争做到功能模块之间有比较低的耦合度而功能模块内部有较高的内聚度。

二、详细设计的基本任务是什么?有哪几种描述方法?

任务:通过对软件结构细化,得到软件的详细的算法和数据结构。(P49)

描述方法:(过程设计)程序流程图

盒图(N-S图)

问题分析图(PAD图)

判定表和判定树

过程设计语言(PDL)(P77)

三、软件设计的基本原理包括哪些内容?(P51)

抽象与逐步求精、模块化、信息隐蔽、模块独立

四、衡量模块独立性的两个标准时什么?各表示什么含义?

标准:内聚和耦合

含义:内聚(cohesion)——衡量一个模块内部各个元素彼此结合的紧密程度

耦合(coupling)——衡量不同模块之间的相对独立性(互相连接的紧密程度)

五、模块的耦合性有哪几种?各表示什么含义?

种类:非直接耦合——两个模块之间没有直接关系,他们中任何一个都不依赖于另一个而能独立工作

数据耦合——一模块访问另一模块,相互传递的信息已参数形式给出,并且传递的参数完全是简单数据元素,而不是控制元素、公共数据结构和外部变量。

标记耦合——两模块之间都要使用同一数据结构的一部分,不是采用全程公共数据区共享,而是通过模块接口界面传递数据结构的一部分。

控制耦合——一模块传递给另一模块的参数中包含了控制信息(开关,标记,名字等),该控制信息勇于控制接收模块中的执行逻辑。

外部耦合——一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量信息。

公共耦合——一组模块都访问同一个公共数据环境

内容耦合——一模块直接访问另一模块的内部数据;一个模块不通过正常入口转到另一模块内部;两个模块有一部分程序代码重迭(只出现在汇编程序中);一个模块有多个入口。

*从上到下耦合性从低到高,独立性从高到底

六、模块的内聚有哪几种?各表示什么含义?

种类:巧合内聚(偶然内聚)——将几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块

逻辑内聚——完成一组在逻辑上相关的任务的模块间具有逻辑内聚

时间内聚(经典内聚)——完成几个必须在同一时间内进行的任务的模块间具有时间内聚

过程内聚——一个模块完成多个任务,这些任务必须按指定的过程执行。把流程图中的某一部分划出组成模块就得到过程内聚模块

通信内聚——一个模块内所有成分都使用同一输入数据或产生同一输出数据,即一个模块内所有处理元素都集中在某个数据结构的一块区域中的模块具有通信内聚

信息内聚——一个模块内完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点

七、结构化程序设计的基本要点是什么?

结构化程序设计是尽可能少用GOTO语句的程序设计方法。最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前句GOTO语句。

第四章 结构化分析与设计

一、什么是结构化分析方法?该方法使用什么描述工具?(P85—P86)

定义:结构化分析方法是一种利用自顶向下逐层分解、由粗到细、由复杂到简单技术的求解方法。

工具:数据流图(DFD 实体—关系图(E-R) 数据字典(DD) 描述基本加工小说明(Proce SPECification)

二、什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?(P87)

定义:数据流图是描述数据加工处理过程的有效工具。它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。

作用:主要描述系统的功能,即当前系统主要完成哪些功能。

基本符号:箭头——数据流

圆或椭圆——加工(变换)

双杠或单杠——数据

矩形框——外部实体

三、什么是数据字典?其作用是什么?共有哪些条目?(P94)

定义:数据字典是对所有与系统相关的数据元素的一个有组织的列表,以及精确地、严格地定义了每一个与系统相关的数据元素,并以字典式顺序将它们组织起来,使得用户和分析员对所有的输入、输出、存储成分和中间计算有共同的理解。

作用:对系统所有的数据进行描述和解释并进行管理。 条目:数据项条目、数据流条目、数据库文件条目(P96)

四、简述如何画分层数据流图,对分层数据流图的审查由哪些审查要点?(P88 P92)

画法:首先,把整个系统看成一个加工作为顶层数据流图(0层);然后,逐层对大的加工进行分解,分解为更小的自加工;最后,直到所有的加工都成为基本加工(不需要再分解,足够简单可以直接解决的加工)为止。

审查:

1、数据流图和程序流程图的混淆

2、父图和子图的平衡问题

3、局部文件问题

4、分解的深度与层次

五、什么样是“事物流”?什么事“变换流”?试将相应形式的数据流图转换为软件结构图。(P104)

事物流——数据沿传入路径到系统,由外部形式变换为内部形式后到达事务中心(完成分派任务),事务中心根据数据项计值结果从若干动作路径中选定一条继续执行。(事务中心)

变换流——信息以“外部世界”所具有的形式进入系统,经处理后又以这种形式离开系统。包括传入路径,变换中心,传出路径三部分。(变换中心) 步骤:(1)对结构化分析阶段产生的DFD图进行复审;

(2)确定数据流图的类型

(3)按照SD方法所规定的一组映射规则,把DFD图转换为初始SC图

六、试述“变换分析”、“事务分析”设计步骤。(P106—P108)

变换分析:第一步——划分DFD图的边界,也就是将DFD图划分为三个基本的组成部分,不同的设计人员可能产生不同的划分结果;

第二步——完成第一级分解,建立初始SC图的框架;

第三步——完成第二级分解,细化SC图的每个分支,得到初始SC图。

事务分析:首先确定事务中心,即几条动作路径的公共源头;其次划定接收路径和发送路径;然后分解和细化每个接收分支和发送分支,完成初始的SC图。

七、简述有哪些启发式设计策略可以帮助软件设计人员改善软件质量,优化软件结构。(P108—P110)

(1)模块的高独立性和规模适中

(2)保持高扇入和低扇出

(3)模块的作用域应在控制域之内

(4)降低模块接口的复杂度

第五章

面向对象的分析与设计

一、说明对象、类、类结构、消息的基本概念(P113)

对象:是封装了数据结构及可以施加在这些数据结构上的操作的封装体。

类:对具有相同属性和操作的一组对象的抽象性描述,它描述了属于该对象类型的所有对象的性质,包括外部特性和内部实现两个方面。 类结构:(实例)

消息:是用来请求对象执行某一处理或回答某一要求的信息。

二、试述面向对象方法学的优点。(P112)

1、开发的软件比较容易理解

2、稳定性好

3、可重用性好

4、较易开发大型软件产品

5、可维护性好

三、什么是UML?为什么使用UML?(P118)

定义:UML(Unified Modeling Language)是一个通用的、可视化标准建模语言。

使用原因:统一的标准

面向对象

可视化、表示能力强

独立于过程

易掌握、易用

四、在UML中用例图的作用是什么?其包括哪些符号?简述各符号的含义。(P122)

作用:捕获系统中用户的需求

符号:人形(stickman)——活动者

椭圆——用例

实线——关系

五、简述用例建模的步骤。

步骤:识别参与者——识别用例——识别关系——建模——用例规约

六、什么是用例规约?其包括哪些基本内容?什么是基本流和备选流?

定义:用例的补充说明,包括简要说明,事件流,用例场景,特殊需求,前置条件,后置条件 基本流: 备选流:

七、在UML中的状态图,活动图,时序图在系统分析中各起到了什么作用?

状态图——描述对象在生命周期内处于哪些状态,每一种状态的行为以及什么样的事件引起对象状态发生改变,展示了系统的动态视图。P144 活动图——描述动作及对象状态改变的结果,描述采取何种动作似的对象的状态改变,动作的序列是什么及在何处发生。P148 时序图——详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档,它详细而直观地表现了一组相互协作的对象在执行一个(或少量几个)用例时的行为依赖关系,以及操作和消息的时序关系。P139

八、简述类图中关联和依赖关系的区别。

关联表示两个类的对象之间存在某种语义上的联系。(组合/聚合关联)如:学生选课,学生与课程间

依赖是类与类之间最弱的关系,它是两个模型元素(类、用例等)之间的语义连接关系,其中一个模型元素是独立,另一模型元素依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。如教师与粉笔。

九、类图中类与类之间的关系有哪几种?

类与类之间的静态关系:关联,泛化,依赖,细化

第六章

人机界面设计

一、简述人机界面的设计过程。(P168)

1、确定任务的目标和含义;

2、将每个目标或含义映射为一系列特定的动作;

3、说明这些动作将来在界面上执行的顺序;

4、指明系统状态,及上述各动作序列中每个动作在界面上执行时界面呈现的形式;

5、定义控制机制,即用户可用的改变系统状态的设备和动作;

6、说明控制机制怎样作用于系统状态;

7、指明用户如何根据界面上反映出的信息,解释系统的状态。

二、简述人机界面设计过程中应考虑哪些一般问题?(P168)

系统响应时间

用户帮助设施

出错信息处理

命令交互

三、如何理解界面设计中“人的因素”(P162)

人对感知过程的认识

用户的技能和用户间的差异

第八章

软件测试

一、什么是白盒测试法?有哪些覆盖标准?P205

定义:(结构测试或逻辑驱动测试)测试时,把程序看做一个打开的盒子,它是知道产品内部工作过程,而不顾他的功能。

覆盖标准:语句覆盖

判定覆盖

条件覆盖

判定/条件覆盖

条件组合覆盖

路径覆盖

二、什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?(P199)

定义:(功能测试或数据驱动测试)它是在已知产品所应具有功能的基础上,通过测试来检测每个功能是否都能正常使用。

方法:等价类划分

边界值分析

错误推测

因果图

比较测试

三、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?

步骤:单元测试——集成测试——确认测试——系统测试

关系:单元测试(模块测试)——是最小单位的测试,其依据是详细设计说明书。测试者(程序员)根据详细设计说明书和源程序清单了解模块的I/O条件和模块的逻辑结构。

集成测试(组装测试、联合测试、子系统测试、部件测试)——是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统进行测试。

确认测试(有效性测试)——检查软件能否按合同要求进行工作,即是否满足软件需求说明书中的确认标准(用户参与)。

系统测试——针对整个产品系统进行的测试,验证系统是否满足了需求规格的定义,找出与需求规格不相复合或与之矛盾的地方。

四、单元测试有哪些内容?

模块接口

局部数据结构测试

路径测试

错误处理测试

边界测试

五、什么是集成测试?非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?

定义:集成测试(组装测试、联合测试、子系统测试、部件测试)是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统进行测试。

区别:P216自己看

组装:

六、什么是回归测试?(P218)

发生修改之后重新测试先前的测试以保证修改的正确性。目的在于检验以前出现过的但已修复好的缺陷不再出现。

七、什么是测试用例?(P194)

测试用例由测试输入数据和预期输出结果组成。

八、软件测试和软件调试有何区别?

第九章

软件维护

一、软件维护有哪些内容?(P229)

改正性维护

适应性维护

完善性维护

预防性维护

二、何为非结构化维护和结构化维护?(P231)

结构化维护——采用软件工程的方法进行软件的开发,则每一个阶段都有相应的文档,且文档与程序代码互相匹配,因此维护容易进行。

非结构化维护——没有采用软件工程的方法进行软件的开发,开发出的软件只有程序没有文档,或者仅有一些片段的说明性文档。给维护工作带来很大的困难,耗时耗力且代价高。

三、软件维护的流程是什么?(P233)

提交维护申请报告——生成软件修改报告——软件修改——主要流程

四、软件维护的副作用有哪些?(P240)

修改编码的副作用 修改数据结构的副作用 修改文档的副作用

《软件工程工作总结.doc》
软件工程工作总结
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

相关推荐

银行工作总结医院工作总结安全生产总结财务工作总结酒店工作总结党风廉政工作总结工会工作总结社区工作总结工作报告党建工作总结其他工作总结
下载全文