软件工程笔记.docx
《软件工程笔记.docx》由会员分享,可在线阅读,更多相关《软件工程笔记.docx(39页珍藏版)》请在冰豆网上搜索。
![软件工程笔记.docx](https://file1.bdocx.com/fileroot1/2023-1/26/bb407430-ca49-467d-aeda-95e666f9c48a/bb407430-ca49-467d-aeda-95e666f9c48a1.gif)
软件工程笔记
软件工程概论
2s9a6T5y }0O3E2.5d61、软件危机
1)、软件工程的目的:
倡导以工程的原理、原则和方法进行软件开发,以解决当时出现的软件危机。
7\,s0B9C5N7g2)、软件危机:
指在计算机软件开发和维护过程中所遇到的一系列问题。
A、如何开发软件以满足对软件日益增长的需求。
4A6Y"O$c"F8b'\,I北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研B、如何维护数量不断增长的已有软件。
3)、软件危机的主要表现形式
A、软件开发成本高,研制进度无法准确估计,用户不满意。
3g W,q5X$j北京大学软件工程硕士北京大学软件与微电子学院|北软论坛B、软件产品的可靠性得不到保证。
C、软件产品难以维护。
+h,U8A8`2o(^&E(H(l.H一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
D、软件发展跟不上硬件的发展和用户的要求,硬件成本逐年下降,软件成本越来越昂贵。
2、软件工程概念
!
x6H8{1]'`:
{)x9s北京大学软件工程硕士北京大学软件与微电子学院|北软论坛1)、软件:
计算机系统中的程序及其文档。
程序是计算任务的处理对象和处理规则的描述;文档是为了便于理解程序所需的阐明性资料。
细言之,软件有三层含义:
A、个体含义:
即指计算机系统中的程序及其文档。
B、整体含义:
即指在特定计算机系统中所有上述个体含义下的软件的总称。
&P,g5V1S2_6l6.5d6、学科含义:
即指在研究、开发、维护以及使用前述含义下的软件所涉及的理论、方法、技术所构成的学科。
2)、工程:
将理论和所学的知识应用于实践的科学。
3)、软件工程:
应用计算机科学、数学及管理科学等原理,开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
8J!
{(v!
B*?
;Y9{*J5R
/Y;Q$N3{6K H0r北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研3、软件工程框架(参见附图软件工程框架示意图)
/I*t9g5P:
w北京大学软件工程硕士北京大学软件与微电子学院|北软论坛
1c)q:
E `7`(i:
o6Z"r1)、软件工程目标:
生产具有正确性、可用性和开销合宜的产品。
&y2_*G Y2^:
T北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研A、正确性:
是指软件产品达到预期功能的程度。
B、可用性:
是指软件基本结构、实现以及文档为用户可用的程度。
6T6C;D1f'?
'p.].5d6、开销合宜:
是指软件开发、运行的整个开销满足用户要求的程度。
7B"L"U:
S!
j(G9l7t一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
2)、软件开发活动:
生产一个最终满足需求且达到工程目标的软件产品所需要的活动。
软件开发的基本活动包括:
需求、设计、实现、确认、和支持。
A、需求:
就是定义问题。
%~5l8q4、设计:
在需求的基础上,给出被建系统的软件设计方案。
2[;o)g8.5d6、实现:
在软件设计的基础上,编码被建系统软件体系结构中的每一模块或构件。
F2D1?
'c7、确认:
需求复审、设计复审及程序测试。
E、支持:
为系统的运行提供纠错性维护和完善性维护。
3)、软件工程原则:
围绕软件开发,提出了以下基本原则。
"k9}/P:
V"[5\!
e$.5d6、选取适宜的开发范型:
在系统设计中,经常需要权衡软件需求、硬件需求以及其它因素之间的相互制约和影响,适应需求的易变性。
选用适宜的开发范型,以保证软件开发的可持续性,并使最终的软件产品满足客户的要求。
B、采用好的设计方法:
在软件设计中,通常需要考虑软件的模块化、信息隐蔽、局部化、一致性以及适应性等问题。
采用合适的设计方法,支持这些问题的解决和实现。
C、提供高质量的工程支持:
如其它工程一样,需要提供高质量的工程支持,例如配置管理、质量保证等,才能按期交付高质量的软件产品。
D、有效的软件工程管理:
软件工程的管理,直接影响可用资源的有效利用,提高软件组织的生产能力。
仅当对软件过程实施有效管理时,才能实现有效的软件工程。
4)、软件工程学科研究的内容:
软件开发模型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程以及软件经济学等。
6[!
f8{*J9v北京大学软件工程硕士北京大学软件与微电子学院|北软论坛5)、软件开发方法学:
是一种已定义好的技术集和符号表示习惯,来组织软件开发的过程,一般表示为一系列步骤,包括结构化方法、面向对象方法、方法、方法、方法、可视化方法等。
软件开发模型
-S!
S3h3G9w)~5R
:
T2s!
U6v1h0f)r携手北软1、软件开发模型:
软件开发全部过程、活动、任务的结构框架。
2、软件生存周期:
软件产品从定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程。
#Z.Y6D*O北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研
3、软件过程:
是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
)f,c9V0x!
`携手北软
4、瀑布模型(参见瀑布模型示意图)
(K4~$E2g"n(b(^1)、概述:
将软件生存周期的各项活动规定为依固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品,是一种线性模型。
2)、各阶段活动:
提出系统需求、提出软件需求、需求分析、设计、编码、测试和运行。
)m6?
!
D"Q1q ],r北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研3)、每一阶段的特征
A、从上一阶段接受本阶段工作的对象,作为输入。
:
C1H(^(G一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
B、对上述输入实施本阶段的活动。
/e:
Q)A"Z5.5d6、给出本阶段的工作成果,作为输出传入下一阶段。
*Y;Z$^7S1G.s"b;a北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研D、对本阶段工作进行评审,若本阶段工作得到确认,则继续下阶段工作;否则返回前一阶段,甚至更前阶段。
4)、优缺点
A、优点:
在支持结构化软件开发、控制软件开发的复杂性、促进软件开发工程化等方面起着显著作用。
6_)M.],w4a一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
B、缺点:
缺乏灵活性,无法通过开发活动澄清本来不够确切的软件需求。
/e9S*?
6m:
m:
w.s*X北京大学软件工程硕士北京大学软件与微电子学院|北软论坛5、演化模型(参见演化模型示意图)
1)、概述:
演化模型主要针对事先不能完整定义需求的软件开发。
2)、开发过程:
首先开发核心系统,当核心系统投入运行后,开发人员根据用户的反馈,实施开发的迭代过程。
每一迭代过程均由需求、设计、编码、测试、集成等阶段组成,直到软件开发结束。
3)、优点:
一定程度上减少了软件开发活动的盲目性。
%D*K:
\8H"k;\1F$T7I北京大学软件工程硕士北京大学软件与微电子学院|北软论坛
7T;g6\#b!
m8S北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研6、螺旋模型(参见螺旋模型示意图)
!
U9@'c(g$T"p8{8@1)、概述:
在瀑布模型和演化模型的基础上,加入两者所忽略的风险分析所建立的一种软件开发模型。
2)、特点:
沿螺旋模型顺时针方向,依次表达了四个方面的活动,制定计划、风险分析、实施工程、客户评估。
7、喷泉模型:
它体现了软件创建所固有的迭代和无间隙特征。
主要用于面向对象开发过程。
(参见喷泉模型示意图)
8、增量模型:
在设计了软件系统整体体系结构之后,首先完整的开发系统的一个初始子集,继之,根据这一子集,建造一个更加精细的版本,如些不断地进行系统的增量开发。
(参见增量模型示意图)
&T6N D(Z7L0c9f;E$_8S5U9w
%X)j2f1V4]北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研
)x2~:
}9[$C:
q0U携手北软9、各种模型之间的区别与联系
1)、瀑布模型、演化模型、螺旋模型之间的异同。
A、相同点:
都分为多个阶段。
B、不同点:
瀑布模型一次完成软件;演化模型分为多次完成,每次迭代完成软件的一个部分;螺旋模型也分为多次完成,每次完成软件的一个新原型,并考虑风险分析。
t*s7m2_4W2t携手北软2)、演化模型和增量模型的区别
*n"y"I0j9.5d6、演化模型:
首先开发核心系统,每次迭代为系统增加一个子集,整个系统是增量开发和增量提交。
B、增量模型:
首先完整的开发系统的一个初始子集,然后不断的建造更精细的版本。
3)、需要完整定义需求的模型:
瀑布模型、增量模型。
4)、属于迭代风范的模型:
演化模型、增量模型、喷泉模型、螺旋模型。
第三章结构化需求分析
R7[-x2f5m;F;i一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
1、需求分析
)v$j \;J)H6G4.5d61)、基本任务:
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
2)、承担者:
系统分析员。
3)、两个阶段:
需求获取和需求规约。
)S.d,S)L6}.[:
V)2、需求获取
2d k1O1.5d61)、目的:
清楚地理解所要解决的问题,完整地获取用户需求。
2)、主要活动:
通过学习、请教领域专家、向用户提问等。
3)、三大挑战:
问题空间理解;人与人之间的通信;需求的不断变化。
-y'm*C)Z北京大学软件工程硕士北京大学软件与微电子学院|北软论坛4)、分类及内容
%z9d6`6X3m3\一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
A、功能性需求:
定义系统做什么。
B、非功能性需求:
定义系统工作时的特性。
5)、原则
b$w9n4U(i)l北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研A、划分:
捕获问题空间的“整体/部分”关系。
2U3d h)F北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研B、抽象:
捕获问题空间的“一般/特殊”或“特例”关系。
$r,\%@6_$S携手北软C、投影:
捕获问题空间的多维“视图”。
'|;S)s.U*^"t;.5d66)、技术
)d)j1]/} o2s)`.5d6、一种好的需求获取技术应具备的基本特征。
①提供方便的通信;
②提供定义系统边界的方法;
③提供支持抽象的基本机制;
④鼓励分析员使用问题空间的术语思考问题,编写文档;
*A {&y8A*F"\#i$g携手北软⑤为分析员提供多种可供选择的设计方案;
5V(J0\$B$P*c⑥适应需求的变化。
B、提出的用况法基本符合以上特征,详见“第五章面向对象方法”的“用况图”。
$Q4~!
\)k3L9X5T(j北京大学软件工程硕士北京大学软件与微电子学院|北软论坛
5m'd2q8[&C"R1.5d63、需求规约:
对需求陈述进行分析,解决其中存在的二义性和不一致性,并以一种系统化的形式准确地表达用户的需求,形成所谓的需求规格说明书。
4、结构化方法:
是一种系统化开发软件的方法,该方法基于模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段,结构化方法是结构化分析、结构化设计和结构化编程的总称。
8P;C)g$.5d66、结构化分析
4N;Y9}7Q7`北京大学软件工程硕士北京大学软件与微电子学院|北软论坛1)、基本步骤
A、通过对现实系统的了解和分析,或基于需求陈述,建立该系统的数据流图;
-S2`+Y$A6}一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
B、基于得到的数据流图,建立该系统的数据字典;
.O9O,p.P;[一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
C、基于得到的数据流图,对最低层的加工给出其控制结构描述;
"Q0`$k({0v!
m6[;b:
.5d6、依据需求,建立人机接口和其他性能描述;
9b'W:
v5b)u北京大学软件工程硕士北京大学软件与微电子学院|北软论坛E、通过分析和验证,建立系统完整的需求规约。
+F g6v!
@1^8F.p一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
2)、结构化分析模型:
数据流图()是一种描述数据变换的图形工具,是结构化分析方法最普遍采用的表示手段,数据字典和小说明为数据流图提供了补充,并用以验证图形表示的正确性、一致性和完整性,以上三者构成了结构化分析的模型。
A、数据流图:
是一种描述数据变换的图形工具,系统接受输入的数据,经过一系列的变换(或称加工),最后输出结果数据。
包括加工、数据流、数据存储、数据源和数据潭。
①加工:
是对数据进行处理的单元;用圆圈表示;顶层的加工名就是软件系统的名字,加工的名字最好使用动宾词组(.计算费用),也可用主谓词组(.费用计算),不要使用意义空洞的动词作为加工名(.计算)。
②数据流:
表示数据(由一组数据项组成)和数据流向(三种流向:
从加工流向加工;从数据源流向加工或从加工流向数据潭;从加工流向数据存储或从数据存储流向加工。
两个加工之间可以有多个数据流,这些数据流之间没有任何联系,数据流图不表明它们的先后次序);用箭头表示;用名词或名词词组命名,尽量选用现实系统中已有的名字。
8~ e3_0C)l1I*_9a5x北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研③数据存储:
表示信息的静态存储;用两条平行线表示;其命名方法同数据流。
④数据源:
数据的来源;用矩形表示;
*_6v*j6q!
k4V一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
⑤数据潭:
数据的最终目的地;用矩形表示。
B、数据字典:
以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储。
包括数据流条目、数据存储条目、数据项条目。
常用逻辑操作符:
“=”等价于(定义为)、“+”与(顺序结构)、“{}”重复(循环结构)、“[|]”或(选择结构)、“()”任选、“”界域。
1X9v6A,]8S)Y)s8m:
\北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研C、小说明:
用于描述底层加工,集中描述一个加工的输入数据和输出数据的逻辑关系,即加工逻辑,并不描述具体的加工过程。
一般用自然语言、结构化自然语言、判定表和判定树等描述。
-e(R0c5X;I3](_6}9Z一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
①结构化自然语言:
分为内外两层,外层语法描述操作的控制结构,内层语法用自然语言描述。
如:
在飞机票预订系统中
在旅游旺季的7~9,12月
:
t"J8^+L$[ i:
C北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研 如果订票超过20张
5x"E1L2W5])x一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
优惠票价的15%
:
g4U*U*W8?
携手北软 如果订票20张以下
优惠票价的5%
/j0i*e;@2B7^5K'u)N4R"H6.5d6在旅游淡季的1~6,10,11月份
-t)C:
I:
s:
h K北京大学软件工程硕士北京大学软件与微电子学院|北软论坛 如果订票超过20张
优惠30%
如果订票20张以下
优惠20%
6D0f0}&B北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研②判定表:
分四个区,一区列出所有的条件类别,二区列出所有的条件组合,三区列出所有的操作,四区列出在相应的组合条件下某个操作是否执行或执行情况。
如:
"m)R"j6]7s!
k北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研
旅游时间
7~9,12月
1~6,10,11月
订票量
5^-L7W$y9i!
y3T北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研
<=20
>20
q5f:
`8I'w1x北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研
<=20
>20
折扣量
5%
15%
20%
30%
(|.M$c"d$P1t)G(d2V9J(v北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,北大工程硕士,软件工程硕士,北京大学软件工程硕士,北大软件工程硕士,北软护航,考研,北软考研③判定树:
用图形形式描述加工逻辑。
3)、建立结构化分析模型的步骤(附实例)
+V4p'J一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
A、确定系统边界,画出系统环境图(参见系统环境示意图)
!
w6[&j9U3w,y*t)|北京大学软件工程硕士北京大学软件与微电子学院|北软论坛B、自顶向下,画出各层数据流图
)a!
_9^9p2i(~!
`5k0d一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
①功能分解(参见功能分解示意图)
&X'K7K7_'h;M1F9u5p携手北软②数据流的分派(参见数据流分派示意图)
*N"U `/_ `/P1h7t携手北软③文件引入与精化(参见精化示意图)
3?
5Y1]%B1W,F④如果有必要,从①开始对分解后的加工再次进行分解,建立更下一层的数据流图
C、定义数据字典
D、定义小说明
'\4_:
j,}2~9`7s(A!
y携手北软E、汇总前面各步骤的结果
)Q2d1z2x5{2d一个专注于北京大学软件与微电子学院软件工程硕士考研的论坛,绝对不会让你失望!
4)、注意事项
A、模型平衡原则
(L5Z,~1^;g*U)X.[.5d6①数据流图中所有的图形元素必须根据它们的用法规则正确使用;
:
{8T:
I"^+e3n2p携手北软②每个数据流和数据存储都要在数据字典中有定义,数据字典将包括各层数据流图中数据元素的定义;
*W(a(l.m③数据字典中的定义使用合法的逻辑构造符号;
3\1?
9U7[8y北软论坛,北京大学软件与微电子学院,北软,携手北软,北京大学,北京大学软件学院,北京大学微电子与软件学院,北京大学软微学院,北大软院,软院,工程硕士,