新版软件工程自学笔记资料讲解.docx

上传人:b****7 文档编号:8774483 上传时间:2023-02-01 格式:DOCX 页数:34 大小:325.01KB
下载 相关 举报
新版软件工程自学笔记资料讲解.docx_第1页
第1页 / 共34页
新版软件工程自学笔记资料讲解.docx_第2页
第2页 / 共34页
新版软件工程自学笔记资料讲解.docx_第3页
第3页 / 共34页
新版软件工程自学笔记资料讲解.docx_第4页
第4页 / 共34页
新版软件工程自学笔记资料讲解.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

新版软件工程自学笔记资料讲解.docx

《新版软件工程自学笔记资料讲解.docx》由会员分享,可在线阅读,更多相关《新版软件工程自学笔记资料讲解.docx(34页珍藏版)》请在冰豆网上搜索。

新版软件工程自学笔记资料讲解.docx

新版软件工程自学笔记资料讲解

一.

二.在上海,随着轨道交通的发展,地铁商铺应运而生,并且在重要的商业圈已经形成一定的气候,投资经营地铁商铺逐渐成为一大热门。

在人民广场地下“的美”购物中心,有一家DIY自制饰品店---“碧芝自制饰品店”。

三.(三)大学生购买消费DIY手工艺品的特点分析

四.标题:

大学生究竟难在哪?

—创业要迈五道坎2004年3月23日

五.2.www。

cer。

net/artide/2003082213089728。

shtml。

六.五、创业机会和对策分析

七.

(一)大学生的消费购买能力分析

八.根本不知道□

九.手工艺制品是我国一种传统文化的象征,它品种多样,方式新颖,制作简单,深受广大学生朋友的喜欢。

当今大学生的消费行为表现在追求新颖,追求时尚。

追求个性,表现自我的消费趋向:

购买行为有较强的感情色彩,比起男生热衷于的网络游戏,极限运动,手工艺制品更得女生的喜欢。

一十.合计50100%

一十一.十几年的学校教育让我们大学生掌握了足够的科学文化知识,深韵的文化底子为我们创业奠定了一定的基础。

特别是在大学期间,我们学到的不单单是书本知识,假期的打工经验也帮了大忙。

前言

软件危机:

20世纪60年代,随着计算机的广泛应用,软件生产率,软件质量越来越难以满足社会发展的需求,成为制约社会、经济的制约因素,人们把这一现象称为软件危机;

软件的发展历史:

20世纪60年代末至80年代初,软件系统规模,复杂性以及在关键领域的广泛应用促进了软件的工程化开发和管理;这一时期主要围绕软件项目开展了有关开发模型,开发方法和支持工具的研究;

20世纪80年代以来,基于已开展的大量软件工程实践,围绕对软件工程过程的支持,开展了大量有关软件生产技术特别是软件复用技术和软件生产管理的研究和实践;

软件工程:

软件工程是应用计算机理论与技术,工程管理的原则和方法,按照预算和进度实现满足用户要求的软件的工程,或以此为研究的学科;

软件,软件的本质:

软件是对特定问题域的抽象,是被开发出来的一个逻辑实体,而不是一个有形的物理部件;

软件的本质是实现问题域中的术语和处理逻辑到解空间的术语和逻辑的映射;

所要做的工作:

一是如何实现映射,这是技术层面的问题,又可分为过程方向,即求解软件的开发逻辑,如各种模型;和过程途径,即求解软件的开发手段,如结构化方法,面向对象方法等;

二是如何管理这些映射,这是管理层面的问题;

系统建模是运用所掌握的知识,经过抽象,给出系统的一个结构——系统模型;

基本途径:

求解一个问题的基本途径是系统建模;

所谓系统建模,是根据已掌握的知识,通过抽象给出系统的一个结构——系统模型;

模型是一个抽象,该抽象是在意图所确定的视角和抽象层上对物理系统的描述,描述其中的成分以及各成分之间所具有的特殊语义关系,还包括对系统边界的描述;

