软件工程复习资料整理
软件工程复习资料精选全文完整版

可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
软件工程整理资料

软件工程复习(总结)题型:一、选择(1´*10=10´)二、填空(1´*20=20´,20个空)三、名词解释(4´*5=20´)四、综合应用(10´*5=50´)几个英文缩写的含义:1.SE——软件工程 5.CASE——计算机辅助软件工程2.SA——结构化分析 6.OOA——面向对象分析3.SD——结构化设计 7.OOD——面向对象设计4.SP——结构化编程 8.OOP——面向对象编程第一章:软件工程学概述1.软件危机(概念、原因及如何消除,P1—P4)概念(P1):软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生软件危机的原因(P3):(1)软件本身的特点造成;(2)软件开发与维护的方法不正确。
其主要表现:○1忽视软件需求分析;○2开发过程没有统一、规范的方法论指导,文档资料不齐全,认为软件开发就是写程序并使之运行;○3轻视软件维护。
消除软件危机的途径(P4):(1)正确认识软件的概念;(2)充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合共同完成的工程项目。
(3)充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机软硬件研究和开发的经验教训。
(4)推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法;(5)开发和使用更好的软件工具;(6)良好的组织管理措施。
2.生命周期(P3):一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期成为生命周期。
3.软件工程定义(P5):软件工程是指导计算机软件开发与维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和目前能够得到的最有效的技术与方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
大二软件工程知识点总结

大二软件工程知识点总结本文将对大二软件工程中的重点知识点进行总结和归纳,帮助读者全面理解和复习相关内容。
以下是大二软件工程的知识点概述:一、软件生命周期软件生命周期是指从软件开发的开始到结束的整个过程。
包括需求分析、设计、编码、测试、部署和维护等阶段。
每个阶段都有相应的文档和工具支持。
1.需求分析需求分析是软件开发中最重要的一步,它确定了软件系统的需求和功能。
需求分析的过程包括问题定义、需求获取、需求分析与建模等。
2.设计设计是根据需求分析阶段确定的需求来设计软件系统的整体结构和各个模块之间的关系。
常用的设计方法有结构化设计和面向对象设计。
3.编码在编码阶段,程序员会按照设计文档进行编码,将逻辑结构转化为计算机可执行的程序代码。
编码过程需要选择合适的编程语言和开发工具。
4.测试测试是确保软件系统按照需求和设计要求正常运行的重要环节。
测试包括单元测试、集成测试、系统测试和验收测试等。
常用的测试方法有黑盒测试和白盒测试。
5.部署与维护在完成开发和测试后,软件需要部署到目标环境中并进行维护。
部署包括安装、配置和运行等步骤。
维护包括Bug修复、功能增强和性能优化等。
二、软件开发方法论软件开发方法论是指用于管理和组织软件开发过程的一套准则和规范。
常见的软件开发方法论有瀑布模型、迭代模型和敏捷开发等。
1.瀑布模型瀑布模型是软件开发的经典模型,它按照线性顺序依次完成需求分析、设计、编码、测试和部署等阶段。
缺点是无法适应需求变更和快速迭代的需求。
2.迭代模型迭代模型是在瀑布模型的基础上引入迭代和循环的概念,将开发过程划分为多个迭代周期。
每个迭代周期都包含需求分析、设计、编码、测试和部署等阶段。
3.敏捷开发敏捷开发是一种以人为核心、迭代、适应变化的开发方法。
它强调团队合作、快速响应客户需求和频繁交付可用软件。
敏捷开发方法有Scrum、XP和Kanban等。
三、软件工程方法与工具软件工程方法和工具是辅助软件开发的工具和技术。
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程知识点总结

