第一部分 软件过程(持更中)
第1章 软件的本质
1. 定义软件
1.指令的集合 2.数据结构 3.软件描述信息
2. 软件应用领域
系统软件,应用软件,工程/科学软件,嵌入式软件,
产品线软件,Web/移动软件,人工智能软件
3. 遗留软件
没有失效就不用改变
4. 软件变更类型
WebApp 移动App 云计算 产品线软件
| 这里的背景色是:PowderBlue |
第2章 软件工程
1. 软件工程的定义
美国电器电子工程协会IEEE对软件工程的定义如下:
1.将系统化,规范化,可量化的方法应用于软件的开发,运行和维护,即将工程化方法
应用于软件;2.对第1点中所描述方法的研究。
软件工程是一种层次化的技术:
1.支持软件工程的根基在于质量关注点quality focus。
2.软件工程的基础是过程层process。
3.软件工程方法是为构建软件提供技术上的解决方法method。
4.软件工程工具为过程和方法提供自动化或半自动化的支持tool。
2. 过程框架
过程框架(process framework) 定义了若干个框架活动(framework activity),为实现完整的让软件工程过程建立了基础。此外,过程框架还包含适用于整个软件过程的普适性活动 (unbrella activity)
一个通用的软件工程过程框架通常包含以下5个活动:
沟通 策划 建模 构建 部署
第3章 软件过程结构
第4章 过程模型
1,惯用过程模型
1. 瀑布模型(waterfall model)||经典生命周期(classic life cycle)
适用于需求明确 或对已存在的系统进行适应性调整。
可能会导致 “阻塞状态”。
1.瀑布模型变形—V模型
·一旦编码结束,沿着V模型右侧的步骤向上推进,执行一系列测试。
·V模型与瀑布模型没有本质区别,不过V模型提供了一种将验证与确认
应用于早期软件工程的直观方法。
2. 增量过程模型
·适用于迫切的为用户提供提供一套功能有限的产品,然后在后续
过程中细化和扩展功能。
·运用增量模型时,第一个增量往往是核心产品,也就是满足了
基本需求,但是没有提供附加的特性。
3. 演化过程模型—原型开发(prototyping paradigm)
·原型开发是迭代的过程模型
4. 演化过程模型—螺旋模型
·螺旋模型是一种演进式软件过程模型,结合的原型的迭代性质和
瀑布模型的可控性和系统性特点。
·是一种风险驱动型的过程模型生成器
5. 并发模型
2,专用过程模型
1. 基于构建的开发
2. 形式化方法模型
3. 面向方面的软件过程开发
3,统一过程UP
统一过程:是一种 “用例驱动,以构架为核心,迭代并增量”的软件过程
统一过程把一个项目分为四个不同的阶段:
·构思阶段:
·细化阶段:
·构件阶段:
·移交阶段:
第5章 敏捷开发
敏捷开发是一种以人为核心,迭代,循环渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。
常见的敏捷开发方法有 极限编程法,水晶法,并列争球法和自适应软件开发法。
1,极限编程
是一种轻量级开发方法,提出了四大价值观:沟通,简单,反馈,勇气;
五大原则:快速反馈,简单性假设,逐步修改,提倡更改,优质工作;
十二个最佳实践:
2,水晶法
水晶法强调经常交付,认为每一种不同的项目都需要一种不同的策略,约论和方法类
3,并列争球法
核心是迭代,增量交付,按照30天进行迭代开发交付可实际运行的软件
4,自适应软件开发法
核心是三个非线性的,重迭的开发阶段:猜测,合作,学习。
第6章 软件工程人员方面
团队结构
软件工程团队的四种组织模式:
1.封闭模式:
2.随机模式:
3.开放模式:
4.同步模式:
第二部分 建模
第7章 理解需求
需求分析的任务是解决做什么的问题
需求的分类
1.功能需求:考虑系统在做什么,在何时做,在何时以及如何修改或升级
2.非功能需求:考虑软件开发的技术性指标,例如存储容量限制,执行速度,响应时间及吞吐率等
3.设计约束:除功能需求和非功能需求以外的需求,例如操作系统限制,开发语言限制等
需求分析的工具有判定表,判定树,数据流图和数据字典
需求分析的产物有:需求规格说明书SRS
1,需求工程(Requirement Engineering)
1,需求工程的定义
需求工程 是指致力于不断理解需求的 大量任务和技术。从软件过程
的角度来看,需求工程是一个软件过程动作,开始于沟通并持续到建
模活动。它必须适用于过程。项目,产品和人员的需要。
2,需求工程的七任务
起始,获取,细化,协商,规格说明,确认,管理。
第8章 需求建模:基于场景的方法
1,需求分析
需求建模的三个主目标:
1.描述客户需要什么
2.为软件设计奠定基础
3.定义软件完成后可被确认的一种需求
2,需求建模方法
1.结构化分析:一种考虑数据和处理的需求建模方法,其中处理过程
将数据作为独立实体加以转换,数据对象建模定义了对象的属性和关系,
操作数据对象的处理建模应表面当数据对象在系统内流动时处理过程将
如何转换数据。
2.面向对象分析:这种方法关注类的定义和影响客户需求的类之间的
协作方式。UML和统一过程主要是面向对象的分析方法。
第9章 需求建模:基于类的方法
CRC建模
第10章 需求建模:行为和模式
无
第11章 设计概念
设计的任务:是解决怎么做的问题
设计的目标:是可以创作出坚固,适用和令人愉悦的模型或表示
软件设计包括体系结构设计,接口设计,数据设计和过程设计。
过程设计:系统结构部件转换成软件的过程描述
结构设计:定义软件系统各主要部件之间的关系
接口设计(人机界面设计):
数据设计:
1,指导良好设计演化的三个特征
1.设计应当实现所有包含在需求模型中的明确需求,而且必须满足
利益相关者期望的所有隐含需求。
2.对于那些编码者和测试者以及随后的软件维护者而言,设计应当是
可读的,可理解的指南。
3.设计应当提供软件的去全貌,从实现的角度对数据域,功能域和
行为域进行说明。
2,质量属性 FURPS
质量属性FURPS字母分别代表了founctionality,usablity,reliablity,performance,supportzbility, 体现了所有软件设计的目标。
·功能性:通过评估程序的特征集和能力,所提交功能的通用性以及
整个系统的安全性来评估。
·易用性:通过考虑人员因素,整体美感,一致性和文档来评估。
·可靠性:通过测量故障的的频率和严重性,输出结果的精确性,
平均故障时间,故障恢复能力和程序的可预见性来评估。
·性能:通过考虑处理时间,响应时间,资源消耗,吞吐量和效率
来度量。
·可支持性:综合了可扩展性,可适应性和可用性,
三个属性体现了一个更为通用的术语即可维护性。
3,五种设计类
当设计模型发生演化时,必须动议一组设计类,它们可以 (1)通过提供方设计细节对分析类进行求精(2)实现支持业务解决 方案的软件基础设施
以下给出五种不同类型的设计类:
1.用户接口类:
2.业务域类:
3.过程类:
4.持久类:
5.系统类:
4,设计模型的四个主要元素
1.体系结构元素
2.接口元素
3.构建级元素
4.部署级元素
5,体系结构模型三个主要来源
1.关于将要构建的软件的应用域信息。
2.特定的需求模型元素,如数据流图或分析类,现有问题中它们的
关系和协作。
3.可获得的体系结构风格和模式。
6,接口设计三要素
1.用户界面
2.和其他系统,设备,网络,信息生成者或使用者的外部接口;
3.各设计构建之间的内部接口。
第12章 体系结构设计
1,软件体系结构
体系结构的定义:程序或计算机系统的软件体系结构是指系统的一个
或多个结构,它包括软件构件,构建的外部可见属性以及它们之间的
相互关系。
体系结构并非可运行的软件。准确的说,他是一种表达,使你能够:
(1)对设计在满足既定需求方面的有效性进行分析。
(2)在设计变更相对容易的阶段,考虑体系结构可能选择的方案。
(3)降低与软件构建相关的风险。
强调了软件构件在任意体系结构表示中的作用
2,体系结构的物种风格
1.以数据为中心的体系结构:
2.数据流体系结构:
3.调用和返回体系结构:
4.面向对象体系结构:
5.层次体系结构:
第13章 构建级设计
1,基本设计原则
1.开放封闭原则
2.Liskov替换原则
3.依赖倒置原则
4.接口分离原则
5.共同复用原则
6.共同封装原则
7.发布复用等价性原则
软件设计原则高内聚,低耦合
2,内聚性
·功能内聚:通过操作来实现
·分层内聚:由包,构件和类来体现。
·通信内聚:数据
3,耦合性
·内容耦合:
·控制耦合:
·外部耦合:
4,软件构件标准
第14章 用户界面设计
1,黄金规则
·把控制权交给用户
·减轻用户的记忆负担
·保持界面一致
2,四种模型
·工程师或软件工程师建立的用户模型
·软件工程师创建的设计模型
·最终用户在脑海里对界面产生的映像,称为用户的心理模型或系统模型
·系统的实现者创建实现模型
第三部分 质量管理
第15章 质量概念
1,软件质量
软件质量的定义:在一定程度上应用有效的软件过程,创造有用的产品,为生产者和使用者提供明显的价值。
·有效的软件过程:为生产高质量的软件产品奠定了基础。
·有用的产品:是指交付最终用户要求的内容,功能和特征,但最重要的是以可靠,无误的方式交付这些东西。
·通过为软件产品的的生产者和使用者增值:高质量软件为软件组织和最终用户群体带来了收益。
2,McCall的质量因素
(1)产品运行(操作特性):
·正确性:
·可靠性:
·易用性:
·完整性:
·效率:
(2)产品转移:
可移植性:
可复用性:
可操作系:
(3)产品修改:
可维护性:
灵活性:
易测试性:
3,质量特性
质量成本可分为预防成本,评估成本和失效成本
需求->设计->编码->测试->维护 测试和维护所需要的成本陡升。
第17章 软件测试策略
软件测试的目的:为了发现软件设计和实现过程中因疏忽所造成的错误
图17-1
单元测试:侧重于构件中的内部处理逻辑和数据结构
集成测试:侧重于软件体系结构的设计和构建
确认测试:对需求进行确认,需要用户参与
系统测试:将软件与系统的其他成分作为一个整体来测试
第18章测试传统的应用软件
测试可分为两种方式,一,外部视角即黑盒测试。二,内部视角即白盒测试。
黑盒测试:暗指在软件接口处执行测试,检查系统的功能方面,而不考虑软件的内部结构。
白盒测试:是基于过程细节的封闭式检查,通过提供检查特定条件集或循环的测试用例,测试将贯穿软件的逻辑路径和构件间的协作。
白盒测试导出的测试用例可以是:1. 2. 3. 4.
黑盒白盒测试
第四部分 管理软件项目
第22章 项目管理概念
1,软件建项目管理的4P
1.人员:一个成功的项目最重要的因素
2.产品:建立的软件
3.过程:框架活动集和完成工作的软件工程任务
4.项目:所有需要做的工作。使一个产品变成现实
2,软件工程团队的四种组织范型
1.封闭式范型:按传统的权力层次来组织团队
2.随机式范型:松散的组织团队,团队工作依赖于团队成员个人的主动性
3.开放式范型:试图以一种具有封闭封闭式范型的控制性,又包含随机式范型的创新性的方式来组织团队
4.同步式范型:依赖于问题的自然划分,组织团队成员各自解决问的的一部分,他们之间各自没有什么主动的交流
第五部分 UML统一建模语言
系统功能模型:由用例图组成
系统静态模型:由类图、对象图、包图、构件图和配置图组成
系统动态模型:由活动图、顺序图、状态图和合作图组成
1,系统功能模型
系统功能模型:为满足用户的需要而建立的,描述了系统所提供的功能, 着重于系统内部数据的传送与出路 对输入的数据进行必要的 计算处理
1,用例图(Use Case Diagram)
1,用例图定义
描述了各种外部执行者与系统所提供的用例之间的连接
一种描述用例(场景)的可视化工具,用简单的图形元素表示出系统的参与者、用例以及它们之间的联系,准确地表达了参与者与系统的交互情况和系统所能提供的服务
2,系统静态模型
系统静态模型:描述系统的静态结构,包括系统的类和对象、它们的属性和操作以及 这些对象类之间的的联系
1,类图
2,对象图
3,包图
4,构件图
5,配置图
3,系统动态模型
系统动态模型:描述系统的动态行为,指明系统如何响应外部的事件或激励,涉及系统中对象的执行顺序和状态的变化,侧重系统控制逻辑的描述
软件工程概览:从过程到建模与质量管理
本文概述了软件工程的核心内容,包括软件的本质、软件工程的定义和过程框架,深入探讨了瀑布模型、敏捷开发方法如极限编程和水晶法,以及建模的各个方面,如需求分析、体系结构设计和质量保证。同时,提到了UML统一建模语言在系统功能和动态建模中的应用。
2万+

被折叠的 条评论
为什么被折叠?



