1、软件工程复习资料1. 软件危机产生的因素(1) 软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机上试运营之前软件开发过程的进展情况较难衡量。很难检查开发的对的性且软件开发的质量也较难评价。因此控制软件开发过程相称困难。此外在软件运营过程中发现错误很也许是碰到了一个在开发期间引入的但在测试阶段没有可以检测出来的错误,所以软件维护经常意味着修改本来的设计。这样维护的费用十分惊人,客观上使得软件较难维护。 (2) 软件开发的过程是多人分工合作分阶段完毕的过程,参与人员之间的沟通和配合十分重要。但是,相称多的软件开发人员对软件的开发和维护存在不少错误的观念。在实践的过程
2、中没有采用工程化的方法,或多或少采用了一些错误的方法和技术。这是导致软件危机的重要因素。 (3) 开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的规定。对用户的规定没有完整准确的结识就急于编写程序。这是许多软件开发失败的另一重要因素。事实上,许多用户在开始时并不能准确具体地叙述他们的需要。软件人员需要做大量进一步细致的调查研究工作,反复多次与用户交流信息,才干真正全面、准确、具体地了解用户的规定。 (4) 软件管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。一方面是文档缺少一致性和完整性,从而失去管理的依据。由于程序只是完整软件产品的一个组成部分。一个软件产品
3、必须由一组的配置组成,不能只重视程序而应当特别重视软件配置。另一方面,由于成本估计不准确,资金分派混乱,人员组织不合理,进度安排无序,导致软件技术无法实行。 (5) 在软件的开发和维护关系问题上存在错误的观念。软件维护工作通常是在软件完毕之后进行的,因此是极端艰巨复杂的工作,需要花费很大的代价。所以做好软件的定义工作是减少软件成本,提高软件质量的关键。假如软件人员在定义阶段没有对的、全面地理解用户规定,直到测试阶段才发现软件产品不完全符合用户的需要,这时再修改就为时已晚了。此外,在软件生存期的不同结点进行修改需要付出的代价是很不相同的。在初期引入变更涉及面较小,付出的代价较低,在开发的中期软件
4、配置的许多成分已经完毕,引入一个变更也许需要对所有已完毕的配置成分都做相应的修改,不仅工作量大,并且逻辑上更复杂。因而付出的代价剧增。在软已经完毕后再引入变更。则需要付出更高得多的代价。因此,必须把软件维护的观念引入软件开发的各个阶段,建立起软件开发与维护的对的关系。2.软件工程的概念 软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把通过时间考验而证明对的的管理技术和当前可以得到的最佳的技术方法结合起来。2. 软件工程的三要素方法、工具和过程3. 软件工程的基本原理(1) 用分阶段的生命周期计划严格管理(2) 坚持进行阶段评审(3) 实行严格的产品控
5、制(4) 采用现代程序设计技术(5) 结果应能清楚地审查(6) 开发小组的人员应当少而精(7) 认可不断改善软件工程实践的必要性4. 软件生命周期问题定义可行性研究需求分析总体设计具体设计编码和单元测试综合测试软件维护5. 瀑布模型存在的问题靠文档驱动,用户不能全面地结识动态的软件产品。且过于抱负化,也许出现设计上的错误。缺少灵活性。6. RUP统一过程的四个阶段RUP模型将软件开发过程分为4个大的阶段,分别是先启、精化、(构建)和产品化。7. 可行性分析研究的重要目的用最小的代价在尽也许小的时间内,拟定问题是否能解决,从而拟定问题是否值得去解决。 8. 需求分析阶段所有分析方法需要遵守的准则
6、(1) 必须理解并描述问题的信息域,根据这条准则必须建立数据模型。(2) 必须定义软件应完毕的功能,这条准则规定建立功能模型。(3) 必须描述作为外部事件结果的软件行为,这条准则规定建立行为准则。(4) 必须对描述信息,功能和行为的模型进行分解,用层次的方式展示细节。9. 需求分析的目的准确的回答“系统必须做什么”这个问题10. 数据字典的作用和概念概念:数据字典是指对数据的数据项、数据结构、数据流、数据存储、解决逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出具体的说明。作用:数据字典和数据流图共同构成系统的逻辑模型。没有流图数据字典难以发挥作用。没有数据字典,数据流图就
7、不严格。11. 数据流图的图形元素 数据流 数据的源点或终点变换数据的解决 数据存储12. E-R图(非画图题)在ER图中有如下四个成分:矩形框:表达实体,在框中记入实体名。菱形框:表达联系,在框中记入联系名。椭圆形框:表达实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下划一下划线。连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体连线方向各写N,M。)构成E-R图的3个基本要素是实体型、属性和联系,其表达方法为:实
8、体一般认为,客观上可以互相区分的事物就是实体,实体可以是具体的人和物,也可以是抽象的概念与联系。关键在于一个实体能与另一个实体相区别,具有相同属性的实体具有相同的特性和性质。用实体名及其属性名集合来抽象和刻画同类实体。在E-R图中用矩形表达,矩形框内写明实体名;比如学生张三、学生李四都是实体。假如是弱实体的话,在矩形外面再套实线矩形。属性实体所具有的某一特性,一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。在E-R图中用椭圆形表达,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。假如是多值属性的话,在椭圆形外面再套实线椭圆。假如是派生属性则用虚线
9、椭圆表达。联系联系也称关系,信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表达,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。假如是弱实体的联系则在菱形外面再套菱形13. 需求分析和软件设计两个阶段的目的需求分析:拟定对系统的综合规定分析系统的数据规定导出系统的逻辑模型修正系统开发计划软件设计:用比较抽象概括的方式拟定目的系统如何完毕预定任务。14. 信息隐藏的
10、概念在设计和拟定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。15. 耦合的概念和分类概念:耦合性是程序结构中各个模块之间互相关联的度量.它取决于各个模块之间的接口的复杂限度、调用模块的方式以及哪些信息通过接口.分类:内容耦合,公共耦合,外部耦合,控制耦合,标记耦合,数据耦合,非直接耦合,顺序耦合(耦合度由高到低排列)16. 内聚的概念和分类概念:内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。分类:偶尔内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚(内聚度由弱到强排列)17. 模块化的概念概念:把程
11、序划提成独立命名且可独立访问的模块,每个模块完毕一个子功能,把这些模块集成起来构成一个整体,可以完毕指定的功能满足用户的需求。18. 具体设计的任务拟定如何具体的实现用户需要的软件系统,也就是要设计出程序的蓝图(书上)(网上)(1)为每个模块进行具体的算法设计。用某种图形、表格、语言等工具将每个模块解决过程的具体算法描述出来。(2)为模块内的数据结构进行设计。对于需求分析、概要设计拟定的概念性的数据类型进行确切的定义。(3)为数据结构进行物理设计,即拟定数据库的物理结构。物理结构重要指数据库的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。(4)其他设计:根据软件系统
12、的类型,还也许要进行以下设计:代码设计。为了提高数据的输入、分类、存储、检索等操作,节约内存空间,对数据库中的某些数据项的值要进行代码设计。输入/输出格式设计。人机对话设计。对于一个实时系统,用户与计算机频繁对话,因此要进行对话方式、内容、格式的具体设计。(5)编写具体设计说明书。(6)评审。对解决过程的算法和数据库的物理结构都要评审。19. 设计复审的目的和作用避免后期付出高代价20. 鉴定树,鉴定表鉴定树和鉴定表是用于描述结构化分析方法中(数据加工)环节的工具21. 结构化程序设计的三种结构顺序,选择,循环22. 画N-S图和pad图Pad:N-S图23. 软件测试的目的发现程序中的错误而
13、执行程序的过程24. 软件测试的方法(黑盒&白盒)黑盒:把程序看做一个黑盒子,完全不考虑程序的内部结构和解决过程。也就是说,黑盒测试是在程序接口进行的测试,他只检查程序功能是否能按规格说明书的规定正常使用,程序是否能适当的接受输入数据并产生争取的输入信息,程序测试过程中能否保持外部信息的完整性。黑盒测试又被称为功能测试。白盒:可以把程序当作装在一个透明白盒子里,测试者完全知道程序的结构和解决算法。这种方法按照程序内部的逻辑测试程序,检测程序的重要执行通路是否都能按预定规定对的工作。白盒测试又被称为结构测试。25. 软件测试的环节(1)单元测试(也称模块测试):针对软件设计的基本单元程序模块,进
14、行对的性检查的测试工作。目的在于发现各个模块内部也许存在的各种差错。单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行、独立地进行测试;(2)集成测试(也称组装测试,联合测试):在单元测试的基础上,将所有模块按设计规定集成在一起进行测试,以检查总体设计中各模块间的接口设计问题、模块之间的互相影响、上层模块存在的各种差错及全局数据结构对系统的影响等方面。(3)确认测试(也称验收测试,有效性测试):重要检查软件的功能和性能是否与需求说明书中的规定一致。(4)系统测试:将软件系统作为一个元素,放入整个实际的计算机系统中,与计算机硬件、其他软件、使用人员等系统元素结合在一起,在实际使用环境下
15、进行综合全面的测试。26. 软件测试用例的组成测试用例由输入数据和预期的输出数据组成。27. 根据题目规定设计测试用例请参考下方题目(3)28. 软件维护的分类(4种)(1)完善性的维护。完善性维护就是在应用软件系统使用期间为不断改善和加强系统的功能和性能,以满足用户日益增长的需求所进行的维护工作。在整个维护工作量中,完善性维护居第一位。(2)适应性维护。适应性维护是指为了让应用软件系统适应运营环境的变化而进行的维护活动。适应性维护工作量约占整个维护工作量的25%。(3)纠错性维护。纠错性维护的目的在于,纠正在开发期间未能发现的遗留错误。对这些错误的相继发现,对它们进行诊断和改正的过程称为纠错
16、性维护。这类维护约占总维护工作量的20%。(4)防止性维护。其重要思想是维护人员不应被动地等待用户提出规定才做维护工作,而应当选择那些尚有较长使用寿命。29. 面向对象的特性封装,集成,多态30. 面向对象的建模语言UML请仔细复习书上第九章31. 面向对象的动态模型包含哪两种图型请仔细复习书上第九章32. 类的概念类 就是对具有相同数据和相同操作的的一组相似对象的定义。33. 类图的元素名称 ,属性 ,操作34. UML中对象之间类的关系(空心三角形,菱形分别表达什么)在UML图中,类之间的关系有如下几种: 关联关系:Association黑三角形聚合关系:Aggregation空心菱形 组
17、合关系:Composition 依赖关系:Dependency带箭头的虚线泛化关系:Generalization一端为空心三角形的虚线实现关系:Realization35. 画用例图参考下方题目最后一题36. 用例图图形元素37. 方框代表系统 椭圆代表用例 线条人代表行为者38. 对象模型的五个层次主题层、类&对象层、结构层、属性层、服务层。39. 面向对象分析方法的五个基本环节第一步,拟定对象和类。这里所说的对象是对数据及其解决方式的抽象,它反映了系统保存和解决现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它涉及如何在一个类中建立一个新对象的描述。第二步,拟定结构
18、(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。第三步,拟定主题(subject)。主题是指事物的总体概貌和总体分析模型。第四步,拟定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。第五步,拟定方法(method)。方法是在收到消息后必须进行的一些解决方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增长、修改、删除和选择一个方法自身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。40
19、. UML的协助图和时序图时序图定义 : 描述了对象之间传递消息的时间顺序, 用来表达用例中的行为顺序, 是强调消息时间顺序的交互图;时序图描述的事物: 时序图描述系统中类和类之间的交互, 将这些交互建模成消息互换, 时序图描述了类以及类之间的互换以完毕的盼望行为的消息, 时序图中每条消息都代表了类的一个操作 或者 引起状态机改变的触发事件;时序图表达 : 参与交互的对象在时序图顶端水平排列, 每个对象的底端绘制了一条垂直虚线, 对象A像对象B发送消息, 用一条带箭头的实线表达, 该实线起始于对象A底部的虚线, 终止于对象B底部的虚线; 实线箭头水平放置, 越靠近顶端越早被发送.时序图轨迹 :
20、 时序图提供了随时间推移的, 清楚的 可视化的轨迹;时序图组成 : 时序图涉及四个元素 对象(Object), 生命线(Lifeline), 激活(Activation), 消息(Message);协作图 : 协作图是 一种 类图, 包含 类元角色 和 关联角色, 不仅仅是 类元 和 关联;- 强调 : 强调参与交互的 各个对象的结构信息 和 组织;协作图建模对象 : 对有交互的对象 和 这些对象之间的关系建模, 不参与交互的对象及它们的关系忽略;协作图内容 : 协作图中表现了 类操作中用到的参数, 布局变量, 操作中的永久链;对象图扩展 : 协作图可以看做对象图的扩展, 该图展示了对象之间的
21、关联, 显示出了对象间的消息传递;41. 软件重用的定义和层次(三个层次)定义:软件重用,是指在两次或多次不同的软件开发过程中反复使用相同或相似软件元素的过程。层次:(1)知识重用(例如,软件工程知识的重用)。(2)方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用)。(3)软件成分的重用。42. 面向对象设计的启发规则1、 设计结果应当清楚易懂2、 一般特殊结构的深度适当3、 设计简朴的类4、 使用简朴的协议5、 使用简朴的服务6、 把设计变动减至最小43. 软件质量的的概念概括地说,软件质量就是“反映实体满足明确的和隐含的需求的能力的特性的总和”。具体地说,软件质量是软件符
22、合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特性相一致的限度。44. 软件可移植性把程序从一种硬件配置和软件系统环境转移到另一种配置和环境时,需要的工作量多少。有一种度量方法是:用本来的程序设计和调试的成本除移植时需要的费用44.软件工程管理的定义45. 能力成熟度模型作用1.初始级软件过程的特性是无序的,有时甚至是混乱的。2.可反复级软件机构建立了基本的项目管理过程(过程模型),可跟踪成本、进度、功能和质量。3.已定义级软件机构已经定义了完整的软件过程(过程模型),软件过程已经文档化和标准化。4.已管理级软件机构对软件过程(过程模型和过程实例)
23、和软件产品都建立了定量的质量目的,所有项目的重要的过程活动都是可度量的。5.优化级软件机构集中精力连续不断地改善软件过程。这一级的软件机构是一个以防止出现缺陷为目的的机构,它有能力辨认软件过程要素的薄弱环节,并有足够的手段改善它们。46. 基线的概念基线(baseline)通过正式审查和认可作为以后进一步演进的基础,并且只有通过正式的更改控制规程才干进行更改的规格说明或产品。简而言之 基线就是通过了正式复审的软件配置项。47. 关键途径的概念关键事件:EET(最早时刻)=LET(最迟时刻)48. 度量软件规模的常用技术代码行技术估算方法:由多名有经验的软件工程师分别做出估计。每个人都估计程序的
24、最小规模(a)、最大规模(b)和最也许的规模(m),分别算出这3种规模的平均值之后,再用下式计算程序规模的估计值:L=a+4m+b6单位:LOC或KLOC。代码行技术的优点:代码是所有软件开发项目都有的“产品”,并且很容易计算代码行数;有大量参考文献和数据。代码行技术的缺陷:源程序仅是软件配置的一个成分,由源程序度量软件规模不太合理;用不同语言实现同一个软件所需要的代码行数并不相同;不合用于非过程性语言。功能点技术功能点技术依据对软件信息域特性和软件复杂性的评估结果,估算软件规模。这种方法用功能点(FP)为单位度量软件规模。1.信息域特性输入项数(Inp)、输出项数(Out)、查询数(Inq)
25、、主文献数(Maf)、外部接口数(Inf)每个特性根据其复杂限度分派一个功能点数,即信息域特性系数a1,a2,a3,a4,a52.估算功能点的环节(1)计算未调整的功能点数UFPUFP=a1Inp+a2Out+a3Inq+a4Maf+a5Inf(2)计算技术复杂性因子TCF技术因素对软件规模的综合影响限度DI:DI=i=114Fi技术复杂性因子TCF由下式计算:TCF=0.65+0.01DI由于DI的值在070之间,所以TCF的值在0.651.35之间。(3)计算功能点数FPFP=UFPTCF功能点技术优点:与所用的编程语言无关,比代码行技术更合理。功能点技术缺陷:在判断信息域特性复杂级别和技
26、术因素的影响限度时主观因素较大,对经验依赖性较强。49. 评价软件质量的因素(常见的4个)可维护性,可靠性,可理解性,效率50.COCOMO2模型3个层次的估算模型:应用系统组成模型:这个模型重要用于估算构建原型的工作量,模型名字暗示在构建原型时大量使用已有的构件。初期设计模型:这个模型合用于体系结构设计阶段。后体系结构模型:这个模型合用于完毕体系结构设计之后的软件开发阶段。COCOMO2使用的5个分级因素:项目先例性、开发灵活性、风险排除度、项目组凝聚力、过程成熟度1. 请使用N-S图、PAD图描述下列程序的算法。(1)在数据A(1)A(10)中求最大数和次大数。2. 某公司为本科以上学历的
27、人重新分派工作,分派原则如下:(1)假如年龄不满18岁,学历是本科,男性规定报考研究生,女性则担任行政工作;(2)假如年龄满18岁不满50岁,学历本科,不分男女,任中层领导职务,学历是硕士不分男女,任课题组组长;(3)假如年龄满50岁,学历本科,男性任科研人员,女性则担任资料员,学历是硕士不分男女,任课题组组长。规定:画出分析过程,得出鉴定表,并进行化简。3. “一个程序读入3个整数,它们分别代表一个三角形的3个边长。该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。”规定:设三角形的3条边分别为A、B、C,并且 (1) 列出等价类表,格式如下:
28、输入条件有效等价类无效等价类(注意:将等价类编号)(注意:将等价类编号)(2) 设计测试用例,格式如下:用例n:输入【A,B,C】覆盖等价类(列出等价类序号),输出结果为。 例如:用例10:输入【3,3,3】覆盖等价类(100)(600),输出结果为等边三角形。1. 网络的普及带给了人们更多的学习途径,随之而来的管理远程网络教学的“远程网络教学系统”诞生了。“远程网络教学系统”的功能需求如下:a)学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。b)教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。c)系统管理员负责对网站页面的维护、审核不合法
29、课件和不合法教学信息、批准用户注册。1)学生需要登录“远程网络教学系统”后才干正常使用该系统的所有功能。假如忘记密码,可与通过“找回密码”功能恢复密码。请画出学生参与者的用例图。2)教师假如忘掉密码,可以通过“找回密码”功能找回密码。请画出教师参与者的用例图2. 图书管理系统功能性需求说明如下: 图书管理系统可认为一定数量的借阅者提供服务。每个借阅者可以拥有唯一标记其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。提供的服务涉及:提供查询图书信息、查询个人信息服务和预定图书服务等。当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。系统管理员重要负责系统的管理维护工作,涉及对图书、数目、借阅者的添加、删除和修改。并且可以查询借阅者、图书和图书管理员的信息。可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。 回答下面问题:(1) 该系统中有哪些参与者?借阅者图书管理员系统管理员 (2) 拟定该系统中的类,找出类之间的关系并画出类图.(3) 画出语境“借阅者预定图书”的时序图。(4)