计算机软件技术基础
计算机软件技术基础知识点总结

《计算机软件技术基础》第一章算法1.1算法的基本概念算法:指解题方案的准确而完整的描述算法的基本特征:能行性(算法中的每一个步骤必须能够实现;算法执行的结果要能够达到预期的目的)确定性(算法中的每一个步骤都必须是有明确定义的,不能摸棱两可,也不能有多义性)有穷性(算法必须能在执行有限个步骤之后终止)拥有足够的情报(算法执行的结果总是与输入的初始数据有关。
不同输入对应不同输出)算法:是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的、明确的,此顺序将在有限的次数下终止。
算法的基本要素:1.算法中对数据的运算和操作(算术运算、逻辑运算、关系运算、数据传输【赋值、输入、输出】)2.算法的控制结构(算法中各操作之间的执行顺序)1.2算法描述语言C语言描述和简单的算法描述语言(1)符号与表达式:符号主要用以表述变量名、数组名等(2)赋值语句(3)控制转移语句:无条件转移语句形式:GOTO 标号条件转移语句形式IF C THEN SIF C THEN S1ELSE S2(4)循环语句WHILE语句:WHILE C DO SFOR语句:FOR i=init TO limit BY step DO S(5)其他语句EXIT语句:退出某个循环,使控制转到包含EXIT语句的最内层的WHILE或FOR循环后面的一个语句去执行RETURN语句:结束算法的执行(允许使用用引号括起来的注释信息)READ(INPUT)和WRITE(PRINT/OUTPUT)语句:用于输入输出(6)算法中的注释总是用一对方括号【】括起来;复合语句用一对花括号{}括起来1.3算法设计基本方法1.列举法【例1.1】基本思想:根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的(通常解决“是否存在”“有多少种可能”类型问题)特点:算法比较简单,但列举情况较多时,工作量将很大寻找路径、查找、搜索等问题采用列举法有效2.归纳法基本思想:通过列举少量的特殊情况,经过分析,最后找出一般的关系3.递推法(数学例题)指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果(本质属于归纳法)4.递归基本思想:将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些简单的问题后,再沿着原来分解的逆过程逐步进行综合【例1.3】自己调用自己的过程称为递归调用过程递归分为直接递归:一个算法P显式地调用自己间接递归:算法P调用另一个算法Q,而算法Q又调用算法P5.减半递推技术(分治法)减半:将问题的规模减半,而问题的性质不变递推:重复“减半”的过程【例1.4】6.回溯法通过对问题的分析,找出一个解决问题的线索;然后沿着这个线索逐步试探。
计算机软件技术基础复习题和思考题答案

计算机软件技术基础复习题和思考题答案1.5.1 复习题1. 解释计算机程序的概念。
计算机程序(computer programs),简称程序,是指计算机的指令序列。
2. 什么是源代码程序?源代码是指以程序设计语言编写的、可读的语句和声明的集合,程序设计人员的工作就是使用程序设计语言编写源代码,源代码经过编译后转变为计算机可以执行的程序。
3. 什么是可执行程序?可执行程序是指包含了计算机可以直接执行的指令的文件。
为了与源代码相区别,可执行程序又被称为二进制代码。
4. 什么是计算机软件技术?计算机软件技术是与软件的设计、实施和使用相关的多种技术的统称。
软件的设计与实施涉及到程序设计语言、算法和数据结构、数据库系统、多媒体、软件工程等技术,软件的使用涉及到质量、可靠性、专利、知识产权、道德、法律等管理和技术。
5. 如何对软件进行分类?可以根据软件的功能进行分类,也可以根据软件的不同开发方式进行划分,还可以从软件的使用方式进行分类。
根据软件的功能来划分是一种主要的分类方式,可以把软件分为系统软件、编程软件和应用软件3大类型。
6. 什么是系统软件?系统软件(system software)指管理和控制计算机硬件、使计算机工作的软件。
系统软件是一种非常重要的软件类型,它为用户提供了一种操作计算机硬件的便捷方法,为其他程序提供了运行的基础。
7. 常见的系统软件有哪些?根据系统软件的功能特点,可以继续划分为操作系统、设备驱动程序、实用工具以及其他系统软件。
8. 什么是操作系统?操作系统(operating system,OS)是位于计算机系统中的硬件和软件之间的接口,负责管理和协调计算机硬件的操作和计算机有限资源的共享。
9. 列出3个典型的操作系统。
主要的操作系统包括微软公司的Windows系列操作系统、Unix和类Unix操作系统、苹果公司的Mac OS X操作系统、Linux操作系统等。
任意列出3个即可。
10. 什么是编程软件?编程软件(programming software)又称为编程工具(programming tool)或软件开发工具(software development tool),是一种软件开发人员用于创建、调试、维护其他程序和应用软件的软件工具。
02243计算机软件基础(一)

