第一章:软件与软件工程
定义:软件是能够完成预定功能和性能,并对相应数据进行加工的程序和描述数据及其操作的文档。
软件分类:系统软件:一整套服务于其他程序的程序。某些系统软件(例如编译器、编辑器、文件管理软件)处理复杂但确定的信息结构,另一些系统应用程序(例如操作系统构件、驱动程序、网络软件、远程通信处理器)主要处理的是不确定的数据。
应用软件:解决特定业务需要的独立应用程序。这类应用软件处理商务或技术数据,以协助业务操作或协助做出管理/技术决策。
遗留软件演化原因:
软件需要进行适应性调整,从而满足新的计算环境或者技术的需求。
软件必须升级以实现新的商业需求。
软件必须扩展以具有与更多新的系统和数据库协同工作的能力。
软件体系结构必须进行改建以使之能适应不断演化的计算环境。
软件工程:将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
软件过程:是工作产品构建时所执行的一系列获得、动作和任务的集合。
过程框架五个活动:沟通,策划,建模,构建,部署
通用原则:存在价值、保持简洁、保持愿景、关注使用者、面向未来、提前计划复用、认真思考。
第一部分(第二章:过程模型)
四种过程流:线性过程流;迭代过程流;演化过程流;并行过程流。
沟通包含6个不同动作:起始、需求获取、需求细化、协商、规格说明、确认。
UP统一过程的五个阶段:起始阶段;细化阶段;构建阶段;转换阶段;生产阶段
第三章:敏捷和敏捷过程
[Bec01]共同签署了“敏捷软件开发宣言”。他们主张:“个人和他们之间的交流胜过开发过程和工具,可运行的软件胜过宽泛的文档,客户合作胜过合同谈判,对变更的良好响应胜过按部就班地遵循计划。”
Scrum方法★
定义:并列争求法使用迭代的方法,按需求的优先级别来实现产品。多个自组织和自治的小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。
产品待定项:是产品需求或特征的优先级列表
冲刺待定项:是产品团队选择的产品待定项的子集。
冲刺:工作任务在相对较短的时间盒的期限内完成(每30天迭代一次),冲刺中进行的工作适应当前的问题,由Scrum团队规定并进行实时修改。
极限编程(eXtreme Programming,XP):策划,设计,编码,测试。
第五章:软件工程人员方面
软件工程师的特质:个人责任感,敏锐的意识,坦诚,抗压,高度的公平感,注重细节,务实。
好的团队:建立目标意识,参与意识,信任意识,进步意识,
敏捷团队是自组织的。
第六章:理解需求
需求工程:是指致力于不断理解需求的大量任务和技术。
七项任务:起始,获取,细化,协商,规格说明,确认,需求管理。
确认利益相关者:直接或间接从正在开发的系统中获益的人
第八章:设计概念
关注点分离:
任何复杂问题在被分解为若干块后将更易处理。
模块化衡量指标:best:高内聚性和低耦合性。
第九章:体系结构设计
分类:1.以数据为中心的体系结构,2数据流,3调用和返回,4面向对象,5,层次体系结构。
第十章:构件级设计
原则:开闭原则,liskov替换原则,依赖倒置原则,接口分离原则,发布/复用等价性原则,共同复用原则。
第十一章:体验设计
黄金规则
把控制权交给用户
减轻用户的记忆负担
保持界面一致