软件工程复习笔记总结

软件工程复习笔记总结
软件工程复习笔记总结

软件工程复习笔记总结

软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。v 软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。v 软件是指程序、数据和文档三者共同构成的配置。v 包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。v 软件的描述性定义:软件由计算机程序,数据结构和文档组成。v 软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体” 具体来说:1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。v 将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点面向管理的观点,且是定性描述的。v 软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。v 软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。v 软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。v 软件开发方法:面向数据流(约旦)方

法、面向数据结构方法、面向对象方法。v 结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。v 用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。v 软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。软件的开发就是“按软件顺时间发展的过程分阶段进行”的。v 软件生存周期模型:瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序的物理实现,是文档驱动模型,遵循结构化设计);原型模型(软件产品的开发是线性顺序进行的,本质是快速,用途是获知用户的真正需求,一旦需求确定,原型将被抛弃)。其核心都是将软件开发划分为:分析、设计、编码、测试和维护。v 软件生存周期划分为以下几个阶段:可行性研究与计划、需求分析、总体设计、详细设计、实现、组装测试、确认测试、使用和维护。v 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤v 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型v 软件工程过程是软件生存周期中各个可能的过程,这些过程可进一步划分成为

了提供或获得软件产品或服务,或是为了完成软件工程项目需要完成的有关软件工程活动,每一项活动又可分解为一些软件工程任务。标准定义了21个过程分属三类:基本过程(include获取、供应、开发、运作、维护过程)、支持过程和组织过程。v 软件工程三要素:方法、工具和过程。v 软件工程管理目的:为了按照进度及预算完成软件计划,实现预期的经济和社会效益。内容:成本估算、进度安排、人员组织、质量保证、配置管理等等。怎么强调软件工程管理的极其重要性都不会过分 Unit2 可行性研究任务和目的:用最小的代价在尽可能短的时间内确定问题是否能够在一定规模之内解决。(确定这一问题是否存在值得去做的解)过程和步骤:实质:进行一次大大压缩简化了的系统分析和设计过程,也就是在较高层次上以抽象方式进行的系统分析和设计过程。技术和工具:DFD+DD 主要内容(1)澄清问题定义规模、约束和限制(2)导出新系统的逻辑模型(3)导出若干个供选择的物理解法(物理模型),并分别研究它们的可能行:数据流图符号Example:

数据流图的基本目的是利用它作为交流信息的工具,另一个主要目的是作为分析和设计的工具。

数据字典是关于数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合,它是通过对数据元素和数据结构的定义,来描述数据流和数据存储的逻辑内容的。

数据流和数据字典共同构成系统的逻辑模型。

数据字典的内容:数据流、数据元素、数据存储、处理数据字典最重要的用途是作为分析阶段的工具。v Unit3v 需求分析:目的:精确地定义系统必须做什么,也就是对目标系统提出完整、准确、清晰、具体的要求。为目标系统提出精确的逻辑模型。任务:确定对系统的综合要求,包括功能需求、性能需求、可靠性和可用性需求、运行要求、将来可能提出的要求。过程:处理逻辑的分解:自顶向下逐步分解直到每个处理逻辑已是不可再分的“功能单元”为止。书写文档:软件需求规格说明工具:状态图、IPO图、层次方框图、Warnier图v 结构化分析设计技术是70年代中期由E、Yourdon等人提出来的一种面向数据流的方法;要求系统的开发工作在结构化和模块化的基础上进行,它系统的运用了描述模型的概念,按照软件内部数据传递和变换的关系,自顶向下逐层分解,直到找出满足要求的可实现的软件。在这个方法里,“抽象”,“分解”,“模块化”,“结构化”是它的主要手段;面向数据传递、变换所形成的数据流(Dataflow)和数据流程图(DFD)是它的主要依据。这个方法的关键工作是:画分层的DFD和确定数据定义与加工策略。v Yourdon方法(对应的瀑布模型)的缺陷: 其实Yourdon方法是建立在三个假设之上的:假设1:所有的需求都是可以预先定义的;假设2:需求在较长一段时间内是不变的(相对稳定的);假设3:运用所提供的工具可以做到项目参与者之间清晰、准确、有效的沟通。这三个假设往往是很难成立的:

“逻辑模型”的精确描述依赖于“自顶向下的求精过程”,而“自顶向下的求精过程”的顺利进行又依赖于精确的“逻辑模型”,这二个问题互相缠绕依赖而构成方法学上的“死锁”。v 原型法(原型模型):原型就是模型的意思(原型=模型),它指的是模拟某种产品的原始模型。运用原型的策略:抛弃策略&附加策略对原型的逐步求精过程是一个迭代过程相对于Yourdon方法来说原型法是一个非线性的系统开发方法。不再强调高质量的阶段性文档。v 螺旋模型:沿螺线自内向外每旋转一圈便开发出一个更为完善的软件版本v Yourdon方法适合于“预先指定的系统”;v 原型法适合于“用户驱动的系统”。v 通常用“范式”定义消除数据冗余程度。第一范式数据冗余程度最大,第五范式数据冗余程度最小。v 状态转换图:状态是可以被观察到的系统行为模式,一个状态代表系统的一种行为模式,它规定了系统对事件的响应方式。一张状态图有一个初态和0至多个终态。事件:在某个特定时刻引起系统做动作和(或)状态转换的控制信息。v 验证软件需求的正确性:一致性、完整性、现实性、有效性 Unit4 总体设计:目的:确定系统的具体物理实现方案(系统结构设计),确定组成每一个程序的模块,以及模块间的关系(软件结构设计)。任务:软件结构设计(过程设计是详细设计阶段的任务)过程:设想供选择的方案选取合理方案(每份方案有系统流程图、组成系统的物理元素清单、成本/效益分析、实现这个系统的进度计划4份资料)等9步(P92)在软件开发早期阶