世界上第一台电子计算机ENIAC
诞生于1942年
18800个晶体 管
70000个电阻 器
18000个电容 器
重量30吨
耗电140千瓦 /h
5000次加法/s
第8页
Pentium IV(2000)
42,000,000个晶体管 时钟频率1.5GHz 运算速度为1700 MIPS (MIPS 代表‘百万指令
第 26 页
软件工程概念
软件工程是指导计算机软件开发和维护的工程学 科,采用工程的概念、原理、技术和方法来开发 与维护软件。
贯穿于这一学科的基本线索是软件生命期学说, 它告诉软件研制者和维护者“什么时候做什么以 及怎么做”。
软件生命期就象人的寿命一样,从出生算到死亡, 从产生开发要求算到软件报废为止。包括:软件 计划、需求分析、软件开发和软件维护四个时期。
汇编语言 为符号化的机器语言。它用助记 符和标识符代替机器指令的操作码和地址码。
高级语言 是一种与具体的计算机指令系统 无关,独立于计算机类型,而且表达方式接 近于自然语言或数学语言,容易被人们掌握 和书写的语言。如C,Pascal,java。
第 17 页
举例
任务:x+1→x 机器语言
00111110 00001001 00111111B 或 3E 09 3FH
3、硬件与软件的关系
软硬件独立原理和互动原理
独立原理:软件理论上能实现的功能本质上与 硬件是独立的(不管硬件是何种形式) 互动原理:软件实际能实现的功能受制于硬件, 硬件发展一个台阶,软件就能前进一大步
软硬件等效定律
简单的硬件+复杂的软件 简单的软件+复杂的硬件 最终都可以完成同一个任务,不同的只是时间!
软件技术基础知识点

软件技术基础知识点在当今数字化的时代,软件技术已经成为推动社会发展和创新的关键力量。
无论是我们日常使用的手机应用,还是企业运行的复杂系统,都离不开软件技术的支持。
接下来,让我们一起探索软件技术的一些基础知识点。
一、数据结构数据结构是软件技术中非常重要的概念。
它是指相互之间存在一种或多种特定关系的数据元素的集合。
常见的数据结构包括数组、链表、栈、队列、树和图等。
数组是一种最简单的数据结构,它是一组相同类型的元素按顺序存储在连续的内存空间中。
数组的优点是访问元素的速度快,但插入和删除元素的效率较低。
链表则是通过指针将各个元素链接在一起,不需要连续的内存空间。
链表在插入和删除元素时较为方便,但访问元素的速度相对较慢。
栈是一种特殊的线性表,遵循“后进先出”的原则。
就像往一个桶里放东西,最后放进去的会最先被取出。
队列则遵循“先进先出”的原则,类似于排队买票,先到的先买。
树是一种分层的数据结构,常见的有二叉树、二叉搜索树等。
二叉搜索树可以快速地进行查找、插入和删除操作。
图则用于表示多对多的关系,在网络路由、社交网络分析等领域有广泛的应用。
二、算法算法是解决特定问题的一系列明确步骤。
好的算法应该具有正确性、可读性、健壮性、高效性和低存储量需求等特点。
常见的算法有排序算法,如冒泡排序、插入排序、选择排序、快速排序等。
冒泡排序通过不断比较相邻的元素并交换位置,将最大的元素逐步“浮”到数组的末尾。
快速排序则通过选择一个基准元素,将数组分为小于和大于基准元素的两部分,然后对这两部分分别进行排序。
搜索算法也是重要的算法之一,包括顺序搜索和二分搜索。
顺序搜索逐个检查元素,直到找到目标元素或遍历完整个数组。
二分搜索则是在有序数组中,通过不断将数组对半分割来查找目标元素,效率较高。
还有动态规划算法,用于解决具有重叠子问题和最优子结构性质的问题,如背包问题、最长公共子序列问题等。
三、编程语言编程语言是软件开发者与计算机进行交流的工具。
最新计算机软件技术基础(第三版)习题答案

软件:是指计算机程序、方法、规则的文档以及在计算机上运行它时所必须的数据。
计算机软件一般分为系统软件和应用软件。
1.8软件技术发展的几个阶段各有什么特点?它与硬件的关系如何?
第一阶段:高级语言阶段
特点:这一时期,编译技术代表了整个软件技术,软件工作者追求的主要目的是设计和实现在控制结构和数据结构方面表现能力强的高级语言。但在这一时期内,编译系统主要是靠手工编制,自动化程度很低。
信息和数据的关系可以归结为:
1.信息是有一定含义的数据。
2.信息是经过加工(处理)后的数据。
3.信息是对决策有价值的数据。
1.2信息有哪些基本属性?
z信息的基本属性有:
1.事实性。
2.等级性。
3.可压缩性。
4.可扩散性。
5.可传输性。
6.共享性。
7.增值性和再生性。
8.转换性。
1.3计算机的主要特点是什么?
第一章
1.1什么是信息?信息与数据的区别和联系在何处?
信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。
信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。
与数据的区别和联系:
数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。
我们把这些数据收集起来,经过处理后,即得到人们需要的信息。
9
POS
1
4
7
10
12
13
14
15
16
NUM
3
3
3
2
1
1
1
1
4
2.27试说明树与二叉树有何不同?为何要将一般树转换为二叉树?
计算机软件技术基础_实验指导书

《计算机软件技术基础》实验指导书编写:XXX适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。
通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。
二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。
写出各操作的实现函数,并上机验证。
三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。
具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。
(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。
为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。
(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。
(6)以上操作的正确性,均可以通过链表的输出结果来验证。
计算机软件技术基础教程(第二版)习题及答案

第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
计算机软件技术的基础知识

2、 数据结构基础
●基本概念和术语
(2)数据元素 (data
(1)数据(data): element): 是数据的
是客观事物的符号表示, 基本单位。有些情况下,
它能够被计算机识别、 储存和加工处理。它是
数据元素又称为元素、 结点(node)、记录 (record)。有时,一
计算机程序加工处理的 个元素可由若干数据项
e.排序操作:按给定要求对表中元素重新排 列。
并非任何时候都需要同时执行以上运算,对 于不同问题中的线性表,所需要执行的运算可能 不同。一般给出一组基本的运算,对于实际问题 中所涉及的更为复杂的运算,可以用基本运算的 组合来实现。
(3)线性表的存储结构
线性表的存储结构有两种:顺序存储结构和
链式存储结构。
…
L24
图3-2 链式存储结构示意图
结点1 结点2
结点3
结点4 结点5
由图3-2可见,数据元素之间的逻辑关系 是用指针来链接的。对于每个数据元素,除 了元素值以外,还有一个指针(或链)用来 指示另一个数据元素的地址。我们将这个由 数据元素的值和指针组成的总体称为结点, 表示一个数据元素。链表中各结点的位置在 内存中是任意的,通过指针将它们联系起来。 逻辑上最后的结点指针不指向任何地方,常 用“∧”表示。
如图3-2所示。
3-1所示。
由图3-1可知顺序结 构存储有以下特点:
A.存储结构的存储 密度大,存储空间利用 率高。
B.能够快速、随时 访问其中任意元素。
C.对该表进行插入 或删除操作时,为保证 线性表的连续性,则会 引起大量数据元素的移 动。
D.存储容量不宜扩 充。
……
…… ……
元素地址 内存状态 L1 元素1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、面向对象分析(OOA)
把对象作为现实世界的抽象表示,然后定义对象的属性 和专门操纵那些属性的服务,属性和服务被看成对象的特
2.软件危机 (1) 软件危机的主要表现: 1)软件开发成本和进度的估计常常很不准确。 2)用户往往对已完成的软件不满意。 3)软件的质量常被怀疑。 4)软件极难维护。
5)缺乏良好的软件文档。
6)软件开发生产率提高的速度远远跟不上计算机应用迅速普及深 入的趋势。
(2)软件危机的产生原因
一般以为,软件危机的发生与软件产品的特征和软件产品开
⑥功能内聚:一个模块所有处理都完成一个而且仅完成一个功
能。 内聚性给出模块的内在联系,因此内聚性越大越好。
3)模块的设计准则
①通过模块的分解和合并,提高模块的独立性; ②模块调用个数最好不要超过五个;
③降低模块接口的复杂性;
④一个模块的所有下属模块应该包括该模块受某一 判定影响的所有模块的集合; ⑤模块应设计成单入口和单出口; ⑥模块的大小要适中,一般在50句左右。
面向对象方法和技术是自80年代以来逐渐形成的一种分析问
题和解决问题的新方法,其基本出发点就是尽可能按照人类认 识世界的方法和思维方式来分析和解决问题。客观世界是由许 多具体的事物或事件、抽象的概念和规则等组成的,因此,我 们将要加以研究的事、物、概念都称为对象。面向对象的方法 正是以对象作为最基本的元素,以对象作为分析问题,解决问 题的核心。
1.1.2 软件工程范型 1、传统的软件工程范型――瀑布模型 瀑布模型是1976年由B· Boehm提出的,是基于软件生存周 W· 期的一种范型。它将软件生存周期分为定义、开发、维护三个 阶段,每个阶段又分为若干个子阶段,各子阶段的工作顺序展 开,如自上而下的瀑布。(见后图) 定义阶段:分析用户需求。 问题定义:收集、分析、理解、确定用户的要求。 可行性研究:确定对问题是否有可行的解决办法。 需求分析:确定用户对软件系统的全部需求。 开发阶段: 设计:设计软件系统的模块层次结构、数据库结构、模块控制 流程等。 编程:将每个模块的控制流程纺出相应的程序。 测试:检查并排除软件中的错误,提高软件的可靠性。 维护阶段: 运行与维护:维护软件系统的正常运行。 各个阶段确均有相应的文档。
此方法提供了描述软件系统的工具,提出了评价模块结构
图质量的标准,即模块之间的联系越松散越好,而模块内各 成分之间的联系越紧凑越好。
(2)SD方法的设计原理 1)模块化: 模块化就是把系统划分为若干个模块,从而获得满足问题需要 的一个解的过程。 2)模块的独立性: 模块独立性有两个定性的度量标准,即内聚和耦合。耦合有六 种,从小到大如下: ①两个模块完全独立(没有任何联系); ②数据耦合:即两个模块只通过数据进行交换; ③状态耦合:即两个模块之间通过控制状态进行传递; ④环境耦合:即两个模块之间通过公共环境进行数据存取; ⑤公共块耦合:即多个模块引用一个全程数据区; ⑥内容耦合:即一个模块使用保存在另一模块内部的数据或控制 信息,或转移进入另一个模块中间时,或一个模块有多个入口时。 由此看出模块间耦合性越小越好。
(2)方框图(N-S图):图形描述工具。限制了随意的控制转移。
顺序结构
选择结构
多分支选择结构
先判定型循环结构
后判定型循环结构
(3)结构化编码方法 ①对源程序的编码要求:最基本要求是源程序的正确性,同时 还要考虑其可读性、可理解性、可测试性和可维护性。 ②写程序的风格:一个好的源程序意味着源程序代码逻辑简明 清晰,易读易懂。 编码原则: • 程序内部文档应选取含义鲜明的名字,注解正确,程序清单 层次清晰,布局合理。 • 数据说明和次序应该标准化,个别复杂的数据结构应加注释。 • 每个语句应该简单直接,不能为提高效率而使程序变得过份 复杂。 • 对输入数据应进行合法性检查;对输出数据要加输出数据的 标志。 • 在程序编码阶段以不影响程序的清晰度和可读性为前提,尽 可能提高效率。
2、结构化设计 结构化设计方法,亦称SD(Structured Design)方法。是 一种面向数据流的设计方法,目的在于确定软件的结构。 (1)SD方法的基本思想 其基本思想是:根据SA方法中的数据流图建立一个良好的
模块结构图(例如SC图或软件层次方框图);运用模块化的 设计原理控制系统的复杂性,即设计出模块相对独立的,模 块结构图深度、宽度都适当的,单入口单出口的,单一功能 的模块结构的软件结构图或软件层次方框图。
(4)SD方法的设计过程 使用SD方法的基础是数据流图。正如前面所述,几乎所有软 件在分析阶段都可以表示为数据流图,所以SD方法基本上可适 用于任何软件的开发工作。 用SD方法进行总体设计的过程大致如下: (1)研究、分析和审查数据流图,从软件的需求说明书弄清 楚数据流加工的过程; (2)根据数据流图确定数据流图的类型; (3)从数据流图导出系统的初始软件结构图; (4)改进初始软件结构图,直到符合要求为止; (5)复查。 (5)软件结构的描述方式 在SD方法中,软件结构用一种结构图来描述,它是设计说明 书的一部分。结构图描述了软件模块结构,并反映了模块和模 块间联系等特性。
1.2.2 面向对象开发方法 面向对象技术是一种非常实用而强有力的软件开发方法。 面向对象软件开发方法又称OOSD(Object-Oriented Software Development)。OOSD包括面向对象分析(OOA)、面向对 象设计(OOD)和面向对象程序设计(OOP)三个方面 。其 中OOP是基础,OOA和OOD是应用OOP的机制。
3、详细设计和编码 (1)详细设计的任务 为软件结构图中的每一个模块确定采用的算法和块内数据 结构,用某种选定的表达工具给出清晰的描述。 (2)详细设计的描述工具 ①程序流程图 也称为程序框图,独立于任何一种程序设计语言,比较直 观、清晰、易于掌握。 任何复杂的程序流程图都可以由以下不同类型的基本结构 组合或嵌套而成: 顺序结构 选择结构(IF-THEN-ELSE) 多分支选择结构(CASE) 先判定循环结构(WHILE) 后判定循环结构(UNTIL)
数据 流图的基本符号:
(1)数据流 (2)加工 (3)数据存储 (4)数据源点或终点。 画各层数据流图应注意的问题: 1 (1)父图和子图平衡 (2)子图的编号 (3)数据守恒
(3)数据词典(Data Dictionary,简称DD) 对数据流图中包含的所有元素的定义的集合构成了数据字典。 数据词典中有四种类型的条目:数据流、文件、数据项和加工。 (1)数据流条目 数据流条目给出某个数据流的定义,它通常是列出该数据流的 各组成数据项。 如:课程=课程名+教员+教材+课程表 课程表={星期几+第几节+教室} (2)文件条目 文件条目给出某个文件的定义。 订单文件=订单编号+顾客名称+产品名称+订货数量+交货日期 (3)数据项条目 数据项条目给出某个数据单项的定义。 学号编号=1~9999 (4)加工条目 加工条目又称小说明。小说明中应精确地描述用户要求某个加工 做什么。
1.1.1 软件工程的形成与发展
1.软件发展的三个阶段
1.程序设计时期(1946年到60年代中期)
软件开发方法从机器语言编程到软件工程方法,经历了三个阶段。
生产方式是手工生产、个体劳动。只有程序,无软件的概念。
2.软件时期(60年代中期至70年代中期) 程序不再是硬件的附属,有软件的概念。 作坊式的生产方式已难满足软件生产的质量和数量上的要求。 出现了“软件危机”。 3.软件工程时期(70年代至今) 1968年、1969年北大西洋公约组织成员国的软件工件者召开了两 个研讨会,提出了“软件工程”这一述语,根本目的在于克服 “软件危机”中所遇到的困难问题,从此进入软件工程时代。
3、软件工程 1983年IEEE定义为:“软件工程是开发、运行、维护和修 复软件的系统方法”。 软件工程学的多个分支 (1)软件工程方法学 方法学是研究软件构造技术的学问。一个软件从定义、开发 到维护,都需要有适当的方法。 (2)软件工程环境 对最终用户而言,环境就是他们运行程序所使用的计算机系 统。 对于应用软件开发人员,环境是开发活动的舞台。 软件工具是环境中最活跃的成分。所谓工具,在这里泛指一 切帮助开发软件的软件。在软件开发的各个方面都研制了许多 有效的工具。集成化工具的自动切换,可以明显提高软件的生 产率。 (3)软件工程管理 软件工程管理的目的,是为了按照软件的预算和进度完成项 目计划,实现预期的经济和社会效益。
发与维护的方法不正确有关。 其一:软件是逻辑的系统部件而不是物理的系统部件,以程
序和文档形式存在,具有无形性。
其二:软件规模越来越大,功能越来越强,导致软件结构非 常复杂。 (3)解决软件危机的途径 方法是要充分吸取和借鉴人类长期以来从事各种工程项目 所积累的行之有效的原理、概念、技术和方法,并应用于软 件开发的实践中,将软件开发变成一种组织良好、管理严密、 各类人员协同完成的工程项目
问题定义
定义 阶段 或行性研究
(目标与范围说明)
(可行性论证报告)
需求分析 设 计
开发 阶段 编 程
(需求说明书)
(设计文档)
(程序)
测 试
运行与维护
(测试报告)
维护 阶段 传统的软件工程范型――瀑布模型
(维护报告)
1.2 软件开发方法 两种不同的开发方法:结构化开发方法和面向对象的开发方法。 1.2.1 结构化开发方法 一、结构化分析 1.结构化分析方法,亦称SA(Structured Analysis)方法。 (1)SA方法的特点: ①核心思想:自顶向下和逐步求精。 ②基本手段:分解和抽象。 分解:把大问题分割成若干小问题,然后分别解决。 抽象: 略去细节,先考虑问题最本质的属性。 ③使用了描述需求说明书的几个规范工具。 即数据流图、数据词典、小说明(加工逻辑的描述)等,使文 档规范化。 (2)数据流图(Data Flow Diagram,简称DFD图) SA方法采用“分解”的方法来描述一个复杂的系统,数据流图 是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输 入和逻辑输出以及把逻辑输入转换为逻辑输出所需要的加工处理。