文档库 最新最全的文档下载
当前位置:文档库 › 软件工程复习点总结

软件工程复习点总结

软件工程复习点总结
软件工程复习点总结

软件工程

第一章

1.软件过程模型有:线性顺序模型(瀑布模型),原型实现模型,螺旋模型,快速应用开发模型RAD,并发模型,基于构件的开发模型,形式化方法模型,第四代技术。

2.软件危机变现:《1》软件代价高《2》开发进度难以控制《3》工作量估计困难《4》质量差《5》修改、维护困难

3.维护类型:改正性维护,适应性维护,完善性维护,预防性维护。

4.软件是计算机系统中与硬件相互依存的另一部分,它是包括程序在,数据及其相关文档的集合。

5.软件工程是一门旨在生产无故障的,及时交付的,在预算之内的和满足用户需求的软件学科。

6.软件生命周期包括了软件定义,软件开发和运行维护3个时期组成。

7.软件生命周期模型有问题定义,可行性研究,需求分析,总体详细设计,总体编码和单元测试,综合测试软件维护组。

8.CMM是用于评价一个组织软件过程成熟度和识别增加这些过程的成熟度所需要的关键实践的一个模型,是建立软件组织所使用的进程成熟度的模型以及定义和测量过程成熟度的有效方法,在实际中被软件开发组织用于软件过程改进和评估。

软件过程开发模型:9.

1)线性模型(瀑布模型):特点:自上而下,相互衔接如同瀑布流水,逐

级下落,体现不可逆转性。

优点:强调开发的阶段性、强调早期计划和需求调查以及强调产品测试。

(1)为项目提供了按阶段划分的检查点

(2)当前一阶段完成后,你自需要去关注后序阶段。

(3)开在迭代模型中应用瀑布模型。

缺点:(1)在项目各阶段之间极少有反馈。

(2)只用在项目生命周期的后期才能看到结果。

(3)通过过多的强制完成时期和里程碑来跟踪各个阶段。

适用性:用户的需求非常清楚全面。

2)快速原型模型:(1)可以得到比较良好的需求定义,容易适应需求的变化。

(2)有利于开发与培训的同步

(3)开发费用低,开发周期短且对用户更友好

缺点:(1)客户与开发者对原型模型理解不同

(2)准确的原型设计比较困难

(3)不利于开发人员开发