段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。

总体设计阶段书写的文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。

总体设计过程中,推荐最佳方案后进入“软件结构”设计:设计出组成这个系统的所有程序、文件和数据库,以及它们之间的联系。软件结构:由模块组成的层次系统。模块:数据说明、可执行语句等程序。C /S(Client/Server)结构是软件系统体系结构“结构化设计”概括地说就是:用一组标准的工具和准则来确定系统应该由哪些模块、用什么方式联结在一起,才能构成一个最好的软件结构。

模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

模块: 具有四种属性的一组程序语句称为一个模块,这四种属性分别是:输入和输出、逻辑功能、运行程序、内部数据。(前两个是模块外部属性,后两个是内部属性,总体设计完成外部属性设计、详细设计完成内部属性设计)

软件结构图中,模块用一矩形表示。

模块间调用:用→连接开发具有独立功能而且和其它模块之间没有过多相互作用的模块,可以做到模块独立。

影响模块独立的因素:耦合(不同模块间互联程度)内聚(同一模块内各元素紧密程度)力争高内聚、低耦合。

5种耦合形式:数据耦合、控制耦合、特征耦合、公共耦合、内容耦合(从左到右耦合程度递增)最弱的耦合是非直接耦合7种内聚形式:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚(从左到右程度依次递减)模块的扇出与扇入:模块的扇出是指一个模块拥有的直接下级模块的个数。模块的扇入是指一个模块的直接上级模块的个数。模块的扇出系数应控制在7以内,尽可能的加大模块的扇入系数。

作用域应该是控制域的子集;模块的控制域和作用域:模块的控制域(控制范围):是指这个模块本身以及所有直接或间接从属于它的模块的集合。模块的作用域(判断作用范围):是指受该模块内一个判断影响的所有模块的集合。(也就是该模块内存在着判断调用语句,而所有受到该判断逻辑影响的模块,就是该模块的作用域。)作用域应该是控制域的子集;理想的是作用域都是直接下属模块。

数据流类型数据在DFD中流径特征变换流:进入系统中的数据所流经的路径几乎是一样的。事务流:进入系统中的数据所流经的路径不完全是一样的。

精化DFD事务分析变换分析DF类型?分析DFD中数据流的全局特征事务中心往往包含多个处理逻辑。建立第一张SC分解和优化确定变换中心及I/O “事务”是指一组输入数据。v Unit5v

详细设计:目的:完成模块的过程设计 (为SC中每个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出详细清晰的描述。)模块的逻辑设计(模块的过程描述)主要内容:1)为每个模块确定采用的算法2)确定每个模块使用的内部数据结构3)确定模块的接口细节4)制定模块的测试计划完成模块的“内部属性”设计,即给出系统中各个模块的“运行程序”和“内部数据”;由此可见详细设计的结果基本上决定了最终软件的质量。详细设计的目标更重要的是便于维护。工具:

1、程序流程图(流程图)

2、N-S图(盒图)

3、PAD图(问题分析图)

4、伪代码和PDL语言v 逻辑设计应遵循的理念:

1、从效率第一到清晰第一

2、结构化的控制结构:结构化程序设计=仅使用单入口单出口的三种基本控制结构

3、逐步细化的实现方法[例] 在一组数中找出其中的最大数分别用程序流程图、N-S图和PAD图描述用“结构化”保证程序的清晰易读,用“逐步细化”实现程序的正确可靠,它们导致了一条自然的结论:模块的逻辑设计必须用结构化程序设计的原理来指导。(结构化设计在详细设计阶段)v Yourdon方法的技术途径:DFD→DFD+DD→SC→PDLv Yourdon方法在分析阶段,我们用DFD来表示软件的逻辑模型;在设计阶段,又按照数据流类型,分

别用变换分析或事务分析将它们转换成相应的软件结构。v 面向数据结构设计方法的根据和基本思想:算法和数据结构是程序设计中不可分割的侧面,算法的结构依赖于它要处理的数据结构。只要事先知道一个问题的数据结构,就可以由此导出它的程序结构。v 基于数据流还是基于数据结构的出发点不同,最终目标也不同。SADT(结构化分析设计工具)方法的目标是得出软件的最终SC图,它把注意力集中在模块的合理划分上;面向数据结构的设计则要求得出程序的过程性描述,并不明确也提出软件应该先分成模块等概念。v SADT方法:DFD>模块的过程性描述(PDL等) |<-------总体设计-------> | |<--------详细设计------->|Jackson方法(面向数据结构):数据结构>程序的过程性描述(伪代码等)

|<-----总体设计-----> | |<----------详细设计--------->|v 程序复杂程度的定量度量:

1、程序图(流图)(用任何方法表示的详细设计结果都可以变换成程序图)流程图中的各种处理框均简化成一个结点

2、环域复杂度程序的结构复杂度可用强连通的有向图中线性无关环的个数来度量V(G)= 判定结点数 +1 Unit6 编码(也称实现)任务:把模块的过程性描述翻译为用该语言书写的源程序(或源代码)。

编码的风格

1、程序要清晰直观,不要过于巧妙

2、用一定的原则指导控制结构的使用(避免使用容易引起混淆的结构和语句)