在软件设计领域,系统模型分为概念模型和软件模型;概念模型描述了软件是什么;软件模型描述了实现概念模型的软件解决方案;软件模型又可分为设计模型,实现模型和不熟模型等;

OUTLINE:

一十二.软件需求分析

1.需求

(1).需求的定义:

一个需求是一个有关要予构造的陈述,它描述了待开发产品/系统功能上的能力,性能参数或其它性质;

(2).需求的属性:

必要性:

该需求用户所要求的;

无歧义性:

该需求只能用一种方式解释;

可测性:

该需求是可进行测试的;

可测量性:

该需求是可测量的;

可跟踪性:

该需求可以从一个开发阶段跟踪到另一个阶段;

(3).需求的分类:

功能需求:

规约了系统或系统构件必须执行的功能;

性能需求:

规约了系统或系统构件在性能方面必须具有的一些特性;

外部接口需求:

规约了系统或系统构件必须与之交互的用户、硬件、软件或数据库元素;

设计约束:

是一种需求,它限制了软件系统或软件系统构件设计方案的范围;

质量属性:

规约了软件产品所具有的一个性质必须达到其质量方面所期望的一个水平;

(4).需求发现技术:

自悟;

交谈;

观察;

小组会;

提炼;

在使用以上技术时,还都可以辅以诸如原型构造等其它方法;

在实际使用中,往往组合地使用以上技术;

执行需求发现这项活动的人,其技能水平对这项活动的成功具有重大影响;

2.需求规约:

(1).需求规约的定义:

需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个产品/系统的概念模型;

(2).需求规约的性质:

重要性和稳定性程度;

可修改的;

完整的;

一致的;

(3).需求规约的作用:

需求规约是软件开发小组同用户之间一份事实上的技术合同书,是产品功能和环境的体现;

对产品/系统开发,需求规约是一个正式的受控的起始点;

对于项目的其余大多数工作,需求规约是一个管理控制点;

需求规约是创建产品验收测试计划和用户指南的基础;

(4).需求规约的表达方式:

非形式化的需求规约;

半形式化的需求规约;

形式化的需求规约;

OUTLINE:

一十三.

结构化方法

基本思想:

一切信息系统都是由信息流构成的,每一信息流都有自己的起点信息源,有自己的归宿信息潭,有驱动信息流动的加工,所谓信息处理主要体现为信息的流动;

缺点是:

依然没有摆脱冯诺依曼体系结构的影响,所捕获的数据和功能恰恰是客观事物的异变性质,由此所构建的系统结构很难与客观实际系统的结构保持一致;

内部联系:

1.主体为上面图所示,基本术语,过程指导,系统模型;

2.由基本术语联系到过程指导,因为过程指导要涉及到基本术语中的元素,如:

建立系统环境图,确定系统语境,则对应基本术语中的数据源,数据流,加工,和数据潭;

建立系统的层次数据流图,主要对应基本术语中的数据流,数据存储和加工;

定义数据字典,对应基本术语中的数据流和数据存储;

描述加工,则对应基本术语中的加工;

3.结构分析与结构设计的联系,

设计准备,确定边界,对应确定系统边界;

第一次,第二层分解,对应建立系统的层次数据流图;

精化设计,对应定义数据字典;

详细设计,对应描述加工;

1.结构化分析

(1).基本术语:

支持表达分析中所要使用的说明;

●数据流:

用于表达分析中所要使用的,用于表达客体的信息;

●加工:

用于表达分析中所要使用的,用于表达计算的信息;

●数据存储;用于表达分析中所要使用的,用于表达结构化客体的信息;

●数据源和数据潭:

用于表达分析中所要使用的,用于表达系统边界的信息;

(2).数据流图DFD:

表达系统模型的工具,支持表达系统功能;

●数据流起着连接其它实体的作用;

●处理之间可以包含多个数据流;

●对于一个大型的系统,往往需要采用多层次的数据流图;

(3).建模过程:

给出过程指导,支持如何系统的使用相关信息来构造系统模型;

建立系统环境图,确定系统语境;

自顶向下,逐步求精,建立系统的层次数据流图;

