- 软件生命周期:可行性研究与计划、需求分析、概要设计、详细设计、开发实现、集成测试、确认测试、使用和维护
- 软件开发模型:瀑布模型、瀑布v模型、螺旋模型、增量模型、构件组装模型、
- 统一过程:一个迭代的二维开发、可以演变为其他演变模型、更易控制、可以进行裁剪、不是敏捷方法
- 敏捷方法:极限编程、特征驱动开发、scrum开发方法、水晶方法、开放式源码方法
- 软件重用:软件重用、构件技术
- 基于架构的软件设计:抽象功能需求、用例、抽象的质量和业务需求、质量因素、加厚选项、约束
- 形式化方法:用数学方法精确的描述、开发和验证系统
敏捷开发:
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
- 极限编程法:一种轻量级的开发方法,它提出了四大价值观:沟通,简单,反馈,勇气。五大原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作。
- 水晶法:强调经常交付,认为每一种不同的项目都需要一套不同的策略,约定和方法论。
- 并列争球法(Scrum):核心是迭代,增量交付,按照30天进行迭代开发交互可实际运行的软件
- 自适应软件开发:核心是三个非线性的,重迭的开发阶段,猜测,合作,学习。
- DSDM(动态系统开发方法)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发方法之一。
- RUP其实是个过程的框架,它可以包容许多不同类型的过程, Craig Larman 极力主张以敏捷型方式来使用RUP。他的观点是:目前如此众多的努力以推进敏捷型方法,只不过是在接受能被视为RUP 的主流OO开发方法而已。
- FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、 易于被开发团队接受,适用于需求经常变动的项目。
RUP(Rational Unified Process)统一软件开发过程:RUP包括了角色,活动,制品和工作流4种重要的模型元素。角色表述了谁做,制品表述做什么,活动表述怎么做,工作流表述什么时候做。
- 初启阶段(里程碑:生命周期目标):产生一个构想文档,一个有关用例模型的调查,一个初始的业务用例,一个早期的风险评估和一个可以显示阶段和迭代的项目计划等制品。
- 细化阶段(里程碑:生命周期架构):一个补充需求分析,一个软件架构描叙和一个可执行的架构原型等制品。
- 构建阶段(里程碑:初始化运作功能):一个准备交到最终用户手中的产品,包括具有最初运作能力的在适当的平台上集成的软件产品,用户手册和对当前版本的描述。
- 移交阶段(里程碑:产品发布):移交给用户产品发布版本。
耦合:讲解视频地址(6:44开始)
- 公共耦合:通过一个公共数据环境相互作用的那些模块间的耦合。
- 控制耦合:两个模块彼此间传递的信息中有控制信息。
- 数据耦合:两个模块彼此间通过数据参数交互信息。
- 标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。传递的是这个数据结构的地址。
- 内容耦合:一个模块需要涉及到另一个模块的内部信息。
- 通信耦合:一个模块的所有成分都操作同一数据集或生成同一个数据集。
内聚:讲解视频地址
注:顺序内聚的模块中的处理元素是密切相关于同一功能的;而过程内聚模块中的元素是两个需要有先后执行关系的不同功能的部分。
变换:
- 传入模块:从下属模块取得数据,经处理再将其传送给上级模块
- 传出模块:从上级模块取得数据,经处理再将其传送给下属模块
- 变换模块:从上级模块取得数据,进行特定的处理,转换成其他形式,再传送给上级模块。
结构化开发方法:
- 体系结构设计:定义软件系统各主要部件之间的关系。
- 数据设计:基于E-R图确定软件涉及的文件系统的结构及数据库的表结构。
- 接口设计(人机界面设计):软件内部,软件和操作系统间以及软件和人之间如何通信。
- 过程设计:系统结构部件转换成软件的过程描述。确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。
人机界面设计三原则:
用户操纵控制,减少用户的记忆负担,保持界面的一致性。
- 用户操作控制:以不强迫用户进入不必要或不希望的动作的方式来定义交互模式;提供灵活的交互;允许中断和撤销用户交互;
- 减少用户的记忆负担:减少对短期记忆的要求,建立有意义的默认;定义直观的快捷方式;界面的视觉布局应该基于真实世界的象征;以不断进展的方式揭示信息。
- 保持界面一致:允许用户将当前任务放入到有意义的环境中;在应用系统家族中保持一致;如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要改变它。