3、有规律地使用GOTO语句不得不把效率的考虑放在首位的时候,而结构化程序又不能满足时间要求时,就可用GOTO语句来减少重复的代码段;

4、实现源程序的文档化(软件=程序+文档)<有意义的变量名称、适当注释、标准的书写格式>v Unit7:v 软件测试:定义:程序测试是为了发现错误而执行程序的过程。纠错(调试)是为了确定错误的性质,并且加以纠正。v 软件测试包括机器测试(动态测试)(黑盒测试&白盒测试)和人工测试(代码复审)(代码走查+会审+办公桌检查)程序编译通过后,应该先人工测试(发现逻辑错误)后机器测试(在设定的测试数据上执行被测程序)、v 动态测试是一个包括:①设计“测试用例”→②执行被测程序

→③分析测试结果并发现错误的过程。(①设计“测试用例”是最关键)

测试用例={ 输入数据 + 期望结果 }按照在设计“测试用例”时,是否涉及程序的内部结构,把动态测试分为:白盒测试:从程序的内部逻辑入手,按照一定原则设计测试用例。黑盒测试:仅以程序外部功能为依据来设计测试用例。检查程序是否完成应做的和是否做了不该做的。(按规格说明书的规定)v 软件测试的的步骤:[见笔记本上图]单元测试:在编码阶段完成;以模块为单位,(主要白盒)发现的往往是编码和详细设计的错

误综合测试:(模块组装测试、集成测试)以软件的设计信息为依据,主要用黑盒,发现设计错误,也可能发现需求说明错误。确认测试(验收测试):以软件的需求信息为依据,用黑盒,发现需求说明书中的错误,验证软件的有效性系统测试:指整个计算机系统(包括软件与硬件)的测试。v 代码复审

1、代码会审:开会逐句朗读和讲解程序,精力集中于发现错误,会后改正错误

2、走查:与会者扮演“计算机”的角色

3、办公桌检查:一个人参加的代码会审v 黑盒测试方法:v 等价分类法:按测试结果“等价”把被测程序的输入域划分为若干个等价类,每一个等价类都选择一例“测试用例”,与“应做的事情”相对应的是“有效等价类”,而与“不应该做的事情”相对应的称之为“无效等价类”。设计等价类的测试用例分为两步:

1、划分等价类并给出定义;

2、选择测试用例的原则:有效等价类的测试用例尽量公用;无效等价类必须每类一例。

[例]某城市的电话号码……[看笔记]v 边界值分析法(边值法)v 错误猜测法(猜错法)v 因果图法v 白盒测试方法:[见笔记]合理的白盒测试,就是要选取足够的测试用例,以实现对源程序比较充分的覆盖。v 逻辑覆盖法:(按照由低到高对程序逻辑覆盖程度的顺序)语句覆盖:每条语句至少执行一次;判定覆

盖:不仅每条语句至少执行一次,而且每一分支至少执行一次;条件覆盖:不仅语句覆盖,而且每个条件均按“真”、“假”两种结果至少执行一次;条件组合覆盖:不仅语句覆盖,而且每个条件的所有可能组合都至少执行一次。v 路径覆盖法:(按照由低到高对程序逻辑覆盖程度)结点覆盖:每个结点走一次;相当于语句覆盖边覆盖:每条边走一次;相当于判定覆盖路径覆盖:每条路径走一次;(不需要考虑程序的循环) Unit8 面向对象基本原理:使描述问题的问题空间和在计算机上解决问题的解空间在结构上尽可能一致。

基本概念:(1)对象:由数据以及可以施加在这些数据上的操作(或服务、方法、处理)所构成的统一体,它是面向对象软件的基本模块。(2)类:对具有相同数据和相同操作的一组相似对象的定义(抽象)。(3)不同的对象彼此之间只能通过消息相互作用、相互联系(4)继承:处于下一层次上的派生类自动继承了位于上一层次基类的属性(数据)和行为(操作)面向对象就是既使用对象又使用类和继承等机制,而对象之间仅能通过传递消息实现彼此间的通信。U ML用视图来表示被建模系统的各个方面,它把软件模型分成5个视图,每一个视图代表完整系统的一个特定方面。每一个视图又由一种或多种模型图构成。

1、用例视图:用来支持需求分析,也就是说系统将提供的功能是在用例视图中描述的。

2、逻辑视图:定义系统的实现逻辑,重点关注的是系统的静态结构(类、对象及它们之间的关系),也描述系统内部的动态协作关系。它的模型图包括类图、对象图、状态图、顺序图、协作图及活动图等。

3、组件视图:描述系统的实现模块及它们之间的依赖关系。组件是不同类型的代码模块,通过代码模块的结构和依赖关系来表示。

4、部署视图:描述软件系统在计算机硬件系统和网络上的安装、分发和分布情况。

5、实现视图:描述组成软件系统的各个物理部件。U ML由三部分组成:基本构造块、规则和公用机制 UML 定义了二类模型元素的图形表示:一类模型元素用于表示模型中的某个概念,一类模型元素用于表示模型元素之间的关系面向对象建模:对象模型“谁做?”(类图)动态模型“什么时候做?”(状态图)功能模型“做什么?”(用例图)这三种模型都是必不可少的,对象模型是最核心的。在面向对象分析中,构造出完全独立于实现的应用域模型;在面向对象设计中,把求解域的结构逐渐加入到模型中;在实现阶段,把应用域和求解域的结构进行编码和验证。O O方法:OOA→OOD→OOP→OOT 是一个逐渐扩充模型的过程,其间无需转换概念和表示,开发活动之间基本做到了平滑无缝过渡;对象模型:类与类之间一般有四种关系:关联、聚集、泛化(继承)、依赖和细化。