●将父图中的每一个加工按照功能分解为若干个子加工;

●将父图中的输入流和输出流分派到相关的子加工上;

●在子加工之间建立合适的联系,必要时引入数据存储,使之形成一个有机的整体;

定义数据字典,依据系统的数据流图,定义其中包含的数据流和数据存储的数据结构,知道给出构成以上数据的数据项的基本数据类型;

数据结构定义符:

顺序结构+,选择结构|,重复结构{},定义=;

数据流条目,数据存储条目,数据项条目;

描述加工,依据系统的数据流图,给出加工的小说明,一般式最底层的加工的输入/输出数据流之间的关系;

●结构化自然语言(外层控制结构+内层自然语言);

●判定表;

●判定树;

2.结构设计

定义满足需求所需要的结构

(1).总体设计

任务是将系统的功能需求放入一个特定的软件体系结构中;

目标是给出系统的模块结构;

初始设计:

A.系统数据流图的分类:

变换型数据流图:

分为输入,变换,输出;

事务型数据流图:

分为输入,分析并确定,选择一条分支;

B.设计步骤:

设计准备,复审并精化系统模型;

确定输入,变换,输出的边界;/确定事务处理中心;

第一级分解,系统模块结构图的顶层和第一层的设计;主模块,输入,变换,输出模块;

第二级分解,从顶向下,逐步求精;

精化设计,模块化和启发式规则

C.模块化

把待建的软件分解为若干简单的高内聚低耦合的模块,这一过程称为模块化;

D.内聚与耦合

内聚是指模块内部各成分之间相互关联程度的度量:

主要有偶然,时间,顺序,通信,逻辑,过程,功能等类型;

耦合是指不同模块之间相互依赖程度的度量;

主要有内容,公共,数据,控制,标记等类型;

E.启发式规则

改进软件设计,提高软件的独立性;

力求模块规模适中;

力求深度,宽度,扇入,善出适中;

尽力使模块的作用域在控制域之内;

力求模块功能可以预测;

尽力降低模块接口的复杂性;

(2).详细设计

目标是给出系统模块结构中各个模块的内部描述过程,即模块内部的算法设计;

详细设计的表格有:

●程序流程图;

●盒图N-S图;

●PAD图;

●类程序设计语言;

结构图:

一十四.

面向对象设计UML

基于的理论是:

世界是由客体组成的,客体都有自己的属性和习惯操作。

客体之间的相互依赖和相互作用构成了世界的各个系统。

面向对象设计是根据客体之间的相互关系来建立系统模型的系统工具。

1.表达客观事务的术语

类和对象

A.类,对象;

B.类是一组具有相同属性,操作,关系和语义的对象的描述。

对象是类的实例。

C.图示:

●名称:

类:

中间对齐,黑体字/斜体字,首字母大写;

属性:

左对其,正常/下划线,首字母小写;

操作:

左对齐,正常/斜体字/下划线,首字母小写,大写;

●格式:

类:

类域:

类;对象:

类;

属性:

±Name:

[]={}

操作:

±Name():

{},(in/outName:

=)

●图示:

●可见性:

+:

public,公有的;

#:

protect,保护的;

-:

private,私有的;

~:

包内的;

D.作用:

模型化问题域中的概念;

建立系统的职责分布模型;

模型化建模中使用的基本类型;

主动类

E.主动类:

ActiveClass;

F.主动类是一种至少具有一个进程或线程的类;

G.图例:

H.模型化系统中的并发行为;

I.包,

J.定义

K.图例:

L.作用:

控制信息组织复杂性;

接口

M.接口,Interface;

N.接口是操作的一个集合,其中每个操作描述了类,构件,子系统所提供的一个服务;

O.图例:

P.模型化系统/产品中的接缝;

协作

Q.协作

R.协作是一个交互,包括交互各方、交互内容和交互方式;

S.

图列:

T.

U.

V.用于表达由一组特定元素参与的具有特定行为的结构,抽象协作性行为;

用况

W.用况,UseCase