软件工程知识点总结软件工程知识点总结1.软件工程概述1.1 软件工程定义1.2 软件工程的重要性1.3 软件生命周期2.需求分析与规格说明2.1 需求分析过程2.2 需求获取方法2.3 需求规格说明的要素2.4 需求跟踪与变更管理3.软件设计3.1 软件设计原则3.2 结构化设计方法3.3 面向对象设计方法3.4 数据库设计3.5 用户界面设计4.软件开发4.1 编码规范4.2 编程语言选择4.3 软件构建工具4.4 软件测试4.5 版本控制5.软件项目管理5.1 项目计划与进度管理 5.2 软件开发过程模型 5.3 团队协作与沟通5.4 风险管理6.质量保证与软件维护6.1 质量保证方法6.2 软件维护类型6.3 软件维护活动6.4 软件退役与替换附件:________本文档涉及的附件(请附上相关文档、图表等)法律名词及注释:________1.软件工程:________指将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护的工程学科。
2.需求分析:________确定用户对软件系统需要的功能、性能和约束等方面的要求,并以此为基础进行系统的分析和设计。
3.软件设计:________根据需求分析的结果,制定软件系统的总体结构和各组成部分的详细设计方案。
4.软件开发:________根据软件设计的方案,进行编码和调试,最终可执行的软件系统。
5.软件项目管理:________对整个软件项目进行计划、协调、控制和有效地管理,确保项目顺利完成。
6.质量保证:________通过不同的方法和技术,提高软件产品的质量,确保其满足用户的需求和要求。
7.软件维护:________对已投入使用的软件进行修复性、适应性、完善性和预防性等各方面的修改和改进。
软件工程知识点汇总

软件工程知识点汇总软件工程知识点汇总
1、软件需求
1.1 需求概述
1.2 需求分类
1.3 需求获取与分析
1.4 需求规格说明
2、软件设计
2.1 面向对象设计
2.2 结构化设计
2.3 数据库设计
2.4 用户界面设计
2.5 系统架构设计
3、软件编码
3.1 编程语言选择与使用
3.2 编码规范
3.3 软件开发环境
3.4 编码工具和技术
3.5 调试和测试
4、软件测试
4.1 测试基础知识
4.2 测试方法与策略
4.3 白盒测试
4.4 黑盒测试
4.5 功能性测试
4.6 性能测试
4.7 集成测试
4.8系统测试
4.9用户验收测试
5、软件项目管理
5.1 项目计划与进度管理 5.2 风险管理
5.3 人员管理
5.4 项目质量管理
5.5 变更管理
5.6 项目交付与部署
6、软件维护与升级
6.1 软件维护分类
6.2 软件维护流程
6.3 软件升级策略
6.4 软件版本控制
7、软件安全
7.1 信息安全基础知识
7.2 软件安全需求与设计
7.3 安全测试与评估
7.4 安全漏洞修复与更新
附件:
法律名词及注释:
1、版权: 对一种表达形式的独特创造进行保护的法律概念。
2、商标: 表示和区分特定商品或服务来源的标识符。
3、专利: 对于新发明的独特权利,使得发明人可以禁止他人在专利权期限内使用该发明。
4、法律责任: 违反法律规定而应承担的法律后果。
软件工程复习资料-完整版

软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程知识点复习资料