1、关联:表示两个类的“对象”之间存在某种语义上的联系。

2、聚集:聚集是关联的特例,它表示类与类之间的关系是整体与部分的关系。

3、泛化(继承):泛化关系指的是类与类之间是“一般- 特殊”的关系。

4、依赖和细化:依赖关系是指一个模型元素依赖于另一个独立的模型元素,细化关系是指一个模型元素细化成了另一个模型元素。

动态模型:描述了对象模型中对象的生命周期过程,即对象的状态,我们把一个触发行为称为一个事件。动态模型就是通过描述对象的状态、触发状态转换的事件、以及对象的行为来描述软件系统的动态行为(行为模型)。

功能模型:UML提供用例图来表示功能模型,并称之为用例模型。功能模型也可用SADT中的一组DFD来表示。(也是需求分析阶段)一幅用例图包含的模型元素有:系统、行为者、用例和用例之间的关系。一个用例是系统的一个完整的功能,通过关联与行为者连接,关联指出一个用例与哪些行为者交互,这种交互是双向的。用例是一个类,用例的实例是系统的一种实际使用方法,我们称之为脚本。用例之间的关系主要有二种:扩展关系和使用关系。创建用例模型的工作包括:定义系统、寻找行为者和用例、描述用例、定义用例之间的关系,并确认用例模型。v

Unit9:v 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

图:

参照当前系统建立目标系统 v 通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。v 软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

维护过程本质上是修改和压缩了的软件定义和开发过程,而且事实上远在提出一项维护要求之前,与软件维护有关的工作已经开始了。

进行维护的原因:改正程序中的错误和缺陷;改进设计以适应新的软、硬件环境;增加新的应用范围;为了将来的维护工作。

维护分为以下几类:改正性维护;适应性维护;完善性维护;预防性维护未涵盖进来的内容:

需求分析目的:确定目标系统必须具备哪些功能总体设计的主要任务:一、制定几种可能的实现方案;二、设计程序的体系结构详细设计(模块设计)任务:设计出程序的详细规格说明

集成测试和验收测试:集成测试(组装测试):根据设计的软件结构验收测试:按照规格说明书的规定,由用户参与下对目标系统进行验收的测试通过对软件测试结果的分析可以预测软件的可靠性。

传统软件工程方法学的软件过程,可以用瀑布模型来描述瀑布模型的特点:阶段间具有顺序性和依赖性、推迟实现的观点清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。

瀑布模型带反馈环,发现前面阶段的错误时,沿反馈线回头修改快速原型模型不带反馈环,软件产品开发是线性顺序进行的,用途是获知用户的需求增量模型(渐增模型):把软件产品分解成增量构件。原则:当把新构件集成到原有构件时,所形成的产品必须是可测试的。它能在较短时间内向用户提交可完成部分工作的产品。要求开始实现各个构件前就全部完成的需求分析、规格说明、总体设计。

螺旋模型的基本思想:使用原形及其他方法来尽量降低风险。可以看作每个阶段前都加了风险分析的快速原型模型。螺旋模型是风险驱动型的。

喷泉模型体现了面向对象开发过程迭代和无缝的特性。

采用先行顺序的开发方法不可能开发出当今客户需要的大型复杂系统。构件:功能清晰的模块或子系统。模型:对事物的无歧义的书面描述。RUP强调采用迭代和渐增的方式来开发软件,重复一系列组成软件生命周期的循环。

面向对象方法=对象+类+继承+用消息通信可行性分析中导出供选择的解法的最简单途径,是从技术角度出发考虑解决问题的不同方案。

系统流程图是概括地描绘物理系统的工具,表达数据在系统各部件之间的流动情况,而非对数据加工处理。

数据流图(DFD)描绘信息流和数据从输入移动到输出的过程中所经受的变换。(描绘数据在软件中流动和被处理的逻辑过程),设计时只考虑系统必须完成的基本逻辑功能。画数据流图的基本目的:利用它作为交流信息的工具;作为分析和设计的工具。符号:数据源点/终点,变换数据的处理,数据存储,数据流数据存储是处于静止状态的数据流,数据流是处于运动中的数据。

数据字典是关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合。数据字典包含内容:数据流,数据流分量,数据存储,处理数据字典用途:分析阶段的工具。

逆向需求说明软件系统不应该做什么分析系统常用图形工具:层次方框图、Warnier图需求分析时要把数据结构规范化。

结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。把分析过程中得到的有关数据元素记录在数据字典中,对算法的简明描述记录在IPO图中。快速建立软件原型是最好的需求分析技术。为快速构建和修改原型,使用三种工具和方法:第四代技术可重用的软件构件形式化规格说明和原型环境概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。

数据对象是软件必须理解的复合信息的抽象。

用“范式”定义消除数据冗余的程度,第一范式冗余最大。

状态是任何可被观察到的系统行为模式,一个状态代表系统的一种行为模式。

状态图的活动表中经常使用entry,exit,do三种标准事件。I PO图是输入、处理、输出图,处理框中列出处理的次序暗示了执行的顺序。

验证软件需求的正确性:一致性、完整性、现实性、有效性结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务软件结构(即由模块组成的层次系统)可以用层次图或结构图描绘。

随着模块数增加,设计模块间接口所需工作量也增加。

逐步求精是规格说明技术、设计和实现技术的基础。逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

