高级软件开发过程(复习资料)
- 格式:doc
- 大小:55.50 KB
- 文档页数:8
选择软件生存周期包括可行性分析、(需求分析检测审核调试)、软件设计、程序设计、测试、发布维护等活动。
属于软件的特点的是软件是一种逻辑实体,具有抽象性软件在使用过程中没有磨损、老化的问题软件有形,有色,有味,看得见,摸得着,闻得到(用例图活动图E—R图状态图)不属于UML图制约软件成功的因素有:,成本(费用),进度(时间),质量(客户满意度)工作态度(积极性)范围(符合客户的需求和希望)编成技巧(精通计算机语言)是否加班(赶进度)在软件测试中,白盒测试方法是通过分析程序的(功能输入数据内部逻辑应用范围)来设计测试用例的方法鱼与水生生物之间的关系是(组合聚合泛化依赖)用例模型包括用例图和(E—R图数据字典用例规约状态图)(Visual Studio> NetBeans、Eclipse> Rose)是用于软件设计的辅助工具软件测试的目的是(评价软件的质量、发现软件的错误、找出软件的所有错误、证明软件是正确的)软件维护会产生副作用,(文档副作用、编码副作用、测试副作用、数据副作用)不属于维护副作用可行性分析研究的目的是(争取项目、项目值得开发否、开发项目、规划项目)在确定类时,所有(名词、动词、形容词、副词)是候选的类技术可行性研究的问题之一是(成本效益问题、存在侵权否、技术风险问题、运行方式可行否)象棋与棋之间的关系是(组合、聚合、泛化、依赖)用例模型包括用例图和(状态图、E—R图、数据字典、用例规约)(project、word、Eclipse、Rose)是用于设计程序的辅助工具维护阶段产生的文档是(需求规格说明书、软件问题报告、操作手册、设计说明书)按照ISO/IEC 9126—1991的规定软件质量可用3个特性来评价:功能性,,易用性A.可靠性B.理解性C.理论性D.维护性(软件、文档、数据、程序)是计算机程序及其说明程序的各种文档小汽车与交通工具之间的关系是(组合、聚合、泛化、依赖)概念模型包括(类和对象、类和类之间关系、活动图、顺序图)软件质量必须在(实现期间、开发之前、开发之后、整个开发期间)加以保证软件重用是指在软件开发过程中重复使用相同或相似(函数、过程、子程序、软件元素)系统定义明确之后,应对系统的可行性进行研究,可行性研究应包括技术可行性、经济可行性、经济可行性、社会可行性安全可行性、操作可行性社会可行性、系统可行性实用性、社会可行性顺序图(时序图)属于(动态模型、功能模型、静态模型)软件开发技术包括(软件经济学、软件开发方法学、软件心理学、软件管理学),软件开发过程, 软件工具和软件工程环境软件工程的三要素是(需求、方法、资金、市场)、工具和过程青蛙与两栖动物之间的关系是(组合、聚合、泛化、依赖)用例模型包括(状态图、E—R图、用例图、活动图)和用例规约(RequisitePro^ NetBeans, Eclipse, Rose)是用于需求管理辅助工具VSS和CVS用于(编写程序、软件设计、文档编辑、版本管理)概念计春:机软件、软件工程、配置管理、单元测试、静态测试技术、类、对象,类的特性、集成测试、设计模式、白盒测试技术、软件质量、外观模式、概念模型、黑盒测试技术、简述软件开发模型有哪些主要模型。
高级计算机程序设计员复习题(附答案)一、单选题(共90题,每题1分,共90分)1、()时期又进一步划分为3个阶段,即问题定义、可行性研究和需求分析。
A、软件测试B、软件维护C、软件定义D、软件开发正确答案:C2、TCP/IP协议中IP提供的服务是()。
A、传输层服务B、网络层服务C、表示层服务D、会话层服务正确答案:B3、()是根据系统所包含的功能来划分模块。
A、自上向下划分B、自下向上划分C、横向划分D、纵向划分正确答案:D4、下列说法正确的是:()。
A、概要设计的任务是通过各种必要的维护活动使软件系统持久地满足用户需求B、详细设计的任务是通过各种必要的维护活动使软件系统持久地满足用户需求C、软件维护的任务是通过各种必要的维护活动使软件系统持久地满足用户需求D、软件测试的任务是通过各种必要的维护活动使软件系统持久地满足用户需求正确答案:C5、计算机中数据的表示形式是()。
A、二进制B、八进制C、十进制D、十六进制正确答案:A6、按存储的工作方式分类,磁带存储器属于()。
A、顺序读写存储器B、主存储器C、随机读写存储器D、只读存储器正确答案:A7、下列说法正确的是:()。
A、适用于白盒测试的方法是错误推测法B、适用于白盒测试的方法是边界值分析C、适用于白盒测试的方法是划分等价类D、适用于白盒测试的方法是逻辑覆盖法正确答案:D8、软件管理按时间可划分为()和使用维护管理。
A、软件设计管理B、生产管理C、技术管理D、开发进度管理正确答案:B9、在软件测试方法中,白盒测试法把程序看成是一个透明的盒子,以程序的内部结构和()为依据,对程序的所有逻辑路径进行细致的检查。
A、功能B、算法C、处理过程D、外部结构正确答案:C10、用计算机进行数据处理,从简单到复杂已经历了三个发展阶段,下列说法错误的是()。
A、电子数据处理B、管理信息系统C、决策支持系统D、智能数据收集正确答案:D11、()是将软件需求说明转化为软件总体设计,确定软件结构及模块的划分,并确定各模块之间的接口。
软件工程复习要点软件工程是一门研究如何高效地开发、维护和管理软件的学科。
对于学习软件工程的同学来说,熟练掌握复习要点是非常重要的。
本文将为大家总结并分享软件工程的复习要点,希望能够帮助大家更好地掌握和应用软件工程知识。
一、软件开发过程软件开发过程是指从需求分析到交付软件产品的整个过程。
常用的软件开发过程模型有瀑布模型、迭代模型、敏捷模型等。
要理解和掌握软件开发过程,需要熟悉各个阶段的任务和活动,包括需求分析、设计、编码、测试、交付等环节。
1. 需求分析:确定用户需求,明确软件系统的功能和性能要求。
2. 设计:根据需求分析的结果,进行软件系统的整体设计和详细设计。
3. 编码:将设计好的软件系统转化为具体的实现代码。
4. 测试:对编码完成的软件系统进行测试,发现和纠正其中的问题。
5. 交付:经过测试合格的软件系统交付给用户使用。
二、软件工程方法与工具为了提高软件开发的效率和质量,软件工程使用了一系列方法与工具。
掌握软件工程方法与工具的使用对于软件开发人员来说是非常重要的。
1. 需求管理工具:用于帮助开发团队和用户共同管理和追踪需求,常用的有JIRA、TFS等。
2. 设计工具:用于辅助进行软件系统的设计,常用的有UML工具、Axure等。
3. 编码工具:用于提高编码效率和质量,常用的有IDE集成开发环境、代码托管平台等。
4. 测试工具:用于自动化测试和代码覆盖率分析,常用的有Junit、Selenium等。
5. 配置管理工具:用于管理和控制软件系统的配置,常用的有Git、SVN等。
三、软件质量保证软件质量保证是指通过一系列的措施和活动来确保软件产品的质量。
在软件工程中,软件质量保证是一个非常重要的环节,它直接关系到软件系统能否满足用户的需求。
1. 静态质量保证:通过代码审查、代码规范等手段来预防和发现问题。
2. 动态质量保证:通过测试等手段来发现和解决软件系统中的问题。
3. 配置管理:通过配置管理工具来确保软件系统配置的正确性和一致性。
高级软考整套试题及答案一、单项选择题1. 在软件开发过程中,需求分析阶段的主要任务是什么?A. 编写代码B. 设计数据库C. 确定软件需求D. 进行系统测试答案:C2. 面向对象编程中,封装的主要目的是什么?A. 提高代码的可读性B. 增加代码的复杂性C. 隐藏对象的实现细节D. 减少代码的可维护性答案:C二、多项选择题1. 下列哪些是敏捷软件开发的特点?A. 强调文档编写B. 强调团队协作C. 强调客户反馈D. 强调迭代开发答案:BCD2. 在软件测试中,黑盒测试和白盒测试的区别是什么?A. 黑盒测试关注内部逻辑B. 白盒测试关注外部功能C. 黑盒测试关注外部功能D. 白盒测试关注内部逻辑答案:CD三、填空题1. 在软件开发生命周期中,______阶段是确定软件需求的阶段。
答案:需求分析2. 在面向对象编程中,______是指对象的状态和行为。
答案:对象四、简答题1. 描述软件开发过程中的迭代开发模式的特点。
答案:迭代开发模式的特点包括:- 将开发过程划分为多个迭代周期;- 每个迭代周期内完成一部分功能;- 迭代周期短,可以快速响应需求变化;- 强调客户反馈,持续改进产品。
2. 解释什么是软件架构,并说明它在软件开发中的作用。
答案:软件架构是指软件系统的结构和组件,以及它们之间的相互关系。
它在软件开发中的作用包括:- 为系统提供清晰的组织结构;- 指导系统的设计和实现;- 支持系统的可维护性和可扩展性;- 帮助团队成员理解系统的整体设计。
五、编程题1. 编写一个函数,实现计算两个整数的和。
答案:```pythondef add(a, b):return a + b```2. 编写一个函数,实现字符串反转。
答案:```pythondef reverse_string(s):return s[::-1]```六、案例分析题1. 假设你负责一个电子商务平台的软件开发,描述你将如何进行需求分析。
答案:需求分析包括以下步骤:- 与利益相关者进行会谈,了解业务需求;- 确定用户需求和系统需求;- 编写需求规格说明书;- 进行需求验证,确保需求的完整性和一致性;- 需求管理,跟踪需求变更。
软件开发工程师(高级考试题)软件开发工程师(高级)考核试卷一、不定项选择题(每题2分,共计80分)1. 在软件开发中,有利于发挥集体智慧的一种做法是:AA.设计评审B.模块化C.主程序员制D.进度控制2. 在开发软件时,()可用来提高程序员的工作效率:AA.程序开发环境B.操作系统的作业管理功能C.编译程序的优化功能D.并行运算的大型计算机3. 开发软件需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作:BA.软件投机B.软件危机C.软件工程 D.软件产生4. 需求分析阶段的任务是:DA.确定软件开发方法B.确定软件开发工具C.确定软件开发费用D.确定软件系统功能5. 编码和测试属于:BA.软件定义期B.软件开发期C.软件维护期D.软件测试期6. 在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称:AA.数据字典B.数据分析C.集成测试D.动态分析7. (B)模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果:A.承接模块B.驱动模块C.数据库模块D.处理模块8. 软件开发工具提供的功能之一是:AA.文档的编制或生成B.存储管理C.处理机管理D.文件管理9. 软件工程研究的内容包括:()技术和软件工程管理:DA.软件测试B.数据分析C.动态测试D.软件开发10. 数据库管理系统的下层支持软件是:DA.数据挖掘B.开发工具C.全局变量D.操作系统11. 用二维表格结构来表示实体及实体之间联系的数据模型称为:BA.数据模型B.关系模型C.数据库操作D.数据库集合12. 在数据管理技术的发展过程中,数据独立性最高的是()阶段:AA.数据库系统 B.文件系统C.人工管理D.数据项管理13. 在关系数据库的设计中,设计关系模式是()的任务:CA. 需求分析阶段B. 概念设计阶段C. 逻辑设计阶段D. 物理设计阶段14. 概念结构设计阶段得到的结果是: CA. 数据字典描述的数据需求B. E-R图表示的概念模型C. 某个DBMS所支持的数据模型D. 包括存储结构和存取方法的物理结构15. 系统开发的需求分析阶段的重要工作之一是:AA.数据定义B.数据库设计 C.数据维护D.数据结构实现16. 瀑布模型把软件生存周期划分为软件定义、软件开发和()三个阶段,而每一阶段又可细分为若干个更小的阶段: CA.详细设计B.可行性分析 C.运行及维护 D.测试与排错17. ()描述数据的局部逻辑视图,是数据库用户的数据视图,它是与某一应用有关的数据逻辑表示:CA.模式B.逻辑模式C.外模式D.内模式18. V模型指出,()应当追朔到用户需求说明:DA.代码测试B.集成测试C.验收测试D.单元测试19. 在构架视图集中,是用例模型的子集的是:AA.用例视图B.逻辑视图C.实施视图D.进程视图20. 目前最重要的一种数据模型是:CA.层次模型B.网状模型C.关系模型D.面向对象模型21. 概要设计的结果是提供一份:AA.模块说明书 B.框图 C.程序 D.数据结构22. 结构化分析SA是软件开发需求分析阶段所使用的方法,()不是SA所使用的工具:B A.DFD图B.PAD图C.结构化英语D.判定表23. 结构化分析方法以数据流图、()和加工说明等描述工具,即用直观的图和简洁的语言来描述软件系统模型:DA.DFD图B.PAD图C.IPO图D.数据字典24. 在软件研究过程中,CASE是:DA.指计算机辅助系统工程B.CAD和CAM技术的发展动力C.正在实验室用的工具D.指计算机辅助软件工程25. 软件(结构)设计阶段(概要设计)的文档是:DA.系统模型说明书B.程序流程图C.系统功能说明书D.模块结构图和说明书26. 使用结构化分析方法时,采用的基本手段是:A A.分解和抽象 B.分解和综合 C.归纳与推导 D.试探与回溯27. 在软件的设计阶段应提供的文档是:BA.软件需求规格说明书B.概要设计规格说明书和详细设计规格说明书C.数据字典及流程图 D.源程序以及源程序的说明书28. 结构化设计方法是面向()的设计方法:CA.过程B.对象C.数据流D.数据结构29. 下列()不是模块化设计的目的:DA.可采用结构化设计方法B.降低复杂度C.有利于信息隐蔽D.描述系统的功能与性能30. 下面选项中,必须进行查询优化的是: AA.关系数据库B. 网状数据库C. 层次数据库D. 非关系模型31. 下列叙述中,属于数据字典的作用的是:A C DA.作为编码阶段的描述工具B.为用户与开发人员之间统一认识C.作为概要设计的依据D.为需求分析阶段定义各类条目32. 软件开发包括()阶段:B CA.需求B.设计C.编码和测试D.维护阶段33. 需求分析的步骤有以下()方面:A C DA.需求的收集B.需求的控制C.需求的分析整理D.需求的改变34. 在软件生存周期中,下面选项中属于软件定义期的阶段的是:A C DA.问题定义B.系统设计C.可行性研究D.需求分析35. 软件架构设计要达到哪些目标:A B C DA.可靠性B.可扩展性C.可扩展性D.可维护性36. 在软件生存周期中,下面选项中属于软件开发期的阶段的是:A B CA.详细设计B.系统设计C.编码和测试D.需求分析37. 下面说法中正确的是:A B DA.软件工程注重研究如何指导软件生产全过程的所有活动B.软件工程学是研究软件开发和维护的普遍原理与技术的一门工程学C.软件经测试和调试后,软件生命周期就结束D.软件测试是程序执行的过程,目的在于发现错误38. 在软件开发中,下列选项中属于设计阶段的是:A C DA.定义模块算法B.定义需求并建立模块C.数据结构的设计D.给出系统模块结构39. 下面说法中正确的是:A C DA.软件在运行、使用期间不存在磨损、老化的问题B.软件的运行仅对计算机硬件具有依赖性C.软件不是自然界的有形物体、而是一种逻辑实体D.软件是程序、数据及相关文档的集合40. 软件生命周期分为()时期:A B CA.软件定义期B.软件开发期C.软件维护期D.软件测试期二、简答题:(每题2分,共计10分)1.简述软件配置管理的作用答:为了标识变更、控制变更、确保变更正确实现并向其他有关人员报告变更2.简述软件开发过程包括哪几个阶段答:(1)问题的定义及规划;(2).需求分析;(3)软件设计;(4)程序编码(5)软件测试3.简述软件复用的含义及主要思想答:软件复用(software reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
老师课堂划的重点(1)阅读下列代码public class Test2011{public static void main(String args[]){String s="Test";switch(s){case "Java":System.out.print("Java");break;case "Language":System.out.print("Language"); break;case "Test": System.out.print("Test"); break;}}}}其运行结果是A)Java B.Language C.Test D.编译出错(2)在Applet中显示文字、图形等信息时,应使用的方法是A.paint() B.init() C.start() D.destroy()(3)Java语言使用的字符码集是A.ASCII B.BCD C.DCB D.Unicode4)下列属于合法的Java标识符是A._cat2B.5books C.+static D.-3.141595)在Java中,表示换行符的转义字符是A.\r B.\f C.'n' D.\dd6)在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是A.java.applet B.java.awt C.java.util D.ng7)在Java中,所有类的根类是A.ng.Object B.ng.Class C.java.applet.AppletD.java.awt.Frame8)在Java中,能实现多重继承效果的方式是A.内部类B.适配器C.接口D.同步9)十进制数17的16进制表示格式是A.0x11B.0x17 C.0xA1 D.1710)int型public成员变量MAX_LENGTH,该值保持为常数120,则定义这个变量的语句是A.public int MAX_LENGTH=120B.final int MAX_LENGTH=120C.public const int MAX_LENGTH=120D.public final int MAX_LENGTH=12011)下列关于Java Application与Applet的说法中,正确的是A.都包含main()方法B.都通过“appletviewer”命令执行C.都通过javac命令编译D.都嵌入在HTML文件中执行12)当启动Applet程序时,首先调用的方法是A.stop() B.init() C.start() D.destroy()13)当浏览器重新返回Applet所在页面时,将调用Applet类的方法是A.start() B.init() C.stop() D.destroy()14)下列代码中,将引起一个编译错误的行是1)public class Test{2)int m,n;3)public Test() {}4)public Test(int a) {m=a;}5)public static void main(String args[]){6)Test t1,t2;7)int j,k;8)j=0;k=0;9)t1=new Test();10)t2=new Test(j,k);11)}12)}A.第3行B.第5行C.第6行D.第10行15)下列变量定义中,正确的是int[] x={125,21,5,168,98};int max=x[0];for(int i=1;i<x.length;i++){if(x[i]> max) max =x[i];}System.out.println(max);A) 125 B) 5 C) 98 D) 16816、应用程序的main方法中有以下语句,则输出的结果是( )String s1="0.5", s2="10"; double x=Double.parseDouble(s1);int y=Integer.parseInt(s2); System.out.println(x+y);A) 10.5 B) 100.5 C) 10 D) “10.5”17、有整型数组:int[] c={12,35,8,7,2};,则调用方法Arrays.sort(c)后,数组x中的元素值依次是( )A) 2 7 8 12 35 B) 12 35 8 7 2C) 35 12 8 7 2 D) 8 7 12 35 218、下面的程序段创建了BufferedReader类的对象in,以便读取本机f盘my文件夹下的文件1.txt。
JAVAEEWEB⾼级编程期末考试复习资料(⼀)1.简述Servlet⼯作原理。
Servlet⼯作原理:Servlet运⾏在Web服务器上的Web容器⾥。
Web容器负责管理Servlet。
它装⼊并初始化Servlet,管理Servlet的多个实例,并充当请求调度器,将客户端的请求传递到Servlet,并将Servlet的响应返回给客户端。
Web容器在Servlet的使⽤期限结束时终结该Servlet。
服务器关闭时,Web容器会从内存中卸载和除去Servlet。
2.Servlet与Applet的异同.相似之处:(1)它们不是独⽴的应⽤程序,没有main()⽅法。
(2)它们不是由⽤户调⽤,⽽是由另外⼀个应⽤程序(容器)调⽤。
(3)它们都有⼀个⽣存周期,包含init()和destroy()⽅法。
不同之处:(1)Applet运⾏在客户端,具有丰富的图形界⾯。
(2)Servlet运⾏在服务器端,没有图形界⾯。
3.EJB怎样和容器交互,其组件有哪⼏种类型?n EJB通过以下三种机制与容器交互①回调⽅法:回调⽅法是EJB组件实现的,通过部署标记或在部署⽂件中声明的特定⽅法,当容器要执⾏创建EJB实例,结束事务等操作时,它将调⽤这些⽅法来通知该EJB 组件。
②EJBContext:每个EJB都会得到⼀个EJBContext对象,它是对容器的直接引⽤,通过它可以获取环境信息。
③Java命名和⽬录接⼝(JNDI):这是java平台的标准扩展,⽤于访问命名系统,如LDAP、NetWare、⽂件系统等。
n EJB组件可分为三种主要类型:①会话Bean:代表检索或存储数据以满⾜⽤户请求这样的操作;②实体Bean:代表⼀种数据集,可以访问这些数据集来满⾜⽤户请求;③消息驱动Bean:相当于⼀个实现了某些业务逻辑的异步消息接收者。
4.什么是JDBC技术?①JDBC是⼀组API,定义了⽤来访问数据源的标准Java类库,使⽤这个类库可以以⼀种标准的⽅法、⽅便地访问数据库资源。
重点复习软工软工(软件工程)是计算机科学与工程领域的一门重要学科,旨在研究以科学原理与工程技术为基础,以经济、可靠和高质量为目标,开发和维护复杂软件系统的学科体系。
对于计算机相关专业的学生来说,软工是一门必不可少的课程。
本文将介绍关于软工的重点复习内容,以帮助读者更好地准备软工考试。
一、软件开发生命周期软件开发生命周期指的是从软件项目的规划到最终交付使用的整个过程。
它包含了需求分析、设计、编码、测试、维护等阶段。
在复习软工时,需要了解各个阶段的主要任务和活动,以及它们之间的关系和依赖。
1. 需求分析阶段:需求分析是软件开发的第一步,目的是识别出用户需求并定义功能和性能要求。
在这个阶段,需要学习如何进行需求获取、需求分析和需求建模等技术和方法。
2. 设计阶段:设计阶段是将需求转化为可执行的规划和设计方案的阶段。
这个阶段包括系统架构设计、详细设计、数据库设计等。
在复习软工时,需要了解常用的设计原则和设计模式,如单一职责原则、开放封闭原则、工厂模式、观察者模式等。
3. 编码阶段:编码阶段是将设计好的方案转化为计算机可执行代码的阶段。
在复习软工时,需要熟悉常用的编程语言和开发工具,如Java、C++、Eclipse、IntelliJ IDEA等。
同时,还需要了解编码规范和代码质量管理的重要性。
4. 测试阶段:测试阶段是为了发现和修复软件中存在的问题和错误。
在复习软工时,需要熟悉各种测试方法和技术,如单元测试、集成测试、系统测试、性能测试等。
此外,还需要了解测试用例的设计和执行,以及错误跟踪和修复的方法。
5. 维护阶段:维护阶段是软件开发生命周期中最后一个阶段。
它主要涉及对软件进行改进和修复。
在复习软工时,需要了解维护活动的类型和方法,如改正性维护、适应性维护、完善性维护等。
二、软件开发方法论软件开发方法论是指在软件开发过程中使用的一套规范和约束,它们可以指导和帮助开发团队更好地组织和管理软件项目。
在复习软工时,需要了解以下几种常见的软件开发方法论。
绪论:1. 软件与软件产业的发展过程软件管理工程的发展,经历了从20世纪70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征的结构化生产时代,到90年代中期,以CMM模型的成熟和日益为市场接受为标志,已经进入以过程成熟度模型CMM、个体软件过程PSP和团队软件过程TSP为标志的以过程为中心的时代,而软件发展第三个时代,即软件工业化生产时代,以90年代中期软件过程技术的成熟和面向对象技术、构件技术的发展为基础,已经渐露端倪。
2. 软件危机及其原因软件特殊性:软件成本高;软件开发的进度难于控制;估计软件工作量很困难;软件质量难于保证;修正维护软件困难。
软件企业的4个困难:需求的完全识别;软件产品需求的完全传递;软件产品相关的变更控制;软件产品相关技术的快速变化。
软件构建的核心就是管理复杂度。
软件是由人开发的,人的智力与软件的复杂度之间存在矛盾。
软件复杂度与软件的规模有很大关系,另外也与模块间的耦合度、模块内的内聚性等因素有关。
3. 过程及其要素软件开发项目是在规定的成本和时间内,开发和提交满足客户某些需求的软件产品。
项目的三个基本特征是:成本、进度和质量(代表软件在多大程度上满足客户的要求)。
对于机构而言,包含多个项目,而实现机构的高质量和生产率,依赖于三个因素:过程、人和技术。
其中过程不仅仅是一系列步骤,还包含了机构所积累的经验,包含了机构可以从已成功的项目中所学到的一切。
4. CMM与软件产业管理是影响软件研发项目全局的因素,而技术只影响局部。
1987年9月,美国卡内基-梅隆大学软件工程研究所发布了软件过程成熟度框架,并提供了软件过程评估和软件能力评价两种评估方法和软件成熟度提问单。
4年之后,SEI将软件过程成熟度框架进化为软件能力成熟度模型(Capability Maturity Model For Software,简称SW-CMM)。
1991年8月,SEI发布了最早的SW-CMM v1.0。
高级软件开发过程第1章绪论1. 计算机软件发展的三个阶段:程序设计阶段(软件工作:程序设计,软件质量:程序设计=数据结构+算法,强调编程技巧)、软件工程阶段(总结软件危机的教训,软件工作:代码编写+需求分析、测试、维护等等,软件质量:程序的可读性、可理解性、可测试性和易修改性等工程化的原则)、软件过程阶段(软件工作:软件开发过程+软件管理过程,更强调软件开发的效率、软件质量以及与软件开发相关的管理工作)2.现代软件产业的总体情况:很多软件项目最终不能交付,或者最终交付的软件项目发生延期、成本超出预算、而且运行经常不可靠。
原因:不完整、不现实的项目需求描述、对需求变更束手无策、脆弱的框架、采用不成熟的技术、测试的不充分性、拙劣的进度计划和评估、缺乏资源、不具备项目管理的方法、缺少管理层的支持。
3. 软件周期模型:定义:软件生命周期模型是软件过程中全部活动的生命周期结构框架的一种形式化描述,也成为软件生存期模型。
种类:瀑布模型、演化(原型)模型、螺旋模型、喷泉模型。
总体局限性:软件过程不仅包括组成过程的各种活动,而且包括各种活动的相关项,如活动的执行者、活动执行时采用的各种方法和工具、活动执行的结果等等,软件生命周期模型用于指导软件开发实践时,表现出较差的可操作性。
4. 软件过程模式:定义:软件工程模式从成功或失败的软件开发实践中总结而成,是软件过程中生命周期、人员、方法、产品四大要素相互关联的有机整体。
典型的过程模式:Rational统一过程、敏捷过程、微软过程。
其他过程模式:个体/小组软件过程(PSP/TSP)。
5.软件过程模式与软件生命周期模型的关系:软件生命周期模型包含与软件过程模式中。
6.软件过程能力评估标准和改进方案:CMM(能力成熟度模型):初始级、可重复级、已定义级、已定量管理级、优化级。
ISO9000;6σ。
第2章Rational 统一过程1.什么是RUP:Rational统一过程(Rational Unified Process)是一种典型的软件过程模式,对软件过程模式的四大要素——生命周期、人员、方法和产品均进行了详尽的论述;是一种软件过程产品——Rational公司开发并维护,与Rational一系列其他软件开发工具集成。
*2.RUP术语:用户代表与所开发的系统进行交互的某个人或某个系统(所开发系统之外的另一个系统)。
用例是能够向用户提供有价值结果的系统中的一种功能。
所有的用例合在一起构成用例模型。
…特点:①确定系统需求的工具,传统的系统功能说明:系统应该做什么?用例模型:增加三个词for each user。
②驱动软件开发过程,RUP三大特点中第一大特点为“用例驱动”。
构架是系统在其所处环境中最高层次的概念。
软件系统的构架是指通过接口交互的重要构件的组织和结构,这些构件又由一些更小的构件和接口组成。
RUP三大特点中第二大特点为“以构架为中心”。
工作流程是在业务中执行的活动序列,它对于业务主角个体生成一个可见值结果。
迭代是指带有已建立基线的计划和评估准则的独特活动序列,迭代生成内部或外部的发布版本。
增量是指在后续迭代结束后,两个发布版本之间存在的差异或差值。
RUP三大特点中第三大特点为“迭代和增量的过程”。
在软件过程组织的环境中,个人或协同工作的小组的行为和职责定义为角色,角色代表项目中个人承担的作用,并确定了如何完成工作。
活动是要求角色执行的工作单元。
工件是指一条信息,该信息:由过程生成、修改或使用;定义了职责范围;受到版本控制。
里程碑是迭代正式结束的时间点,该时间点与发布时间点相对应。
阶段是指项目相邻两个主要里程碑之间的时间段,在此期间要实现一组既定的目标、完成工件并决定是否进入下一阶段。
3.RUP二维结构生命周期:横轴通过时间组织,体现开发过程的动态结构。
术语主要包括阶段、里程碑、迭代和增量。
纵轴将内容组织为逻辑活动,体现开发过程的静态结构,术语主要包括工作流程、活动、角色、工件。
4.RUP静态结构:九个核心工作流程。
工作流程代表了所有角色、活动与工件的逻辑分组情况,即软件过程模式中的三个要素。
九个核心工作流程组成:核心过程工作流程:前6个,核心支持工作流程:后3个。
①业务建模:产生的主要工件为业务模型;②需求:用例方法:对需要的功能和约束进行提取、组织、文档化,理解系统所解决问题的定义和范围。
产生的主要工件为用例模型,用户界面模型;③分析设计:以构架设计为中心:产品的适应性、可扩展性。
产生的主要工件为一个设计模型、一个分析模型(可选)。
④实现:产生的主要工件为实施模型(模型元素包括实施子系统和构件)。
⑤测试:产生的主要工件为测试模型(模型元素包括测试用例、测试过程和测试构件)+测试结果。
⑥部署:产生的主要工件为产品的一个版本+文档培训资料。
⑦配置和变更管理:产生的主要工件为配置管理计划、变更请求、项目存储库和工作区。
⑧项目管理:产生的主要工件为商业理由、迭代计划、风险管理计划、质量保证计划及相应的评估文档。
⑨环境:产生的主要工件为工作流程指南、工具、工具指南。
5.RUP动态结构:四个阶段。
每个阶段由一次或多次迭代完成,迭代过程是受控的。
①先启阶段:目标:建立业务用例、确定项目的边界,结束里程碑:生命周期目标里程碑。
②精化阶段:目标:建立稳定的构架、编制项目计划、淘汰项目中最高风险的元素,结束里程碑:生命周期构架里程碑。
③构建阶段:目标:所有构件和应用程序功能被开发并集成为产品、所有的功能被详尽的测试,结束里程碑:最初操作性能里程碑。
④产品化阶段:目标:将软件产品交付给用户群体,结束里程碑:产品发布里程碑。
6. RUP与螺旋模型异同点:相同点:二维迭代特性。
重复一系列组成系统生命周期的循环;每次循环的结束是向用户交付产品的一个运行版本;每个循环由若干次迭代组成;每次迭代需要进行风险分析处理;每次迭代结束的标志是交付一个增量。
螺旋模型:每次迭代历经笛卡儿坐标系中四个象限的四个方面活动,RUP:每次迭代历经九个核心工作流程中的若干个。
不同点:螺旋模型未给出每次迭代过程结束交付的增量原型的具体要求;也未给出不同次迭代在历经的笛卡儿坐标系中四个象限的四个方面活动的内容与重点的不同。
RUP将整个生命周期划分为四个阶段,明确给出了每个阶段内的若干次迭代过程完成后交付的增量的具体要求,即四个阶段的主要里程碑——生命周期目标里程碑、生命周期构架里程碑、最初操作性能里程碑和产品发布里程碑;同时详细阐述了不同阶段中的不同迭代过程历经的九大核心工作流程中活动内容的重点和强度的不同;提供了对每次迭代过程中不同核心工作流程活动的并行化支持。
RUP的二维生命周期结构对“迭代”意义的体现比螺旋模型更深刻、具体、详尽、全面,更具可操作性。
7.RUP的优点:相对瀑布类模型:将成本风险进一步降低为获得一次增量所需费用;进一步降低了产品不能按计划投放市场的风险;使项目开发更能适应项目需求的变化。
相对螺旋类模型:用于指导需求不明确、不稳定的项目开发时具有更强的可操作性。
8.RUP人员——角色:分析员、开发人员、测试员、经理、其他角色。
角色的意义:将角色与个体区分开。
某种角色:一个或多个相互协作的个体完成,一个个体:担任一种或多种角色。
制定迭代计划:确定每个阶段、每个工作流程中需要的角色;制定人员计划:考虑人员的技能、能力经验,将一个或多个角色分配给一个适合的人员完成。
有效提高了项目中人力资源的利用率。
缺陷:论述不够深入,忽略了角色的质量,未给出角色的组织管理方式、角色间的相互地位关系和交互方式。
体现过程可操作性的一个重要方面,RUP未给出。
9.RUP方法:(1)用例及用例驱动。
用例是能够向用户提供有价值结果的系统中的一种功能。
所有的用例合在一起构成用例模型。
采用用例的两个原因:①用例被证明是捕获需求的一种有效方法。
达到需求捕获的第一个目标:发现多样性的需求(传统的系统功能说明:系统应该做什么?用例模型:增加三个词for each user),达到需求捕获的第二个目标:以适用于用户和开发人员的方式加以表示;②用例驱动整个过程。
(2)以构架为中心。
构架描述:5个视图:用例模型视图、分析模型视图、设计模型视图、实施模型视图、实现模型视图。
每个视图是对应模型的精华与核心部分。
意义:①理解系统,②组织开发,③鼓励重用和进化系统。
(3)在面向对象的分析设计中采用UML进行可视化建模。
(4)面向对象的设计与构件实现。
10.RUP产品——工件:定义:项目期间生成的中间或最终产品。
工件类型:根据RUP的各工作流程:划分为业务建模工件、需求工件、分析设计工件、实施工件、测试工件、部署工件、配置与变更管理工件、项目管理工件、环境工件;根据物流方向:划分为输入工件、输出工件和辅助工件;根据存在形式:划分为模型、模型元素、文档、源代码、可执行文件。
11.RUP特点:优点:作为一种软件过程:RUP具有二维迭代性,有利于降低风险、适应需求变化;RUP是可配置的过程,具有通用性;作为一种软件过程模式:相对传统的软件生命周期模型具有较强的可操作性;作为一种软件过程产品:具有实用性、可操作性与可实现性。
缺陷:与软件过程模式配置操作相关的因素①软件过程模式中生命周期、人员、方法、产品四大要素之间的相互关系和相对优先级;②各生命周期元素间的相互关系和相对优先级;③人员间的协作关系与协作方式、人员的质量、各种人员的相对优先级;④各种方法间的相互关系及相对优先级;⑤各种产品的相对优先级。
结论:RUP是一个具有突出优点的软件过程模式;RUP还很不完整,在实际应用中仍需进一步吸收其它优秀的软件开发实践经验以对其进行补充和完善。
第3章敏捷过程1.什么是AP:敏捷软件开发宣言:软件团队具有快速工作、快速响应变化的能力,制订了4条基本价值观和12条原则。
敏捷过程(Agile Process)是一种典型的软件过程模式,对软件过程模式中的四大要素(生命周期、人员、方法、产品)及相互关系均进行了论述。
2.AP流派:极限编程XP、SCRUM、动态系统开发方法DSDM、水晶系列方法、开放式源码、适配性软件开发ASD、适配性软件开发ASD。
3.AP的4条价值观:①个体和交互胜过过程和工具。
人是软件项目获得成功最为重要的因素,当然,不好的过程和工具也可以使最优秀的团队成员失去效用、合作、沟通以及交互能力要比单纯的软件编程能力更为重要;合适的工具对于成功来说非常重要,工具的作用不可被过份地夸大,建议从使用小的工具开始。
结论:团队的构建(包括个体、交互等)要比项目环境(包括过程、工具)的构建重要得多;应该首先致力于构建团队,然后再让团队基于需要来配置环境。
②可以工作的软件胜过面面俱到的文档。
软件的重要性:交付给用户可以工作的软件而不是文档,否则应该称之为文档开发而不是软件开发。