第四章——敏捷开发(agile process)
1.软件敏捷开发宣言(Manifesto) ①个体和交互胜过过程和工具 ②可工作软件胜过宽泛的文档 ③用户合作胜过合同谈判 ④响应变化胜过遵循计划
普遍存在的变化是敏捷的基本动力。所有敏捷方法都或多或少的遵循以上的原则。
2.Agility is more than ①an effective response to change。 ②effective communication among stakeholders ③drawing the custom onto the team
③organizing a team so that it's control of the work performed
Agile alliance 的12条准则中,第一条是最优先要做的是通过尽早、持续交付valuable software来满足用户的要求
敏捷可用于任何软件过程,实现要点是将软件过程设计为如下方式: ①允许项目团队调整并合理安排任务 ②理解敏捷开发方法的易变性并制定计划 ③精简并维持最基本的工作产品 ④强调增量交付策略
3.敏捷过程的三个假设(Assumption):
①提前预测哪些需求是稳定的和哪些需求会变化非常困难。
②对许多软件来说,设计和构建是交错进行的。事实上,两种活动应顺序开展(tandem)以保证通过构建实施来验证设计模型,而在通过构建验证之前很难估计到应当设计到什么程度。 ③从制定计划的角度来看,设计、分析、构建和测试并不像我们所设想的那么容易预测。 以上说明敏捷过程必须具有自适应性(adaptable)。
4.软件开发团队及成员应具有的特点: ①competence ②common focus
6
③collaboration
④decision-making ability
⑤fuzzy problem-sloving ability ⑥mutual trust and respect ⑦self-organization
5.极限编程XP
①XP使用面向对象方法作为推荐的开发范型
②XP的四个框架活动:planning、design、coding、testing(计划、设计、编码和测试)
③Planning始于建立一系列描述待开发软件必要特征与功能的故事(story or user story)。项目速度是第一个发行版本中实现的用户故事个数。
④XP design遵循kis原则(Keep-it-simple);鼓励使用CRC作为有效机制;如果在某个故事设计中碰到困难,实现并评估原型;XP估计既是构建技术又是设计中的重构。
⑤XP coding中的关键概念之一是结对编程(pair programming)。
⑥在编码之前建立单元测试是XP方法的关键因素,XP验收测试(也称用户测试),由客户确定,根据用户故事得到的。
6.重构( ):是以不改变代码外部行为而进行改进其内部结构的方式来修改软件系统的过程。简而言之,重构是在编码完成之后改进代码设计。
7.自适应软件开发(ASD)强调human collaboration和team self-organization。 ASD的三个阶段:①speculation(思考)②collaboration ③learning
8.动态系统开发方法(DSDM)
①DSDM建议使用修改版Pareto原则。在这种情况下,如果交付整个应用系统需用100%时间,那么80%的应用系统可以用20%的时间交付。 ②像XP和ASD一样,DSDM建议使用迭代软件过程。
9.Scrum(橄榄球)
①每一个框架活动中,发生于一个过程模式中的工作任务称为一个冲刺。 ②每一个过程模式定义的一系列问题:待定项(backlog)、冲刺(sprint) ③十五分钟例会回答的基本问题:
A.上次例会之后做了什么 B.遇到什么困难
C.下次例会之前做些什么
10.Crystal提倡一种机动性的软件开发方法。
11.特征驱动开发(FDD)
①特征是可以在两周或更短的时间实现的具有客户价值的功能。 ②FDD更强调项目管理原则和技术。
12.敏捷建模(AM)认为对所有的系统都是有必要的。AM给实践者(practitioner)的分析和任务设计以非常有用的指导。
7
13.敏捷理念强调的四个关键问题:
①具有控制力的自我组织团队对所开展工作的重要性 ②团队成员之间、开发参与者与客户之间的交流与合作 ③对变更代表机遇的认识
④强调快速软件交付让客户满意
第五章——软件工程实践综述
1.软件工程实践的精髓: ①理解问题(交流和分析)
②计划解决方案(建模和软件设计) ③实施计划(代码生成)
④检查结果的精确度(测试和质量保证)
2.David hooker提出的关注软件工程整体实践的核心原则:
①存在价值 ②保持简洁 ③维护视图 ④生产者要让消费者理解 ⑤面向未来 ⑥计划复用 ⑦认真思考
3.WHH原则——开发一个实际项目计划所必须提出和回答的问题是:
①为什么要开发 ②要做什么东西 ③什么时候完成 ④功能由谁负责 ⑤组织位于哪里 ⑥怎样才能在工作中体现技术和管理 ⑦需要多少资源
4.在软件工程中,需要建立两类模型:分析建模(analysis )和设计建模(design),建模的目的是加深对所要完成的工作的理解并为开发人员提供技术指导。
①分析模型通过三个不同域描述来表达用户的需求:the information domain(信息域)、the functional domain(功能域)、the behavioral domain(行为域)
②设计模型可以帮助开发者高效开发软件的特征:the architecture(构架)、the user interface(用户界面)、component-level detail(构件细节)
5.构造活动包括一系列编码和测试任务
①最初的测试是构件级的,称为单元测试(unit test) ②集成测试(integration test)——在构建系统的时候进行
③确认测试(validation test)——是测试系统是否完全按照需求开发
④验收测试(acceptance test)——由用户检验系统是否按照需求实现了所有的功能
6.测试规则:
①测试是一个以查找程序错误为目的的程序执行过程
②一个好的测试(good test)用例能最大限度地找到尚未发现的错误 ③一个成功的测试(successful test)能找到那些尚未发现的错误
7. 部署活动包括三个动作:交付(delivery)、支持(support)和反馈(feedback) 部署活动并不只是发生一次,而是在软件完全开发完成之前要进行许多次。
8.叙述软件构造和软件部署的区别
软件构建包括编码和测试,是在开发阶段由开发人员来完成;
软件部署是将所完成的部分交付给客户,由客户对其进行评测和反馈意见,此时开发人员提供技术支持和维护。
5 8
第六章——系统工程(System engineering)
1.计算机的系统:组织在一起通过处理信息来实现预定目标的要素集合或排列。
2.系统要素(system element): ①software(软件) ②hardware(硬件) ③people(人员) ④database(数据库) ⑤documentation(文档) ⑥procedure(规程)
宏要素是指基于计算机系统,它作为更大的基于计算机的系统的一部分。
3.the system hierarchy:world view→domain view→element view→detailed view 4.建立模型工程师要考虑的restraining factor: ①Assumption ②simplification ③limitation ④construction ⑤preferences
5.业务过程工程(BPE)
①The goal of business process engineering is to define architectures that will enable a business to use information effectively。
②BPE定义和开发的三种架构:data architecture、application architecture、technology architecture
③业务过程工程层次:信息战略计划→业务区域分析→业务系统设计→构建和集成
6.产品工程
①the goal of product engineering is to translate the customer's desire for a set of defined capabilities into working product。(定义一个能有效利用信息进行业务活动的体系) ②产品工程是从系统分析开始的系统工程,软件工程师确定用户需求。
③产品工程给出构架的不同系统构件:software、hardware、database、people ④产品工程层次图:需求工程→构件工程→分析和设计建模→构建和集成
7.系统建模:每个基于计算机的系统都可按“输入-处理-输出”模板进行信息转换。
8.Hatley-Pirbhai建模模板: ①user interface ②input
③system function and control ④output
⑤maintenance and self-test
系统环境图a system context diagram(SCD)resides at the top level of the hierarchy。
9.Unified Modeling Language (UML)
9
**统一建模语言,对软件进行可视化、规约、构造、文档化的一种语言。 UML大量的图表表示法,用于在系统和软件层次分析和设计。涉及到的图:
Deployment diagram(硬件)、activity diagram(软件)、class diagram(软件)、use-case diagram
第七章——需求工程(requirement engineering)
1. RE is a software engineering action that can begins during the communication activity and continues into the modeling activity。是design和construction的桥梁。 目的:在设计和构造之间建立起联系的桥梁
任务:启始、导出、精化、协商、规格说明、确认和管理
2.需求工程通过执行7个不同的活动来完成: ①Inception(起始)
A.establish basic problem requirements B.define overriding project constrains C.address major features and functions
②Elicitation (导出):elicit requirements from all stakeholders ,在此阶段利用facilitate meetings、QFD、the development of user scenarios 来进行需求收集活动。 需求导出困难的原因: A. problem of scope
B. problems of understanding
C. problems of volatility(易变性)
③elaboration(细化):create an analysis model that identifies data 、function and behavioral requirement。
④negotiation(谈判):agree on a deliverable system that is realistic for customer and developer ⑤specification(规格说明):is the final work product produced by the requirement
engineering,描述了一个基于计算机系统的功能和性能,以及那些将影响开发系统的约束。 规格说明的形式和格式随着待开发的规模和复杂度的不同而变化。
⑥validation(确认):检查规格查找内容或解释上的错误,以及可能进一步需要解释澄清的地方、丢失的信息,不一致性(consistency是重点)、冲突的需求或不显示的需求。以保证所有系统需求已被无歧义地说明。
⑦management(管理):需求管理是用于帮助项目组进展中标识、控制和跟踪需求以及变更需求的一组活动。
3. 项目初始时的提问应该是context-free(与环境无关的)。The first set of context-free
questions focuses on the customer and other stakeholder,overall goals,and benefits。需求工程师可能会问:
①who is behind the request for this work? ②who will use the solution?
③what will be economic benefit of a successful solution? ④is there another source for the solution that you need?
4.质量功能部署(QFD)是一种将用户要求转化成软件技术需求的技术,QFD以最大限度地满足客户的方式来定义需求,贯穿于整个软件工程。QFD确认了三类需求:
10