耦合强弱取决于模块接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。

模块间的耦合程度影响系统的可理解性、可测试性、可靠性和可维护性内聚比耦合更重要。

深度表示软件结构中控制的层数,能粗略标识系统大小。宽度是软件结构内同一层次上的模块总数的最大值。扇出过大意味

着模块过分复杂,扇入越大则共享该模块的上级模块越多(好)。好的软件结构通常顶层扇出高,中层扇出较少,底层模块有高扇入。

面向数据流的设计方法把信息流映射成软件结构,信息流的类型(变换流、事务流)决定映射方法。

经典程序设计:只允许使用顺序、IF_THEN_ELSE、DO_WHILE 扩展的结构程序设计:外加DO_CASE、DO_UNTIL修改的结构程序设计:外加BREAK 系统响应时间的两个属性:长度、易变性用户界面设计是一个迭代过程。

过程涉及工具:程序流程图、盒图、PAD图、判定表、判定树、过程设计语言PDL 程序复杂度定量度量:

1、McCabe方法(流图,也叫程序图):流图中的区域数=环形复杂度=判定节点数+1程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度。所以它是对测试难度的定量度量,也能对软件可靠性预测。

2、Halstead方法(根据程序中运算符和操作数总数来度量)编码和测试统称为实现。

程序的质量主要取决于软件设计的质量。

测试的目的:发现软件中的错误,根本任务:保证软件质量调试的目的:诊断并改正测试中发现的错误效率主要指处理机时间和存储器容量两方面。

用户角度:最严重的错误是导致程序不能满足用户需求的错误。

一旦完成了需求模型就可以着手制定测试计划,建立了设计模型之后就可以立即开始设计详细的测试方案。

最佳测试效果:有最大可能性发现错误的测试模块组装测试两种方法:非渐增式测试(分别测试每个模块)&渐增式测试(把下一个要测试的同已经测好的结合起来测试)渐增方式分自顶向下集成和自底向上集成为了保证加入模块没有引进新的错误,可能需要进行回归测试自顶向下测试方法主要优点:不需要测试驱动程序,能够在测试阶段的早期发现接口错误。

回归测试:重新执行已经做过的测试的某个子集。它用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误。

确认测试的目的:验证软件的有效性。

如果软件的功能和性能如同用户期望的,就是有效的确认测试以用户为主,重要内容是复查软件配置。

条件测试的目的不仅是检测程序条件中的错误,而且是检测程序中的其他错误。

在一段程序中已经发现的错误数往往和尚未发现的错误数成正比。

等价划分法和边界值分析法都只孤立地考虑各个输入数据的测试功效,而未考虑多个输入数据的组合效应。

软件工程知识点总结

软件工程知识点总结-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)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

2018软件工程工作总结3篇

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

化工分离工程知识点培训资料