软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章软件工程介绍软件工程的概念IEEE对软件工程的定义:(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
(2)在(1)中所述方法的研究。
过程、方法和工具过程:为了获取高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
方法:各项任务的技术方法,回答“怎么做”的问题。
工具:为运用方法而提供的自动或半自动的软件工程支撑环境软件工程层次图软件危机与软件工程的关系、产生的原因及其表现软件工程的提出:软件工程主要是针对20世纪60年代的软件危机而提出的软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
产生软件危机的原因:客观原因:软件缺乏“可见性”,管理和控制其开发过程相对困难软件大多规模庞大,而复杂性随规模以指数速度上升主观原因:错误的认识和做法忽视软件需求分析的重要性—急于求成,仓促上阵认为软件开发就是写程序—编程只占全部工作量的10%--20%,软件配置主要包括程序、文档和数据轻视软件维护—维护费用占总费用的55%--70%软件神话一些错误认识管理神话:我们已经有了一本写满软件开发标准和规程的宝典。
它无所不包,囊括了我们可能问到的所有问题如果我们未能按时完成计划,我们可以通过增加程序员人数而赶上进度如果将一个软件外包给另一家公司,则我们可以完全放手不管。
用户神话:有了对项目目标的大概了解,便足以开始编写程序,我们可以在之后的项目开发过程中逐步了解细节。
虽然项目需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变化从业者神话:当我们完成程序并将其交付使用之后,我们的任务就完成了。
直到程序开始运行,才能评估其质量对于一个成功的软件项目,可执行程序是惟一可交付的成果。
软件工程将导致我们产生大量无用文档,并因此降低工作效率。
第二章过程模型掌握五个最基本的框架活动:将整个软件过程再进一步细分为各个相对独立的功能块,即过程框架。
(以工作开展的时间为线索)。
五个最基本的框架活动:沟通:与客户之间的交流与写作策划:为后续的软件工程工作制定计划建模:包括分析和设计构建:编码和测试部署:软件交付用户,用户对其进行评估并反馈意见。
了解典型的普适性活动适用于任何一个框架活动:软件项目跟踪和控制;风险管理;软件质量保证;正式技术评审;测量;软件配置管理;可复用管理;工作产品的准备和生产了解什么是CMMI能力成熟度模型集成(CMMI),用于预测软件开发组织所开发的系统和软件工程能力(5个能力成熟等级)CMMI定义了每一个过程域的“特定目标”,以及达到该目标所需的“特定实践”。
理解瀑布模型;增量模型;RAD模型;原型模型;螺旋模型;协同开发模型;基于构件模型;形式化方法模型;面向方面模型;统一过程适用范围、特点、优缺点瀑布模型:也称为线性模型或传统生存周期,V模型适用范围:通常发生在对一个已有系统进行明确定义的适应性调整和增强的时候对于一个新的项目,需求必须是准确定义和相对稳定的线性顺序模型特点:阶段间的顺序性和依赖性;文档驱动性;严格阶段评估;开发初期需要清楚全部需求;开发周期长、风险大。
瀑布模型的缺点:顺序太严格。
实际工作经常是在多个环节之间来回反馈调整,而不是将一个环节完成后再继续前进。
产品在最后阶段才与客户见面,从心里学的角度讲有些考验客户。
另外,如果此时才发现问题,需要改正,工作量将会很大。
效率可能不高。
瀑布模型的优点:它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。
虽然有不少缺陷但比在软件开发中随意的状态要好得多。
增量模型:以迭代方式运用瀑布模型。
特点:一般来讲,最重要的增量放在前面。
每次交付的增量产品都是可用的。
适合于功能可以划分,而且时间不紧迫的情况。
可以规避一定的风险。
如有些技术还不稳定,将这部分放到后边。
RAD模型:快速应用程序开发(Rapid Application Development,RAD)是一种侧重于短暂的开发周期的增量软件模型。
瀑布模型的高速变体,通过基于构件的方法快速实现。
适于工期紧张,又可细分功能,还要有合适的构件。
缺点:需要投入更多的人力。
各团队要紧密协作。
只适应于特殊的系统,必须可以合理模块化。
不适于高性能需求(若需调构件接口)系统需求灵活,现有构件不容易轻易满足。
技术风险很高的情况下,不宜采用该模型。
演化过程模型:软件,类似于其他复杂的系统,会随着时间的推移而演化软件有技术能力的限制,时间的限制,认识理解的限制,其它客观因素的限制。
演化模型也是一种迭代模型。
包括:原型模型、螺旋模型、协同开发模型。
原型是一个循环的过程,所以也是迭代的过程。
原型模型:对原型的基本要求:体现主要的功能、提供基本的界面风格、展示比较模糊的部分,以便于确定或进一步明确,防患于未然。
原型最好是可以运行的,最少要在各主要功能模块之间能够建立相互连接原型的处理方法:抛弃型:在获取的明确需求的基础上,重新设计与开发,成本相对高,小公司一般慎用。
演化型:在原型的基础上继续开发。
原型模型的优点:能让人(开发者或客户)很快见到产品,有成就感。
能渐进地启发客户提出新的要求或任务。
原型模型的缺点:容易蒙骗客户,也可能由此给自己带来麻烦。
往往只为结果,而不考虑技术手段,为今后埋下隐患。
系统可能考虑不周全。
与增量模型相比:增量模型在开发以前基本能确定系统的需求,虽然在以后的过程中也可能不断完善;原型开发适应于预先不太清楚系统的需求。
增量模型的反馈可能较少,而原型开发需要不断的大量反馈信息。
螺旋模型:结合了原形的迭代性质和瀑布模型的系统性和可控性特点;风险驱动,引入非常严格的风险识别、风险分析和风险控制;早期迭代中可能是一个理论模型或原形。
螺旋模型与原型相比:螺旋模型虽不像增量模型中对功能有明确界定,但有比原型要清晰一些。
螺旋模型的反馈要求持续于产品的整个生命期。
适合于大型软件的开发。
协同开发模型又叫协同工程。
定义了一个活动的网络,网络上每个活动、动作和任务同时存在。
过程网络中某一点产生的事件可以触发状态的转换。
可适用于所有类型的软件开发。
基于构件模型:什么是构件?没有统一的定义Gartner Group定义:运行时软件构件是一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过运行时可辨别的文档化接口加以管理和存取类似于螺旋模型,本质上是演化模型。
构件开发的步骤:对所需构件进行评估。
考虑构件的集成。
设计系统的软件框架。
将构件放入框架。
进行测试。
形式化方法模型的主要活动是生成计算机软件形式化的数学规格说明。
特点:精密、准确。
缺点:难度大,成本高,可用人力资源少,用户不易理解,有时甚至无法完成。
方法:有穷状态机、Petri网、Z语言等。
面向方向的模型:将系统分成若干相对较独立的组成部分,这些部分称为方面。
面向方面技术包括面向对象技术,比它大。
系统的方面包括用户接口、协调工作、发布、持续性、存储器管理、事务处理、安全、完整性等。
还不成熟。
具有螺旋型和协同型的共同特点。
统一过程:试图将传统软件模型(惯例软件模型)和敏捷过程模型的优点结合起来,即统一起来。
一些术语:面向对象(Object-Oriented, OO),面向对象分析(Object-Oriented Analysis, OOA),面向对象分析(Object-Oriented Design, OOD).统一过程包括:起始,细化,构建,转换,生产等步骤。
起始:包括客户沟通和策划活动,此时的构架只是主要子系统及其功能、特性的试探性概括。
细化:包括用户沟通和通过过程模型的建模活动,扩展体系结构以包括软件的五种视图:用例模型、分析模型、设计模型、实现模型和部署模型。
构建:与通过软件过程的构建活动相同。
采用体系结构模型作为输入,开发或获取软件构件,使得最终用户能够操作用例。
转换:软件被提交给最终用户进行Beta测试,用户反馈报告缺陷及必要的变更。
另外,发布必须的支持信息:用户手册,用户指南及安装步骤等。
结束时,软件增量成为可用的发布版本。
生产:与通过软件工程的部署一致。
提供运行环境支持,提交并评估缺陷报告和变更请求。
第三章敏捷开发基于敏捷原则进行的软件开发过程,视为敏捷过程。
(所谓“基于”,是指充分考虑,而不是全部包含。
)有自适应和增量提高的过程即是敏捷过程。
掌握敏捷开发宣言普遍存在的变化是敏捷的基本动力理解有哪些敏捷过程模型:极限编程、自适应软件开发、动态系统开发、Scrum、Crystal、特征驱动开发极限编程关键思想极限编程(eXtreme Programming, XP)力求用最少的精力活动最大的成果,运用已有成果、方法。
Scrum 关键思想Scrum原则与敏捷宣言一致:组织小型团队以达到“沟通最大化、负担最小化、非语言描述、非形式化知识”过程对技术和业务变化必须具有适应性,以“保证制造具有最好可能的产品”过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量了解一些过程模型。
开发工作和开发人员分为“清晰的、低耦合的部分或包”坚持在产品构建过程中进行测试和文档化Scrum过程提供“在任何需要的情况下都能完成产品的能力”。
自适应软件开发;自适应软件开发(Adaptive Software Development, ASD)ASD 的三个重点:思考---启动项目并完成自适应循环策划;协作---但同时鼓励个人主义;学习---三种方式,焦点组(学习用户反馈的信息),正式技术评审(自我审视),事后剖析(回望自己团队前面的工作)。
动态系统开发;动态系统开发(Dynamic System Development Method, DSDM)---通过在可控项目环境中使用增量原型开发,模式完全满足对时间有约束的系统的构建和维护。
特点:在每个增量的环节,并不完全完成任务。
留下20%在以后完成。
Crystal目的是开发一种提倡“机动性的”的软件开发方法特征驱动开发特征驱动开发(Feature Driven Development, FDD)特征:能在更短时间内完成的小功能。
可行性研究了解可行性研究的目的和任务掌握数据流图画法(DFD)第四章理解需求需求工程(Requirement Engineering, RE)是指致力于不断理解需求的大量任务和技术。
需求工程在设计和构造之间建立起联系的桥梁。
为什么需求工程特别困难?客户说不清楚需求;需求自身不断变动;分析人员或客户理解有误需求分析的三个层次业务需求、用户需求、功能需求—也包括非功能需求业务需求:反映了组织机构或客户对系统、产品高层次的目标要求。
用户需求:文档描述了用户使用产品必须要完成的任务。
功能需求:定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。