X.用况是对一组动作序列的描述,系统执行这些动作应产生对特定参与者有值的可观察的结果;

Y.图例:

ZZ.模型化系统中的并发行为;

构件

AA.构件,Component;

BB.构件是系统/产品设计中的一种模块化部件,通过外部接口隐藏了内部实现;

CC.

图例:

DD.表达解空间中可独立标识的成分;

制品

EE.制品,Artifact

FF.制品是包含物理信息的可替代的物理部件;

GG.图例:

HH.通常用于表达有关源代码信息或运行时信息的一个物理打包,抽象工作产品;

节点

II.节点,Node

JJ.节点是运行时存在的物理元素;

KK.

图例:

LL.通常用于表达一种具有处理能力或存储能力的计算机资源,抽象计算单元;

2.用于表达关系的术语

关联

A.关联(Association);

B.对具有相同语义,结构的关系的描述;

C.

D.抽象结构关系;

E.其它:

依赖

F.依赖(Dependency)

G.;

H.

I.抽象使用关系;

访问

J.访问(Access);

K.;

L.

M.抽象包之间信息的访问关系;

引入

N.引入(Import);

O.;

P.

Q.抽象包之间的使用关系;

泛化

R.泛化(Generalization);

S.;

T.

U.抽象一般特殊关系;

细化

V.细化(Realization)

W.;

X.

Y.抽象细化关系;

3.建模工具

结构图:

表达系统静态结构模型,说明信息;类图,构建图,部署图等;

行为图:

表达系统动态结构模型,行为信息;状态图模型化生命周期,用况图模型化功能,顺序图模型化交互等;

类图

A.类图是可视化表达系统静态结构模型的工具;

B.主要由类,接口,关联,依赖,泛化关系等组成;

C.建造过程:

●模型化待建系统中的概念,形成类图中的各个元素;

●模型化待建系统中的各种关系,形成系统的初始类图;

●模型化系统中的交互,给出系统的最终类图;

●模型化逻辑数据库模式;

状态图

D.状态图是显示一个状态机的图,其中主要强调从一个状态到另一个状态的控制流;

E.组成元素及其图形表示:

●状态:

被延迟事件,进入/退出效应,do动作或活动;

●事件:

信号,调用,时间,变化事件;

●状态转换:

源状态,目标状态,转换触发器,监护条件,效应;

F.主要用于:

●创建一个系统的动态模型;

●创建一个场景的模型;

用况图

G.表达系统功能模型的图形化工具;

H.组成元素及其图形表示:

●参与者

●用况

●主题,用大矩形表示;

●关联,泛化,依赖;

I.建造过程:

●语境的模型化:

得到参与者,主题;将参与者分类,泛化,与用况建立关联;

●需求的模型化:

得到用况;并将用况泛化泛化,包含,扩展;

顺序图

J.顺序图是一种交互图,即包含一组对象和按时序组织的对象之间的关系,还包含对象之间发送的消息;

K.组成元素及其图形表示:

●对象生命线;用于表达一个对象在一个时间段内的存在;

●聚焦控制;用于表达执行一个动作的时间段;

●消息;用于表达交互内容的术语;

●控制控制子:

选择(Opt),条件(alt),迭代(loop),并发(par)执行操作子;

一十五.

RUP

RUP的特点:

以用况为驱动,以体系结构为中心,迭代,增量式开发;

其中每一个特点中都包含需求,分析,设计,实现,测试阶段;

迭代中分为初始阶段,精化阶段,构造阶段,移交阶段;

1.

基本模型

2.每个阶段的大概轮廓,包括横向三项,每项又纵向3层

3.所有活动的规律的整理:

对获取阶段,主要表现为需求的收集,精化和结构化;

在分析阶段,把用况分成大块并表示大块之间的关系,再细分成小块,详细描述小块;

在设计阶段,把大块转化成子系统,并层次化成软件体系,之间的关系转化为接口;小块进一步细化,方向上是从上层和左边进化,即依照上层中同列的用况进化,按照左边大块中的情况进化;

4.详细的过程:

如需求获取包括:

详细每个表格参看课本;

