第三章 软件工程基础
3 ]1 \' |& R1 B
! N8 h8 Q5 s8 f& n1 K$ Y t 一、学习目标与要求
5 E: w( N( D- i 1.了解软件工程的基本概念; # t4 Y: _& h" s/ ~
2.了解软件工程过程与软件的生命周期,以及软件工程的目标和原则; 0 f& j! N* x/ w
3.了解利用结构化分析法进行软件工程中的需求分析的方法,并了解需求分析的方法和需要完成的任务; : f! a: K; s* J! U m
4.了解数据流图的使用方法;
. S! Q2 c7 B% g 5.了解如何利用结构化设计方法进行软件设计,并了解软件设计的一些常用用工具;
! A( O1 [1 W, J. N/ T 6.了解软件测试的目的和方法,以及软件测试的准则,了解常用的软件测试方法的区别和各自的功能与特点; $ q- M' t- B% K. n+ i3 H* i" Y
7.了解程序调试的方法和原则。
) A) [/ }0 a7 c- X) m& Y" C; f, { 二、内容要点 1 ~0 r6 T3 k& h$ S
(一)软件工程基本概念 ) b L! ^1 _8 F* M6 C
1.软件定义与软件特点
" Y% e3 p! L4 c& V3 Y5 K* U( t 1)软件的定义 7 T( L( _+ v) z: v$ y8 x, g, p' V
与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。
+ H3 t; h6 b" ]) k4 g 2)软件的特点
3 Q, p; e, M1 `2 N+ _3 V/ }$ X$ I (1)软件是一种逻辑实体,而不是物理实体,具有抽象性;
% u5 y7 @7 }# n) }, y4 M (2)软件的生产与硬件不同,它没有明显的制作过程;
3 d' j L6 V, v7 e& c (3)软件在运行、使用期间不存在磨损、老化问题;但为了适应硬件、环境以及需求的变化要进行修改,会导致一些错误的引入,导致软件失效率升高,从而使得软件退化;
; a* J& ]: O( w6 p* v1 J, @ (4)软件的开发、运行对计算机系统具有依赖性,受到计算机系统的限制,这导致了软件移植的问题; ' H- l# F& Z3 @- Y
(5)软件复杂性高,成本昂贵。软件开发需要投入大量、高强度的脑力劳动,成本高,风险大;
9 J* E6 H: C& a8 ~ (6)软件开发涉及诸多的社会因素。许多软件的开发和运行涉及软件用户的机构设置,体制问题以及管理方式等,甚至涉及到人们的观念和心理,软件知识产权及法律等问题。
: Q" y+ d& G8 o& q$ t/ u 3)软件的分类
6 }5 {# T' Y( f/ @1 q 按功能分,可分为:
% [0 r e& @/ L2 j0 J 应用软件:为解决特定领域的应用而开发的软件
) N/ l2 [) f+ }. B/ c; ~ 系统软件:是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件
7 N4 D% C+ @$ `2 w" L8 M 支撑软件(或工具软件):介于系统软件和应用软件之间,协助用户开发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件 4 ?3 ?+ U8 H8 K1 y0 m: j, T
2.软件危机与软件工程 # N/ f; ] m" b
1)软件危机
) l+ _. Z$ h' ]( _0 `, F" J 泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。它主要表现在: + S' p2 Q+ S8 A; x( t
(1)软件需求的增长得不到满足,用户对系统不满意的情况经常发生; + f: }; T8 x. m* v v! H- Y2 S
(2)软件开发成本和进度无法控制。开发的成本超预算和开发周期的超期经常出现;
4 j! s" O+ }. E. R) U! [8 Q (3)软件质量难以保证; 9 A6 R* Z! Z r* M
(4)软件不可维护或维护程度非常低; 0 f4 D) r# l7 N5 D( o
(5)软件成本不断提高; 5 Q" l5 B3 T8 Q- X9 T( l$ F
(6)软件开发生产率的提高赶不上硬件的发展和应用需求的增长。 1 m# `1 D7 y( K" n- e
2)软件工程
( \/ {, K, x! w1 g6 t l# ? 软件工程的定义:是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。 4 o% R+ I4 q6 W: m# v; k5 q8 a
软件工程包括3个要素:方法、工具和过程。
4 F' N* z2 p: O1 ~ 方法:完成软件工程项目的技术手段; 8 e" e5 N+ G G# F* \: V
工具:支持软件的开发、管理、文档生成;
6 _4 G, ?, @0 x' V% a' { 过程:支持软件开发的各个环节的控制、管理。
8 g3 ^4 w' `/ m' ], K 3.软件工程过程与软件生命周期 & ]# ?4 L1 A6 v0 v, | x, W
1)软件工程过程
/ {. t0 D1 Q" F 软件工程过程把输入转化为输出的一组彼此相关的资源和活动。支持软件工程过程的两方面内涵: 4 F. a5 q! y1 V" T: Y6 s) s+ v+ H- i
(1)软件工程过程是指为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。它包括4种基本活动: + W, s0 o1 o; _! O6 W; L; C
P—软件规格说明。规定软件的功能及其运行时的限制;
# H5 W( ^. r2 t$ X- y D—软件开发。产生满足规格说明的软件; ; W/ ~ E0 F0 M! ?& q `
C—软件确认。确认软件能够满足客户提出的要求; ! P) p3 G5 H- {& x( ^0 }
A—软件演进过程。为满足客户的变更要求,软件必须在使用的过程中演进。
% \. n! F9 e6 n: K: b; T$ k/ K (2)使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。 % i6 i7 P7 P9 }* {/ [! @7 j
软件工程过程是将软件工程的方法和工具综合起来,以达到合理、及时地进行计算机软件开发的目的。
0 B; F& y! r% m$ N 2)软件生命周期 : I/ C" E9 Y/ `1 m
将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。即软件的生命周期就是软件产品从开始考虑其概念开始,到软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。这些活动可以有重复,执行时也可以有迭代。
/ e" |7 ~5 x% Q0 `/ d 生命周期的主要阶段: $ F9 |' o" E8 I4 @- w( [# v: o
软件定义 % P7 M9 |4 a1 B0 k, b7 y
软件开发 ( A' G8 @9 k) o; M' J
软件维护 $ Y% S) }" Z j: H8 Y! x- K
软件生命周期的主要活动阶段是:
r) J3 X% F5 o+ {& R1 Q( [! C6 x (1)可行性研究与计划制定:确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实话计划;
% p* s$ ], p$ \ (2)需要分析。对待开发软件提出的需求进行分析并给出详细的定义;
- d% \" S5 | F( _ (3)软件设计。系统设计人员和程序设计人员给出软件的结构、模块的划分、功能的分配以及处理流程;
3 S/ P1 c" R) N5 F* |( `1 q (4)软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划; |