3)增量型优点:(1)人员分配灵活

)如果核心产品很受欢迎,则可增加人力实现下一个增量2(.

(3)可先发布部分功能给客户,对客户起到镇静剂的作用

缺点:(1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构。

(2)容易退化为边做边改模型。从而使软件过程的控制失去整体性。4)螺旋模型:(1)设计上的灵活性,可以在项目的各个阶段进行变更。(2)以小的分段来构建大型系统,使成本计算变得简单容易。

(3)随着项目推进,客户始终掌握项目的最新消息,从而他或她能够和管理层有效交互。

缺点:(1)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。

(3)过多的迭代次数会增加开发成本,延迟提交时间。

10.可行性分析法包括:(1)经济可行性(2)技术可行性(3)运行可行性(4)法律可行性(5)开发方案的选择

11.需求工程分为:

(1)系统可行性研究:它指的现有的软件、硬件技术能否实现用户对新系统的需求。,从业务角度来决定系统开发是否划算以及在预算范围内能否开发出来。

(2)需求导出和分析:这是一个通过对现有系统分析与潜在用户和购买者讨论。进行任务分析等导出系统需求的过程,也可能需要一个或多个不同的系统模型和原型

(3)需求描述。需求描述就是把分析活动中收集信息以文档的形式确定下来。

(4)需求有效性验证。这个活动检查需求实现、一致和完备。

(5)需求管理。需求管理是一种系统化方法,可用于获取、组织和记录

系统需求并使客户和项目团队在系统变更需求上达成并保持一致。

12.软件需求5个方面:(1)问题识别(2)评估与综合(3)建模(4)规约(5)评审

13.需求获取方法:(1)建立联合分析小组(2)客户访谈(3)问题分析与确认

(4)快速原型法

14.需求分析原则:(1)必须能够表达和理解问题的数据域和功能域

(2)按按自顶向下,逐层分解。

(3)要给出系统的逻辑视图和物理视图。

15.软件设计分为总体设计和详细设计。

16.总体设计任务:

(1)系统分析员审查软件计划、软件需求分析、提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家审定后进入设计。

(2)去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。.

(3)编写概要设计说明书,用户手册、测试计划、选用相关的软件工具来描述软件结构,结构图是经常使用的软件的软件描述工具。选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐藏原则等。

17.信息隐蔽是指每个模块内部信息对于其他不需要此信息的模块来说是不可访问的,即外部模块对模块内部的实现过程的不可见性。

18.模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能,以满足用户的需求。

19.模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块够着是否合理的标准。

20.衡量模块独立的两个标准是耦合性和内聚性。

21.耦合性:也称块间联系,指软件系统结构中各模块间相互联系和紧密程度的一种度量。模块之间联系月紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性,调用的方式以及传递的信息。

22.内聚性:又称为块间联系。指模块的躬耕强度的度量即一个模块内部各个元素,彼此结合的紧密程度的度量。若一个模块内各个元素联系的越紧密,则它的内聚性越高。

23.模块独立原则也称为模块设计的原则:高内聚、低耦合。

24.耦合性包括:非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合.

25.内聚性包括:巧合内聚,逻辑内聚,时间性内聚,过程内聚,通信内聚,信息内聚,功能内聚。

26.数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性。抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储,流动,使用以及加工情况。

概括性则是指数据流图把系统对各种业务的处理过程联系起来考虑,形成

一个总体。

27.数据流程图的组成:外部实体、数据流、处理、数据存储。

28.面向对象的基本概念:对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。

29.对象:它是分装了数据结构及可以施加在这些数据结构上的操作的封装体。

30.类:用于表示某些对象的共同特征(属性和操作),对象是类的实例。

31.实例:就是由某个特定类所描述的一个具体对象。

32.消息:消息传递时对象与外界相互关系的唯一途径。

33.方法:方法就是对象所能执行的操作,也就是类中所定义的服务。

34.属性:属性就是类中定义的数据,它是对客观世界实体所具有的性质的抽象。

35.封装:封装也就是信息隐藏,通过封装对外界隐藏了对象的实现细节。

36.继承:是现实世界中遗传关系的直接模拟。

多态性:指允许不同类的对象对同一信息做出响应37.

38.重载:函数重载是指在同一个作用域内的若干个参数特征不同的函数可以使用相同的函数名字运算重载是指同一个运算符可以施加不同

类型的操作数上面

39.UML是面向对象的方法

40.静态结构图包括类图和对象图

41.UML由九种图构成:

用例图类图对象图活动图状态图序列图(顺序图)协作图

构件图(组件图)部署图(配置图)

42.UML视图大体分为三大类:结构分类动态行为模型管理

43.类图有3种属性“+”public(公共)“#”protected(保护)“-”private(私有)操作一样

44.类之间的关系有用关联:泛化聚合依赖组合

45.用例图有3种关系:communicates(通信) extends(延伸) uses (使用)

46.程序设计语言3种结构:顺序判断循环

47.良好的编码风格:缩进良好,没有过多嵌套变量名,空间名,类名都取直接有意义的字眼有一些必要注释符合思维习惯使用运算符模块化

48.软件测试定义:为了发现程序中的错误而执行程序的过程

49.测试方法黑盒测试(功能测试)白盒测试(结构测试)

50.黑盒测试如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都正常使用.

白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明的规定正常进行

51.软件测试:单元测试集成测试确认测试系统测试

52.单元测试也称为模块测试或结构测试,通常可放在编程序段,主要采用逻辑覆盖技术,目的是检查模块是否能实现了详细设计说明书种规定的功能和算法

53.单元测试主要发现编程和详细设计中产生的错误

54.测试一个模块是需要为该模块编写一个驱动模块和若干桩模块。顶层

测试无需驱动模块,底层测试无需桩模块

55.集成测试也称为组装测试,在单元测试的基础上把所有模块组装成一

个系统进行测试。主要测试设计阶段产生的错误

56.非渐增式集成测试(先测试后组装)和渐增式集成测试(测试一个组

装一个)

57.确认测试目标是检验软件的有效性,在需求分析阶段制定

58.白盒测试技术:语句覆盖判定覆盖条件覆盖判定\条件覆盖条件组合覆盖路径覆盖

59.黑盒测试技术:等价类划分,边值分析,错误推测和因果图等

60.按照测试过程是否在实际应用过程中来分,有静态分析与动态测试

测试方法有分析法(静态分析和白盒测试)与非分析法(黑盒法)

61.软件维护分为以下4类:改正性维护;适应性维护;完善性维护;预

防性维护

可重可移植性可修改性可测试性可理解性决定软件可维护性的

因素:62.

用性

63.基本路径测试:环路复杂性的3种计算方法:

<1>将环路复杂度定义为流图种区域的数量

<2>设E为流图的边数,N为图中的节点数,则定义环路复杂度 V(G)=E-N+2

<3>设p为流图G中的制定节点数,则有V(G)=p+1

关键路径测试64.

天津理工大学-软件工程总结(红字是考点)分析解析

填空10个,选择10个,名词解释5个,简答题2个,画图题2个 第一章 一、FAQs about software engineering软件工程中常见的问题 1、software:Computer programs and associated documentation 软件是计算机程序和所有使程序正确运行所需要的相关文档和配置信息 Software products软件产品分为:Generic通用、Bespoke (custom)定制 2、Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门工程学科,涉及软件生产的各个方面 Software engineers should adopt a systematic and organised approach 软件工程人员运用的是系统的、有组织的工作方法。 3、difference between software engineering and computer science:系统工程和计算机科学的区别:Software engineering is an engineering discipline that is concerned with all aspects of software production.计算机科学侧重于理论和基础,而软件工程侧重于软件开发和交付的实际活动。 4、the difference between software engineering and system engineering: 软件工程和系统工程的区别:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。 5、software process :A set of activities whose goal is the development or evolution of software. 软件工程是以软件开发和进化为目的的一系列活动 Generic activities in all software processes:软件过程的基本活动 a)Specification 软件描述 b)Development 软件开发 c)Validation软件有效性验证 d)Evolution 软件进化 6、software process model:软件过程模型 A simplified representation of a software process, presented from a specific perspective. 从特定角度提出的软件过程的简化表示形式 Examples of process perspectives are ?Workflow perspective 工作流模型 ?Data-flow perspective 数据流或活动模型 ?Role/action perspective角色/动作模型 Generic process models 通用过程模型 ?Waterfall瀑布型开发方法 ?Iterative development迭代式开发方法 ?Component-based software engineering(CBSE)基于组件的软件工程 7、the costs of software engineering软件工程的成本 Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 软件开发成本约占60%,测试成本占40%。 对于定制软件而言,进化成本常常高于开发成本。 8、software engineering methods软件工程方法: Structured approaches to software development which include system models, notations, rules, design advice and process guidance.软件开发的结构化研究方法,包括:系统模型、标记