RUP使用用况技术来获取需求;其目的是使用UML中的用况,参与者以及依赖等术语来抽象客观实际问题,创建系统需求获取模型,以及在该模型下的体系结构描述。

用况模型是系统的一种概念模型,是对系统功能的抽象,包括系统参与者,系统用况以及他们之间的关系。

阶段

产生制品

1.列出候选需求

特征列表

2.理解系统语境

领域模型和业务模型

3.捕获系统功能需求

用况模型

4.捕获非功能需求

其它需求或针对特定需求的用况

其中捕获系统需求阶段的活动又可分为:

输入

活动

人员

输出

特征表,领域模型和业务模型,补充需求

1.发现和描述参与者

系统分析人员

用况模型[概述],术语表

2.发现和描述用况

用况模型[概述],术语表,补充需求

3.确定用况优先级

体系设计者

体系结构描述[用况模型视角]

用况模型[概述],术语表,补充需求

4.精化用况

用况描述者

用况[精化]

用况[精化],用况模型[概述],术语表,补充需求

5.构造用户界面原型

人机接口设计者

人机接口

用况[精化],用况模型[概述],术语表,补充需求

6.用况模型的结构化

系统分析员

用况模型[精化]

一十六.

软件测试

1.软件测试

软件测试:

按照特定规程发现软件错误的过程;

软件测试过程模型:

2.软件测试技术;

路径测试技术;

A.控制流程图;

过程块,判定,节点,链;

B.测试策略;

语句覆盖(P1)≤分支覆盖(P2)≤条件和条件组合覆盖≤路径覆盖(PX);

C.路径选择和用例设计;

●选择最简单的、具有一定功能含义的入口、出口路径;

●在已选择的基础上,选择没有循环的路径,选择短路径,简单路径;

●选择没有明显功能含义的路径,并考虑这样的路径为什么能够存在,为什么没有通过功能上合理的路径得到覆盖;

事务流测试技术;

D.事务流程图;

操作,分支,节点,链;

E.与控制流程图的区别:

●基本模型元素所表达的语义不同;

●一个事务不同于路径测试中的一个路径;

●事务流程图中的分支和节点可能是一个更加复杂的过程:

分支,汇集;

并生,吸收;

丝分裂,结合;

F.测试步骤:

●获得事务流程图;

●浏览、复审;

●用例设计;

●测试执行;

等价类划分;

G.划分等价类;

有效对无效:

一对一,一对多,多对一;

H.设计测试用例:

●为每一个等价类规定一个唯一的编号;

●设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步直到所有等价类都被覆盖;

●设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,知道所有无效等价类都被覆盖;

3.软件测试过程;

A.单元测试;

●关注单个模块的结构和功能,还要建立驱动模块和承接模块;

●模块接口:

测试穿过模块接口的控制流;

●局部数据结构:

执行数据结构测试;

●重要的执行路径:

执行执行路径选择测试;

●错误的执行路径:

边界测试;

B.集成测试;

●从顶向下的集成测试,需要编制承接模块;

●从底向上的集成测试,直到放上最后一个模块程序才成为一个对立的整体;

C.有效性测试;

●发现软件实现的功能与需求规格说明书不一致的错误;

D.系统测试;

一十七.

软件生存周期

1.ISO/IEC12207-2008系统/软件工程-软件生存周期模型

背景

ISO/IEC12207-1995:

最早的软件生存周期模型,过程分为基本过程,支持过程,组织过程;

ISO/IEC15288:

系统生存周期模型;

ISO/IEC12207-2008,系统/软件工程-软件生存周期模型,由上两种结合而来;

过程分类及其内在关系:

驱动,支持:

保障:

对项目的执行提供基本保障;

特殊化为:

支持:

提升能力:

过程描述:

●软件实现过程:

活动:

软件实现策略

任务1:

选择并建立适合项目的生存周期模型;

任务2:

建立输入文档并置于配置管理过程之下,按配置管理的过程执行变更;

任务3:

选择,裁剪和使用组织为执行或支持此过程而建立的标准、方法、工具或计算机编程语言;