1.什么叫相平衡?相平衡常数的定义是什么? 由混合物或溶液形成若干相,这些相保持物理平衡而共存状态。热力学上看物系的自由焓最小;动力学上看相间表观传递速率为零。Ki=yi/xi 2.简述分离过程的特征?什么是分离因子,叙述分离因子的特征和用途。 答:分离过程的特征:分离某种混合物成为不同产品的过程,是个熵减小的过程,不能自发进行,因此需要外界对系统作功(或输入能量)方能进行。 分离因子表示任一分离过程所达到的分离程度。定义式:i j ij i j y y x x α= 3.请推导活度系数法计算汽液相平衡常数的关系式。 汽液相平衡关系:L i V i f f ??= 汽相:P y f i V i V i φ??= 液相:OL i i i L i f x f γ=? 相平衡常数:P f x y K V i OL i i i i i φγ?== 4.请写出活度系数法计算汽液相平衡常数的关系式,并指出关系式中各个物理量的含义 5.什么是设计变量,如何通过各单元设计变量确定装置的设计变量。 在设计时所需要指定的独立变量的数目,即设计变量。 )2(+-+∑-∑=∴C n N N N N r e c e v u i ① 在装置中某一单元以串联的形式被重复使用,则用r N 以区别于一个这种单元于其他种单元的联结情况,每一个重复单元增加一个变量。 ② 各个单元是依靠单元之间的物流而联结成一个装置,因此必须从总变量中减去那些多余的相互关联的物流变量数,或者是每一单元间物流附加(C+2)个等式。 6. 什么叫清晰分割法,什么叫非清晰分割法?什么是分配组分与非分配组分?非关键组分是否就一定是非分配组分? 答:清晰分割法指的是多组分精馏中馏出液中除了重关键组分(HK)之外,没有其它重组分;釜液中除了轻关键组分(LK)之外,没有其它轻组分。非清晰分割表明各组分在顶釜均可能存在。 在顶釜同时出现的组分为分配组分;只在顶或釜出现的组分为非分配组分。

软件工程课程设计心得总结

软件工程课程设计个人总结 学期就快要结束了,到了最后一周居然还有软件工程课程设计,还要考试真的有点忙啊,不管怎样还是好好干吧,把对工程的理论研究、学习成果用于实践也是一种检验学习成果和提升工程能力的有效手段嘛。 工作内容安排 软件工程课程设计的第一天拿到题目,听取老师对于课程设计的要求、要完成的工作、预期要达到的效果和注意事项。然后分组、讨论和确定选题。这真正的课程设计才算开始了,经过组长,组员的反复研究、论证后一致决定选择:实习题目4:开发一个基于Web的BBS系统,包含一般BBS所具有的功能,如用户注册、用户信息管理、发贴功能、贴子管理、主题词查询、用户信息修改和查询等。 这个题目对于现代化的网络交流来说发展的成熟而且符合当代互联网大众的网络需求,符合现代网络对信息分享讨论的爱好,我们一致预测在今后很长的一段时间内也将会是非常流行的一种交流介质。 确定选题后我们开始软件开发的第一步,需求分析,详细设计等内容,分块分工完成模块,我分到的主要部分就是分析论坛里面的帖子内容,用户的爱好,然后解决用户的索引需求,把用户的索引需求智能的、友好的呈现给用户,把这部分的代码编写,测试,把用户界面做好就是我接下来几天的工作内容。 俗话说:磨刀不误砍柴工,要想把我的这部分内容做好,做得完美,我的好好的分析一下,对全组对整个系统的需求分析的基础上又认真分析了本部分的内容和本部分要实现的功能,对本部分实现的主要思想理清,认真设计界面,还有对队员们的模块能有效的结合起来,让他们的模块也能有效的供我使用,做好我的接口也方便其他模块与此的衔接。 问题与解决 在本次课程设计中遇到了好多前所未有的问题,第一次接触HTML网页开发,第一次邂逅JSP web应用程序开发,第一次有了原来开发应用程序是需要数据库的,对于这些都是第一次接触,需要了解HTML的基本语法,需要学习JSP web 应用程序web app的开发方法,需要实践配置数据库TOMCAT、SQL sever,居然有这么多的东西需要从头来,对于这些方面我就像一张崭新的白纸,怎么能在短短的四五天时间内将这张白纸绘成一幅栩栩如生的画卷呢,这是我们面对的亟待解决的问题。 为了解决这一系列的问题,我们没有找借口,我们没有懒惰,我们更没有放弃,而是迎难而上,到图书馆“大采购”求资料,找到想要的,真想把图书馆搬到课程设计实验室。接下来就是根据我们的需求分析,概要设计,详细设计等内容分模块编写网页源代码,修复bug,测试代码,连接数据库这样我们的全新的基于web的BBS论坛就成功上线了。

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 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.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 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、说明分离过程与分离工程的区别 ?2、实际分离因子与固有分离因子的主要不同点是什么 ?3、怎样用分离因子判断分离过程进行的难易程度 ?4、比较使用ESA与MSA分离方法的优缺点。 ?5、按所依据的物理化学原理不同,传质分离过程可分为那两类 ?6、分离过程常借助分离剂将均相混合物变成两相系统,举例说明分离剂的类型. 1、下列哪一个是机械分离过程() (1)蒸馏(2)吸收(3)膜分离(4)离心分离 2、下列哪一个是速率分离过程() (1)蒸馏(2)吸附(3)膜分离(4)沉降 3、下列哪一个是平衡分离过程() (1)蒸馏(2)热扩散(3)膜分离(4)离心分离 1、分离技术的特性表现为其()、()和()。 2、分离过程是(混合过程)的逆过程,因此需加入()来达到分离目的。 3、分离过程分为()和()两大类 4、分离剂可以是()或(),有时也可两种同时应用。 5、若分离过程使组分i及j之间并没有被分离,则()。 6、可利用分离因子与1的偏离程度,确定不同分离过程分离的()。 7、平衡分离的分离基础是利用两相平衡(组成不等)的原理,常采用()作为处理 手段,并把其它影响归纳于()中。 8、传质分离过程分为()和()两类。 9、速率分离的机理是利用溶液中不同组分在某种()作用下经过某种介质时的() 差异而实现分离。 10、分离过程是将一混合物转变为组成()的两种或几种产品的哪些操作。 11、工业上常用()表示特定物系的分离程度,汽液相物系的最大分离程度又称为 ()。 12、速率分离的机理是利用传质速率差异,其传质速率的形式为()、()和()。 13、绿色分离工程是指分离过程()实现。 14、常用于分离过程的开发方法有()、()。 1、分离过程是一个() a.熵减少的过程; b.熵增加的过程; c.熵不变化的过程; d. 自发过程 2、组分i、j之间不能分离的条件是() a.分离因子大于1; b.分离因子小于1; c.分离因子等于1 3、平衡分离的分离基础是利用两相平衡时()实现分离。 a. 组成不等; b. 速率不等; c. 温度不等 4、当分离因子()表示组分i及j之间能实现一定程度的分离。 a. ; b. ; c. 5.下述操作中,不属于平衡传质分离过程的是() a. 结晶; b. 吸收; c. 加热; d. 浸取。 6、下列分离过程中属机械分离过程的是(): a.蒸馏; b. 吸收; c. 膜分离; d.离心分离。 7、当分离过程规模比较大,且可以利用热能时,通常在以下条件选择精馏法():

软件工程学习心得作业

软件工程作业

软件工程心得体会 通过这半学期我对软件工程的学习,老师在课堂上从软件工程的基础到用户的需求分析,最后到黑盒白盒测试通过自身做过的一些案例,生动形象的讲解了软件工程这门本身枯燥乏味的课程,这不仅增强了学生学习的积极性,也通过让我们自己去做一些需求分析,我们从中学到了许多知识。 老师不仅仅在课堂上对我们悉心的知道,在课外还让我们多看一些有关软件工程方面最前沿的理论,通过这段时间我读了《软件工程——实践者的研究方法》、《件工程案例》这两本书,通过自己的读书学习,我有以下心得体会。 众所周知软件对于一个公司,一个企业乃至一个国家都是十分重要的,因此一个软件的维护也十分重要,下面我就讲一些关于软件维护的知识。 维护阶段是软件生存期中时间最长的一个阶段,也是花费的精力和费用最多的一个阶段。由于操作系统软件和基础软件版本升级或应用管理系统软件的不断开发、完善,需要对软件进行维护。但当运行环境改变或者系统功能、性能需求发生变化,使原软件不能通过维护的手段满足用户需求时,则需要进行软件更新。 1.软件维护的类型: 软件的开发过程对软件的维护有较大的影响。若不采用软件工程的方法开发软件,则软件只有程序而无文档,维护工作非常困难,这是一种非结构化的维护。若采用软件工程的方法开发软件,则各阶段都有相应的文档,容易进行维护工这是一种结构化的维护。非结构化维护活动只能从阅读、理解和分析源程序开始,这样做难以弄清系统功能、软件结构、数据结构等问题,常常造成误解。同时由于没有测试文档,也不可能进行回归测试很难保证程序的正确性。这种软件维护

方法仅在软件工程时代之前采用。在进行结构化维护活动时,需从评价需求说明开始,弄清楚软件功能、性能上的改变;对设计说明文档进行评价,并进行修改和复查;根据设计的修改,进行程序的变动;根据测试文档中的测试用例进行回归测试;最后,把修改后的软件再次交付使用。这对于减少精力、减少花费和提高软件维护效率有很大的作用。 2.软件维护的困难: 软件维护的困难主要是由于软件需求分析和开发方法的缺陷造成的。软件生存周期中的开发阶段没有严格而科学的管理和规划,就会引起软件运行时的维护困难。这种困难表现在如下几个方面。 (1)读懂别人的程序是困难的。 (2)文档的不一致性。这种不一致性表现在各种文档之间的不一致以及文档与程序之的不一致。 (3)软件开发和软件维护在人员和时间上存在差异。 (4)软件维护不是一项吸引人的工作。 3. 软件维护的费用: 软件维护的费用在总费用中的比重是不断增加的,它在1970 年占35%~40%,1980 年上升到40%~60%,1990 年上升到70%~80%。软件维护费用不断上升,这只是软件维护有形的代价,另外还有无形的代价,即要占用更多的资源。由于大量软件的维护活动要使用较多的硬件、软件和软件人员等资源,这样一来,投入新的软件开发的资源就因不足而受到影响。由于维护时的改动,在软件中引入了潜在的故障,从而降低了软件的质量。 4.软件维护的分类

精选软件工程师工作总结

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

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

《生物分离工程》知识点整理(DOC)讲解学习

《生物分离工程》知识点整理(D O C)

生物分离工程 第一章(绪论) 生物分离工程的定义和过程 生物分离工程定义(名词解释): 为提取生物产品时所需的原理、方法、技术及相关硬件设备的总称,指从发酵液、动植物细胞培养液、酶反应液和动植物组织细胞与体液等中提取、分离纯化、富集生物产品的过程。 过程: 目标产物捕获 目标产物初步纯化(萃取、沉淀、吸附等方法) 目标产物高度纯化和精制 细胞分离三种手段:重力沉降离心沉降过滤 第二章 离心分离原理和方法: 原理:离心沉降是在离心力的作用下发生的。 单位质量的物质所受到的离心力: 式中: r为离心半径,即从旋转轴心到沉降颗粒的距离; ω为旋转角速度; N为离心机的转数,s-1

方法:(1)差速离心分级 (2)区带离心(差速区带离心、平衡区带离心) 离心分离设备: 离心力(转速)的大小:低速离心机、高速离心机、超离心机 按用途:分析性、制备性 按工业应用:管式离心机、碟片式离心机 实验室用以离心管式转子离心机,离心操作为间歇式 悬浮液的预处理方法和目的: 方法: 1.加热:最简单和最廉价的处理方法。黏度、促凝聚、固体成分体积、破坏凝胶结构、增加空隙率 调pH值:方法简单有效、成本低廉 2.凝聚:在凝聚剂(如铝盐、铁盐、石灰和NaCl)作用下,细胞蛋白质等胶体去稳定,并聚集成1mm大小的凝聚块的过程。(机理:破坏双电层,水解后胶体吸附,氢键结合等) 3.絮凝:在絮凝剂高分子聚合电解质的作用下,胶体颗粒和聚合电解质交连成网,形成10mm大小的絮凝团过程。(机理:絮凝剂主要起中和电荷、桥架和网络作用)

4.惰性助滤剂:一种颗粒均匀、质地坚硬的粒状物质,用于扩大过滤表面的适应范围,减轻细小颗粒的快速挤压变形和过滤介质的堵塞。(使用方法:预涂层;按一定比率混合。 助滤剂种类:硅藻土、纤维素、未活化的炭、炉渣、重质碳酸钙等。) 目的:提高过滤速度和过滤质量是过滤操作的目标。 各种细胞破碎技术原理和优缺点: 原理:许多生物产物在细胞培养过程中保留在细胞内,需破碎细胞,使目标产物选择性地释放到液相。破碎的细胞或其碎片去除后,上清液用于进一步的分离纯化。 细胞破碎技术分为:机械破碎法、化学法、物理渗透法 机械法和化学法的比较 机械破碎法缺点: A、高能、高温、高噪音、高剪切力,易使产品变性失活; B、非专一性,胞内产物均释放,分离纯化困难; C、细胞碎片大小不一,难分离。 化学破碎法缺点: A、费用高; B、化学或生化试剂的添加引起新的污染; C、破碎速度低,效率差,一般只有有限的破碎,常与机械 法连用。 物理渗透法

软件工程知识点汇总

软件工程知识点汇总 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.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程实训总结

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

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

(完整版)分离工程试题总结(最终版)

一、填空题 1、分离作用是由于加入(分离剂)而引起的,因为分离过程是(熵减过程)。 2、分离因子(等于1),则表示组分i 及j 之间不能被分离。 3、分离剂可以是(能量ESA )或(物质MSA ),有时也可两种同时应用。 4、速率分离的机理是利用溶液中不同组分在某种(推动力)作用下经过某种介质时的(传质速率)差异而实现分离。 5、萃取精馏塔在萃取剂加入口以上需设(萃取剂回收段)。 6、多组分精馏根据指定设计变量不同可分为(设计)型计算和(操作)型计算。 7、在塔顶和塔釜同时出现的组分为(分配组分)。 8、流量加合法在求得 ij x 后,由(H )方程求 j V ,由(S )方程求 j T 。 9、对窄沸程的精馏过程,其各板的温度变化由(组成的改变)决定,故可由(相平衡方程)计算各板的温度。 10、三对角矩阵法沿塔流率分布假定为(衡摩尔流)。 11、精馏过程的不可逆性表现在三个方面,即(通过一定压力梯度的动量传递),(通过一定温度梯度的热量传递或不同温度物流的直接混合)和(通过一定浓度梯度的质量传递或者不同化学位物流的直接混合)。 12、对多组分物系的分离,应将(分离要求高)或(最困难)的组分最后分离。 13、热力学效率定义为(系统)消耗的最小功与(过程)所消耗的净功之比。 14、分离最小功是分离过程必须消耗能量的下限它是在分离过程(可逆)时所消耗的功。 15、在相同的组成下,分离成纯组分时所需的功(大于)分离成两个非纯组分时所需的功 16 件即处于两相区,可通过(物料平衡和相平衡)计算求出其平衡汽液相组成。 17、分离过程可分为 机械分离 和传质分离两大类。其中传质分离过程的特点是过程中有 质量传递 现象发生。常见的传质分离过程有 精馏 、 吸收 、 萃取 。 18、在泡点法严格计算过程中,除用修正的M-方程计算 液相组成 外,在内层循环中用S- 方程计算 级温度 ,而在外层循环中用H-方程计算 汽相流率 。 19、影响气液传质设备处理能力的主要因素有 液泛 、 雾沫夹带 、 压力降 和 停留时间 。 20、常见的精馏节能技术有 多效精馏 、 热泵精馏 、 采用中间冷凝器和中间再沸器的精馏 和 SRV 精馏 。 21、常压下 苯-甲苯 物系的相平衡常数更适合于用公式Ki= pis/ P 计算。 22、清晰分割法的基本假定是:馏出液中除了 重关键组分 外没有其他 重组分 ,而釜液中除了 轻关键组分 外没有其他 轻组分 。 23、下列各单元中,混合器 单元的可调设计变量数为0 , 分配器 单元的可调设计变量数为1。 二、简答题 1、怎样判断混合物在T ,P 下的相态,若为两相区其组成怎样计算? 答:对进料作如下检验 = 1 B T T = 进料处于泡点,0=ν i i Z k ∑ > 1 T >B T 可能为汽液两相区,ν>0 < 1 T 1 T D T 进料为过热蒸汽 2、精馏过程的不可逆性表现在哪些方面?节省精馏过程能耗有哪些措施? 3、根据两相状态不同 , 平衡分离过程可分成几类 (1) 假定有一绝热平衡闪蒸过程,所有变量表示在所附简图中。求: 1) 总变更量数Nv; 2) 有关变更量的独立方程数Nc ; 3) 设计变量数Ni;

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 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相差越远,越容易分离;反之越难分离。 按所依据的物理化学原理不同,传质分离过程可分为哪两类? 答:平衡分离过程:采用平衡级(理论板)作为处理手段,利用两相平衡组成不相等的原理,即达到相平衡时,原料中各组分在两个相中的不同分配,并将其它影响参数均归纳于级效率之中,如蒸发、结晶、精馏和萃取过程等。大多数扩散分离过程是不互溶的两相趋于平衡的过程。速率分离过程:通过某种介质,在压力、温度、组成、电势或其它梯度所造成的强制力的推动下,依靠传递速率的差别来操作,而把其它影响参数都归纳于阻力之中。如超滤、反渗透和电渗析等。通常,速率控制过程所得到的产品,如果令其互相混合,就会完全互溶。 分离过程常借助分离剂将均相混合物变成两相系统,举例说明分离剂的类型。 答:分离过程的原料可以是一股或几股物料,至少必须有两股不同组成的产品,这是由分离过程的基本性质决定的。分离作用是由于加入(媒介)而引起的,分离剂可以是能量(ESA)或物质(MSA),分离剂有时也可两种同时应用。例如,要把糖水分为纯净的糖和水需要供给热量,使水分蒸发,水蒸气冷凝为纯水,糖在变浓的溶液中结晶成纯糖。或供给?令量,使纯水凝固出来,然后在较高剃温度下使其隔出化;这里所加入的分离剂为ESA。也可将糖水加压,通过特殊的固体膜将水与糖分离。这里所加入的分NEW口e录制小视频离剂为MSA。此外,ESA还可以是输入或输出的功,以驱动泵、压缩机;在吸收、萃取、吸附、离子交换、液膜固膜分离中,均须加入相应的MSA。

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

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

相关文档
最新文档