软件工程知识点总结

软件工程知识点总结-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

一、软件工程概述 1.软件特点 软件:计算机程序、方法、规则、相关的文档资料,以及计算机程序运行时所需要的数据。 软件是计算机系统中的逻辑成分,具有无形性。其主要内容包括:程序、配置文件、系统 文档、用户文档等。 2.软件分类 (1)按功能划分:系统软件、支撑软件、应用软件。 (2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。 (3)按规模划分:微型软件、小型软件、中型软件、大型软件。 (4)按服务对象划分:通用软件、定制软件。 3.软件发展阶段 (1)程序设计时代(20世纪50年代)。 (2)程序系统时代(20世纪60年代)。 (3)软件工程时代(20世纪70年代起)。 4.软件危机 (1)危机现象:软件开发成本与进度估计不准确,软件产品与用户要求不一致,软件产品质量可靠性差,软件文档不完整不一致,软件产品可维护性差,软件生产率低。 (2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不 够,对维护不够重视,开发工具自动化程度低。 5.软件工程 软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料。 软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经济、高效地开发高质量的软件产品提供最有效的支持。 (1)工程方法:结构化方法、JSD方法、面向对象方法。 (2)软件工具:具有自动化特征的软件开发集成支撑环境。 (3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、 软件验证、软件维护。 (4)工程管理:项目规划,项目资源调配,软件产品控制。 (5)工程原则:分阶段生命周期计划,阶段评审制度,严格的产品控制,采用先进的技术, 成果能清楚地审查,开发队伍精练,不断改进工程实践。 (6)工程目标:开发成本较低,软件功能能满足用户需求,软件性能较好,软件可靠性高, 软件易于使用、维护与移植,能按时完成开发任务并及时交付使用。 (7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

软件测试年终工作总结范文(完美版)

软件测试年终工作总结范文 这个学期我学习了软件测试这门专业课程,在学期即将结束的时候,我也对这门课程建立基本的了解和理解。软件测试这门课程作为软件工程专业中一门很重要的课程,已经在软件领域占据了不可替代的角色,当一个软件从雏形到真正的在一台计算机上运行的时候,谁也不能保证计算机软件能一步到位的满足人们的需求。所以就有了软件测试,其目的是:第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。下面我简单的写一下这个学期对课程的总结和收获。 我认为,在整个庞大的软件工程中,不管是需求分析、架构设计甚至是最后的debug,都会产生引入不管的机会,这就要求作为一个软件测试师要掌握丰富的软件工程原理和知识。测试的工作将会存在于整个项目周期,即在项目开始时需要各种分析调研时就开始了。尤其是在形成需求规格说明书时就有对文档的测试需求,甚至主导整个项目的走向。 软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。做测试还要考虑到所有出错的可能性,有时候还要用一些非常规的的测试方法。软件测试还很注重软件性能问题,也就是要保证软件运行得很好;不同的使用环境下,考虑软件的兼容性同样重要。对于测试员来讲,会比开发人员更加重视软件产品的质量问题。在测试过程中,测试者可能会为客户的需求角度考虑

到更多,由此我们可以认为测试人员有权利决定产品是否可以发布。然而,通过一个学期的学期,我们又不得不懂得,软件测试人员不是万能的,测试人员在面对一个设计烂编码烂的软件时,也是无法不低头的,再怎么测试它也变不成优秀的软件。 通过课上的理论因为课下的实践和后半学期又因为身体力行于 1、最基本的测试的分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。 2、然后就是,白盒测试中的逻辑驱动测试的覆盖率测试。 3、还有就是对于划分等价类和边界值法这一块,让我从模糊到明朗。 4、在初次写测试用例的时候,感觉真是纠结,用例写的很死板,看似简单的一个填表工作,要写好真是不简单。一开始写的比较不自然,有些生搬硬套,而且还很慢。在后来负责了对论坛新鲜事版块的测试之后,明白了测试用例其实就是指导怎么去执行测试,而且书写设计测试用例也要以熟悉软件的业务为前提,才能更好的去测试。 另外就是一个学期的学习让我纠正了几点误区: 1. 有位大师曾说过:“软件测试的目的在于发现错误,一个好的测试用例在于发现从来未发现的错误,一个成功的测试是发现了从未发现的错误的测试。”由此我自认为测试就是为了找到bug,然而一个学期的测试学习经验告诉我这是错误的,如果只是为了找到BUG,那么BUG会成天缠着你。

2018软件工程工作总结3篇

2018软件工程工作总结3篇 随着互联网技术的快速发展,以及电信行业的第三次重组,给我们通信服务行业带来了巨大的商机,我很荣幸在这个大好时机来到中国网通常州分公司,成为网 通公司的一名宽带医生,我非常珍惜这份工作机会。 时间一晃而过,转眼间xx年已接近尾声。回首繁忙而又充实的xx年心中不禁感 慨万千,过去的一年中通过自身的不断努力,使得技术水平、沟通技巧等方面都 取得了一定的进步,当然亦有需要改进的地方,这是我人生中弥足珍贵的经历, 也给我留下了精彩而美好的回忆。 非常幸运能够来到**公司参加工作,回顾业务培训期的一个月工作,感触很深,收获颇丰,我们首先对宽带医生这项业务的前期推出做了很细致的准备,仔细讨 论了在业务推出以后可能遇到的种种困难;然后参加了代维部门的实践学习,深入 了解了网络的接入技术,以及在修障过程中遇到的问题,接着参加了为期两天的 新员工入职培训班,认真听取了相关领导对公司的发展概况,组织结构,以及各 部门职责的介绍,并认真学习了公司的基本业务和增值业务,对公司的产品和服 务有了很清楚的认识。 后期在主管的带领下,我们陆续对周边保有用户进行了宽带医生免费体验活动,也让用户知道我们这项延伸服务的推出,树立我们**宽带的品牌形象。 在过去的工作当中,在领导和同事们的悉心关怀和指导下,通过自身的不懈努力,各方面均取得了一定的进步,但那些远远不够,我也在实际工作中认识到自己的 不足,业务还不够熟练,很多知识还有欠缺,处理事情不成熟。因此在今后的工 作中,我将努力提高自身素质,克服不足,朝着以下几个方向努力: 1、学无止镜,时代的发展瞬息万变,各种学科知识日新月异。我将坚持不懈地 加强学习,向理论学习,向专业知识学习,向身边的同事学习,逐步提高自己的 理论水平和业务能力,并用于指导实践。 2、“业精于勤而荒于嬉”,在以后的工作中不断学习业务知识,通过多看、多学、多练来不断的提高自己的各项服务技能,克服年轻气躁,做到脚踏实地,提高工 作主动性,不怕多做事,不怕做小事,在点滴实践中完善提高自己。 3、不断锻炼自己的胆识和毅力,提高自己解决实际问题的能力,并在工作过程 中慢慢克服急躁情绪,积极、热情、细致地的对待每一项工作,继续提高自身文 化的修养,努力使自己成为一名优秀的工作人员。 4、在工作上积极配合省公司“关于配合全省宽带续费率提升活动开展“宽带医生” 服务的建议”的活动;加强对武进、新区、金坛宽带医生的业务宣传,增加这些区 域的服务量;加大对他网用户的宣传,扩大宽带医生的服务群,争取将用户发展为 本网用户;明确宽带医生远程服务软件的一整套受理、安装、服务的流程,加强远 程服务软件的推广,将远程服务和上门服务结合起来。

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

【软件测试学习心得】

【软件测试学习心得】 第一篇:软件测试课学习心得 软件测试课学习心得 09301028 张如 这个学期我学习了软件测试这门专业课程,在学期即将结束的时候,我也对这门课程建立基本的了解和理解。软件测试这门课程作为软件工程专业中一门很重要的课程,已经在软件领域占据了不可替代的角色,当一个软件从雏形到真正的在一台计算机上运行的时候,谁也不能保证计算机软件能一步到位的满足人们的需求。所以就有了软件测试,其目的是:第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。下面我简单的写一下这个学期对课程的总结和收获。 我认为,在整个庞大的软件工程中,不管是需求分析、架构设计甚至是最后的debug,都会产生引入不管的机会,这就要求作为一个软件测试师要掌握丰富的软件工程原理和知识。测试的工作将会存在于整个项目周期,即在项目开始时需要各种分析调研时就开始了。尤其是在形成需求规格说明书时就有对文档的测试需求,甚至主导整个项目的走向。 软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。做测试还要考虑到所有出错的可能性,有时候还要用一些非常规的的测试方法。软件测试还很注重软件性能

问题,也就是要保证软件运行得很好; 不同的使用环境下,考虑软件 的兼容性同样重要。对于测试员来讲,会比开发人员更加重视软件产品的质量问题。在测试过程中,测试者可能会为客户的需求角度考虑到更多,由此我们可以认为测试人员有权利决定产品是否可以发布。然而,通过一个学期的学期,我们又不得不懂得,软件测试人员不是万能的,测试人员在面对一个设计烂编码烂的软件时,也是无法不低头的,再怎么测试它也变不成优秀的软件。 通过课上的理论因为课下的实践和后半学期又因为身体力行于qq群论坛里使我对测试方法和设计分析有了大致的接触和深入了解。收印象深刻的有一下几点。 1、最基本的测试的分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试; 从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。 2、然后就是,白盒测试中的逻辑驱动测试的覆盖率测试。 3、还有就是对于划分等价类和边界值法这一块,让我从模糊到明朗。 4、在初次写测试用例的时候,感觉真是纠结,用例写的很死板,看似简单的一个填表工作,要写好真是不简单。一开始写的比较不自然,有些生搬硬套,而且还很慢。在后来负责了对论坛新鲜事版块的测试之后,明白了测试用例其实就是指导怎么去执行测试,而且书写

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件测试期末复习总结

1.1 软件质量至关重要 软件无处不在,软件越来越复杂、功能越来越强,软件的影响越来越大,软件的受众越来越多。人们对软件越来越依赖,但是软件是人编写的 1.1.1 软件错误案例研究 Disney的狮子王1994-1995,Intel 奔腾浮点运算1994,美航天局火星极地登陆1999,爱国者导弹防御系统1991,千年虫约1974,“冲击波”计算机病毒2003,放射性设备治死 1.2 何谓软件缺陷 通通称为:软件缺陷(Bug) 1.2.1 软件缺陷的定义 软件缺陷对应于需求(功能)规格书 (1)软件未达到规格书标明的功能 (2)软件出现了规格书标明不会出现的错误 (3)软件功能超出规格书指明范围 (4)软件未达到规格书虽未指出但应达到的功能 (5)软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好 1.3 软件缺陷出现的原因 (1)系统分析的原因 对产品的理解不全面、不到位; 需求不断改动 开发团队重视程度、沟通不够 (2)系统设计的原因 说不出来就做不出来 1.4 软件缺陷的修复费用 (1)费用呈几何级数增加 需求阶段:1 设计阶段:3-6 编程阶段:10 内部测试:20-40 外部测试:30-70 产品发布:40-1000 (2)费用增加的原因 软件范围扩大 关联增大 熟悉程度减少 模块间影响扩大

1.5 软件测试员的职责 观点1: 试图验证软件是“工作的”观点2: 设法证明软件是“不工作的” (1)发现软件缺陷(2)尽早地发现缺陷(3)确保发现的缺陷被修复 找出软件缺陷,尽可能早一些,并确保其得以修复 1.6 软件测试员应具备的素质 (1)专业技能: 软件工程知识,软件相关知识,熟悉编程知识,相关的业务背景知识 (2)基本素质 有条理地思维,打破砂锅问到底,细心、责任心,有幽默感 (3)专业素质: 探索精神,善于发现缺陷,不懈努力,创造性,追求完美,判断准确,老练稳重,有说服力1.7 软件测试原则————原则是指导测试实践纲领性的指导 1、完全测试是不可能的 输入量、输出量、实现途径多,提交的产品是可接受的,而不是没有缺陷的 2、测试无法显示潜伏的软件缺陷 可报告已发现的缺陷,却无法报告潜伏的缺陷;报告的内容:根据对发现的缺陷进行分析… 3、找到的缺陷越多,说明缺陷越多 一般情况下,缺陷和寄生虫一样,成群出现,程序员的疲倦,程序员常犯同样的错误 经验: 成群的出现可能是大灾难的征兆 4、杀虫剂怪事——软件测试越多,其免疫力越强 出现的原因:相同的方法重复使用,人的因素缺陷性质的因素 应对方法:变换测试方法、测试程序 5、并非所有的缺陷都能修复 没有足够的资源,不算真正的缺陷(也许可说成一项功能),修复的风险太大,不值得修复(商业风险决策)是否修复的决策,需要有项目管理、测试员、程序员共同参与 6、软件测试的其他原则 事先定义好质量标准;测试要随开发的启动而尽早开始;第三方测试更客观、更有效;重视测试计划、重视文档 7、测试是一项讲究条理的技术专业 2.2 何谓软件工程 何谓工程的方法 工程不同于科研、创造 工程:受资源限制、成熟的、可重复的、只许成功 明确地定义试图解决的问题,然后使用和开发标准的工具和技术来解决之 内容:理论、方法学、技术、工具、管理、组织 软件工程定义 系统的、规范的、定量的方法在软件的开发、操作和维护中的应用(IEEE610.12-1990定义)多人构造多版本软件(Parnas定义) 2.1 软件工程简史

精选软件工程师工作总结

精选软件工程师工作总结 1、分享条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!- 2、一定要确定自己的发展方向,并为此目的制定可行 的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。- 3、软件开发团队中,技术不是万能的,但没有技术是 万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在mm比较多的团队中。在软件项 目团队中,技术水平是受人重视和尊重的重要砝码。无论你 是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻, 我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成

过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度” 大家可想而知了。- 4、详细制定自己软件开发专业知识学习计划,并注意 及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。- 5、书籍是人类进步的阶梯,对软件开发人员尤其如此。 书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙 出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。- 6、不要仅局限于对某项技术的表面使用上,哪怕你只

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件测试心得体会(精选5篇)-最新范文

软件测试心得体会(精选5篇) 篇一:软件测试课收获和体会 软件测试课学习心得 1204013031 许院生 12计本3班 这个学期我学习了软件测试这门专业课程,在学期即将结束的时候,我也对这门课程建立基本的了解和理解。软件测试这门课程作为软件工程专业中一门很重要的课程,已经在软件领域占据了不可替代的角色,当一个软件从雏形到真正的在一台计算机上运行的时候,谁也不能保证计算机软件能一步到位的满足人们的需求。所以就有了软件测试,其目的是:第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。下面我简单的写一下这个学期对课程的总结和收获。 我认为,在整个庞大的软件工程中,不管是需求分析、架构甚至是最后的debug,都会产生引入不管的机会,这就要求作为一个软件测试师要掌握丰富的软件工程原理和知识。测试的工作将会存在于整个项目周期,即在项目开始时需要各种分析调研时就开始了。尤其是在形成需求规格说明书时就有对文档的测试需求,甚至主导整个项目的走向。 软件测试对逻辑思维、学习能力、反应要求很高,是否有严密的思维和逆向思维也非常重要。做测试还要考虑到所有出错的可能性,有时候还要用一些非常规的的测试方法。软件测试还很注重软件性能问题,也就是要保证软件运行得很好;不同的使用环境下,考虑软件的兼容

性同样重要。对于测试员来讲,会比开发人员更加重视软件产品的质量问题。在测试过程中,测试者可能会为客户的需求角度考虑 到更多,由此我们可以认为测试人员有权利决定产品是否可以发布。然而,通过一个学期的学期,我们又不得不懂得,软件测试人员不是万能的,测试人员在面对一个设计烂编码烂的软件时,也是无法不低头的,再怎么测试它也变不成优秀的软件。 通过课上的理论因为课下的实践和后半学期又因为身体力行于QQ 群论坛里使我对测试方法和设计分析有了大致的接触和深入了解。收印象深刻的有一下几点。 1、最基本的测试的分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试;从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试。 2、然后就是,白盒测试中的逻辑驱动测试的覆盖率测试。 3、还有就是对于划分等价类和边界值法这一块,让我从模糊到明朗。 4、在初次写测试用例的时候,感觉真是纠结,用例写的很死板,看似简单的一个填表工作,要写好真是不简单。一开始写的比较不自然,有些生搬硬套,而且还很慢。在后来负责了对论坛新鲜事版块的测试之后,明白了测试用例其实就是指导怎么去执行测试,而且书写设计测试用例也要以熟悉软件的业务为前提,才能更好的去测试。 另外就是一个学期的学习让我纠正了几点误区: 1. 有位大师曾说过:“软件测试的目的在于发现错误,一个好的测试用例在于发现从来未发现的错误,一个成功的测试是发现了从未发现

软件工程实训总结

实训总结 一、实训目的: 通过对java语言、sql数据库的应用以及sql语言的复习和锻炼,并且通过使用MyEclipse开发平台设计管理项目,以达到充分熟悉开发平台及应用设计。同时掌握并实践软件项目设计规范及其开发流程:需求分析、概要设计、详细设计、代码编写等,以便提前适应软件公司开发流程、环境和工作要求。 二、实训内容: 1. 项目:(“当当网”) 2. 完成(用户注册、登录、列表、购物车、删除、修改)等功 能 3. 数据库设计、SQL应用 4. 项目实战 三、实训总结: 转眼间实训已过去一段时间,之前的兴奋、喜悦如今已经让我熟悉,在实训的每一天都会让我有成为一名真正的财富者拥有的冲动。也许,在这期间不一定会让一个人有着翻天覆地的变化,但变化就是这样一点一点产生的。通过这一期的实训,虽然倍感折磨,但是收获却是很大的,学习中我不但有了学习成果的喜悦,而且自己也日渐成熟,有种说不出的喜悦。 在实训的过程中,我深深的体会到了自己在专业知识方面的欠缺和不足,也意识到了自己作为计算机软件专业的学生,要想在以后的

职业中崭露头角,除了要有过硬的理论知识,健康的体魄之外,还必须具备良好的心理素质,是自己在以后的途中无论经历什么样的困难,都立于不败之地。通过实训老师的课堂讲解与企业文化标准的培训,使我加深了对自己专业的认识,从而确定自己以后的努力方向,要想在短暂的实训时间内尽多的学到东西,就需要我们跟老师或同学进行良好的沟通,加深彼此的了解,只有我们跟老师多沟通,让老师更了解我们,才能更真切的对我们进行培训工作。由此,班级的文化“共享”就在生活中慢慢形成了。 “纸上得来终觉浅,绝知此事要躬行!”在这短短的时间里,让我深深的感觉到自己在实际应用中所学来专业知识的匮乏。让我真真领悟到“学无止境”这句话的涵义。而老师在专业认识周到中所讲的,都是课本上没有而对我们非常有实际意义的。这又给我们的实训增添了浓墨淡彩的光辉。我懂得了实际生活中,专业知识是怎样应用与实践的。在这些过程中,我不仅知道了职业生涯所需具备的专业知识,而且让我深深体会到一个团队中的各个成员合作的重要性,要善于团队合作,善于利用别人的智慧,这才是大智慧。靠单一的力量是很难完成一个大项目的,在进行团队合作的时候,还要耐心听取每一个成员的意见,是我们的组合达到更加完美。 这次实训除了让我明白工作中需要能力,素质,知识之外,更重要的是学会了如何去完成一个任务,懂得了享受工作。当遇到问题,冷静,想办法一点一点的排除障碍,到最后获取成功,一种自信心就由然而生,这应该就是工作的乐趣。有时候不懂的就需要问别人了,

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程导论总结报告

软件工程总结报告 序言 本期软件工程专业导论课程结束后,为圆满完结本期此课程的学习,特此总结个人学习所得以求些许回报先生无私教导。 主体 第一节课主要讲述了软件工程各领域之间的联系以及贯穿始终的基础为何。其中较为基础并相当重要使的应该是算法。对于算法重要性与基础性的理解,我个人有比较切身的体验。比如前不久的ACM 竞赛,在比赛中我所在的小组以及当场几乎所有小组都遇到这样一个问题:超时—这无非就是个人设计的算法的效率不够高,这也证明我们对算法理论知识的匮乏(不清楚优化个人算法的方法)。我对软件工程这一专业有了一个较为全面的把握,对我个人未来进取方向而言也起到了一定的指导作用。 第二节课老师带来了三位本专业的前辈向我们传授大学生活应如何度过以及对我等一些问题作出解答。其中我个人印象深刻的是其中一位学姐PPt中引用李开复的那部分内容。即试着记录下自己一整天做的所有事以及其所花费的时间,再仔细研究自己在哪些事上浪费了时间,应该如何整改。我个人认为这方法可能有一定直观性,因为直观的数据更能深刻的反映真实和刺激一个人整改,但此法实施起来又太古板,中觉得生活有些教条化、章程化,缺乏新意与自由。求上进,珍惜时间也无需以丧失人生情趣为代价。还有就是学长再提潘老师曾讲过的那些重要、紧急优先次序。他提到的个人的学习生活情况

倒没什么深刻感,但我认为他引用的一番话较有道理,大概意思是比起个人兴趣更为优先的应该是谋生的本领,尤其是当自己感兴趣的正好是冷门时。当掌握了一些实实在在有能保证自身良好发展前景后,再去做一些自己感兴趣的事也来得及。于我而言,一个人尚不能独善其身,何求其兼济天下。成己方成人就是如此道理。 第三节课主要讲解了大学学习生活中应着重的基础课以传递重 基础的要旨。据个人体会,其中英语科目实是基础中的基础,主要是为辨认单词(即代码变量以及注释)意义以达到理解他人算法并顺利接手他人接下来的工作。企业和公司出于其本身利益主张雇方市场--讲究项目的可接手性,而不希望对现有人员的过分依赖。离散数学则应该是为之后学习其他编程专业知识做理论知识的铺垫。概率统计更多应是对统计有关算法及理论的学习(个人认为现实生活中许多问题都可以运用概率统计的方法加以解决,因此应是很重要的基础知识)。C/C++(Java)语言是作为编程的工具使用,无疑是基础(现今水平下的我们主要用C编代码)。数据结构则应是提供特定的解决问题的结构思想以便进行数据处理方面工作。算法的重要性以及基础性的个人体会已包含在第一节课中。计算机体系结构与汇编课程与操作系统原理课程主要在于理解计算机系统运行原理能加深对代码运行原理的理解,对于现今水平的我也能更深层次的理解c语言的指针操作等方面知识。汇编语言能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

相关文档
相关文档 最新文档