任务4:

计划该活动过程;

任务5:

确保交付的软件产品的运行和维护不依赖非交付项;

●软件需求分析过程

活动:

软件需求分析;

任务1:

建立软件需求和文档;

任务2:

评估软件需求,并建立相应的评估结果文档;

任务3:

按软件评审过程评审软件需求;

●软件体系结构设计

活动:

软件体系结构设计;

任务1:

将软件项的需求转化为一种体系结构,描述其顶层构架并表示其中的软件构件,建立相应的文档;

任务2:

为软件项的外部接口和软件构件之间的接口开发顶层设计,并建立相关的文档;

任务3:

为数据库开发顶层设计,并建立相关的文档;

任务4:

开发用户文档的初始版本;

任务5:

定义初始测试需求和系统集成进度,并建立相关的文档;

任务6:

评估软件项的体系机构设计,接口设计,数据库设计,并建立相关的文档;

任务7:

按评审过程进行评审;

●软件验证过程

活动1:

过程实现;

任务1.1:

确定项目是否需要一项验证过程以及独立程度;

任务1.2:

如果项目承当验证过程,则应为验证软件产品建立相关的验证过程;

任务1.3:

如果项目需要独立的验证过程,则应选择一个有资格的组织执行验证;

任务1.4:

确定需要验证的生存周期活动和软件产品,并选择合适的验证过程和任务以及执行这些任务相关的方法,技术和工具;

任务1.5:

计划验证过程,并建立相关的文档;

任务1.6:

实现验证过程;

活动2:

验证过程;

任务2.1:

需求验证;

任务2.2:

设计验证;

任务2.3:

代码验证;

任务2.4:

集成验证;

任务2.5:

文档验证;

●软件确认活动

活动1:

过程实现;

任务1.1:

确定项目是否需要一项确认工作以及独立程度;

任务1.2:

如果项目承担确认工作,则应为确认软件产品建立相应的确认过程,并定义确认任务以及相关联的方法、技术和工具;

任务1.3:

如果项目需要独立的确认工作,则应选择一个有资格的组织负责该工作;

任务1.4:

开发确认计划,并建立相应的文档;

任务1.5:

实现确认计划;

活动2:

确认;

任务2.1:

编制选择的测试需求、测试案例和测试规格说明,以分析测试结果;

任务2.2:

确保这些测试需求、测试案例和测试规格说明反映特定期望所使用的特殊需求;

任务2.3:

按照任务1和2执行测试;

任务2.4:

确定软件产品是否满足所期望的使用;

任务2.5:

测试软件产品是否适合所选择的目标环境;

●剪裁过程

任务1:

标识并记录剪裁可能造成的影响;

任务2:

考虑与系统关键特征相关的维度和生存周期结构;

任务3:

从剪裁过程所影响的所有各方获得输入;

任务4:

按照决策管理过程做出剪裁决定;

任务5;选择生存周期过程,剪裁并删除所选择的结果、活动和任务;

2.软件生存周期模型

●瀑布模型:

把软件生存周期各项活动规定为按固定顺序连接的若干阶段工作,形成瀑布流水,最终得到软件产品;

系统需求,软件需求,需求分析,设计,编码,测试,运行;

对支持结构化开发,控制软件开发的复杂性,促进软件开发的工程化起着重要的作用;

●增量模型:

将需求分组,形成一个个增量,对每一个增量实施瀑布式开发;

前提是需求可结构化;

●演化模型:

基于核心需求开发核心系统,根据用户反馈实施开发的迭代过程;

主要用于事先不能完整定义需求的软件开发;

●螺旋模型:

制定计划,风险分析,实施工程,客户评估;

在瀑布模型和演化模型的基础上,增加了他们所忽略的风险分析;

●喷泉模型:

体现了软件创建所固有的迭代和无间隙的特征;

主要用于支持面向对象技术的软件开发;

3.过程规划和管理;

在组织上项目使能过程组中有过程创建,过程评估,过程改进等过程,强调了PDCA,即过程规划,过程执行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1