软件的组成(程序,数据,文档)软件与程序的区别:程序是软件的一部分
软件危机的主要表现 P261
对软件开发成本和进度的估计常常很不准确
用户对“已完成的”软件系统不满意的现象经常发生。
软件产品的质量往往靠不住
软件常常是不可维护的。很多错误是很难改正的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件工程的基本原理 P33
1. 用分阶段的生命周期
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
严格管理
划分阶段、制定计划
2. 坚持进行阶段评审
软件质量保证工作不能等到编码结束之后再进行
3. 实行严格的产品控制
不能随意改变需求,修改必须按照严格的规程进行审批。
4. 采用现代程序设计技术
结构程序设计、面向对象程序设计
5. 结果应能清楚地审查
6. 开发小组的人员应该少而精(1+1< 2)
人员和时间是不能够等价互换的
效率高和效率低的实施者之间个体差异非常大,经常能达到数量级的水平
7. 承认不断改进软件工程实践的必要性
要积极主动采用新的软件技术,而且要不断总结经验
软件工程三要素:方法、工具和过程
面向对象方法学的四个要点 p36
面向对象方法=对象+类+继承+用消息通信
面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。
把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作
按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
对象彼此之间仅能通过发送消息互相联系。
软件生命周期的基本任务 P46
1.问题定义: 该阶段必须回答的关键问题是:“要解决的问题是什么”。
2.可行性研究: 该阶段要回答的关键问题是:“上一个阶段所确定的问题是否有行得通的解决办法”。 要求用较小的成本、在较短的时间内判断是否可行,是对用户需求的粗略了解
3. 需求
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
: 该阶段任务是准确地回答“目标系统必须做什么”这个问题,但仍然不是具体地解决客户的问题 重要任务:用正式文档准确地记录对目标系统的需求,这份文档通常称为规格
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
(specification)。
4. 概要设计: 该阶段的基本任务是,概括地回答“怎样实现目标系统?”这个问题。
具体任务:设计出实现目标系统的几种可能
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
,分析方案的优缺点
设计程序的体系结构,也就是确定程序由哪些模块组成以及模块间的关系。
5.详细设计: 该阶段的任务就是把解法具体化,也就是回答“应该怎样具体地实现这个系统”这个关键问题。这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。
要求详细设计各个模块,确定实现模块所需要的算法和数据结构
6. 编码和单元测试:该阶段任务是写出正确的容易理解、容易维护的程序模块。也就是写成以某一种特定程序设计语言表示的“源程序清单”
7. 综合测试:该阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。单元测试,组装(集成)测试,验收测试
8. 软件维护:该阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。改正性维护 运行中发现了软件中的错误需要修正 适应性维护 为了适应变化了的软件工作环境,需做适当变更 完善性维护 为了增强软件的功能需做变更
多种过程模型的特点:
瀑布模型, (1) 阶段间具有顺序性和依赖性(2)推迟实现的观点(3)质量保证的观点
快速原型模型,完成的功能往往是最终的软件产品所能完成的功能的一个子集。最终被抛弃
增量模型,侧重于每个增量递交一个可以操作的产品;第一个增量往往是核心产品;需要精心的设计,把新的增量构件集成到已有软件系统中时,必须不破坏已开发出的产品
螺旋模型,螺旋模型是开发大型系统和软件的理想方法;风险驱动的,依赖于大量的风险评估专家来保证成功
喷泉模型:典型的面向对象生命周期模型;体现了面向对象软件开发过程迭代和无缝的特性
瀑布模型的优缺点 P57
缺点:(1) 实际项目很少遵守瀑布模型提出的顺序 (2) 难以适应许多项目开始必然阶段存在的不确定性 (3) 用户必须有耐心。程序的运行版本一直要等到项目开发晚期才能得到。大的错误如果直到检查运行程序时才被发现,后果可能是灾难性的。 (4) 开发者常常被不必要的耽搁。可能会导致“阻塞状态”,其中某些项目组成员不得不等待组内其他成员先完成其依赖的任务
优点:当有一个稳定的产品定义和很容易被理解的技术解决方案时,纯瀑布模型特别合适
在质量需求高于成本需求和进度需求的时候,它尤为出色。
需求分析的过程 ,分析阶段的结果是?规格说明
结构化分析模型的组成。 P18
ER图:注意基本画法、关联的重数、关系的属性
数据流图:注意数据存储、各层数据流之间的平衡,命名
机票预订系统
旅行社把预订机票的旅客信息输入机票预订系统
系统为旅客安排航班,打印出取票通知单和账单
旅客在飞机起飞的前一天凭取票通知单和账单交款取票
系统检验无误,输出机票给旅客
状态转换图
状态可能有:初态(初始状态)、终态(最终状态)和中间态。
在一张状态图中只能有一个初态,而终态则可以有多个,也可以没有。
其中活动表的语法:
事件名(参数表)/动作表达式
A、“事件名”可以是任何事件的名称。在活动表中经常使用下述3种
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
事件:entry,exit和do。
entry事件指定进入该状态的动作
exit事件指定退出该状态的动作
do事件指定在该状态下的动作。需要时可以为事件指定参数表。
B、活动表中的动作表达式描述应做的具体动作。
复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。
数据字典:各种符号的含义,怎么建立?P80系统分析阶段
数据字典的建立过程:建立数据库管理系统的第一步是用户需求分析。通过系统开发人员和未来用户的相互交流,用户需求分析的结果被反映在《系统功能说明书》里
概要设计和详细设计的主要任务 p3
概要设计的主要任务是,通过仔细分析软件规格说明,适当地对软件进行功能分解,从而把软件划分为模块,并且设计出完成预定功能的模块结构。
详细设计阶段详细地设计每个模块,确定完成每个模块功能所需要的算法和数据结构。
结构化设计与结构化分析的关系p6
体系结构设计:确定程序由哪些模块组成以及这些模块相互间的关系,也就是程序的模块框架
数据设计:设计软件中需要的数据结构;
接口设计:设计软件内部各模块之间、软件与协作系统之间以及软件与使用它的人之间的通信方式。
过程设计:设计软件体系结构中所包含的每个模块的实现算法;
两条设计准则:模块化、模块独立 P7
什么是模块?模块的定义:是由边界元素限定的相邻的程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符来代表它。
模块化的依据是什么?各个击破,减少复杂性
模块是不是越多越好?
模块分解并不是越小越好,模块数目增加,开发单个模块的成本减少,但将模块接口的工作量增加
模块独立性两个准则度量:
耦合(模块之间的相对独立性(互相连接的紧密程度)的度量)、
内聚(模块功能强度(模块内部各个元素彼此结合的紧密程度)的度量)
理解每一种内聚、每一种耦合,强弱顺序
(1) 非直接耦合。如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。这种耦合的模块独立性最强。
(2) 数据耦合。一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
(3) 控制耦合。如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。(往往是多余的)
(4) 特征耦合:两个模块都与同一个数据结构有关。特征耦合时,把整个数据结构都作为参数传递,而被调用的模块只需要使用一部分数据元素。这会导致对数据的访问失去控制。
(5) 公共耦合:两个或多个模块都和同一个公共数据域有关(全局变量、内存的公共覆盖区、文件等)模块设计时,一般不允许有公共耦合关系的模块存在
(6) 内容耦合:模块间直接引用内部信息
尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合。
(1)功能内聚。如果一个模块内部的各组成部分的处理动作全都为执行同一个功能而存在,并且只执行一个功能,则称为功能内聚。
(2)顺序内聚。如果一个模块内部的各个组成部分执行的几个处理动作有这样的特征:前一个处理动作所产生的输出数据是后一个处理动作的输入数据,称为顺序内聚。
顺序内聚维护起来不如功能内聚方便,要修改模块中的一个功能,会影响到同一个模块中的其他功能。
(3)通讯内聚。如果一个模块内各组成部分的处理动作都使用相同的输入数据和(或)相同的输出数据,称为通讯内聚.
(3)过程内聚。如果一个模块内的处理是相关的,而且必须以特定次序执行,则称这个模块为过程内聚模块。
(4)时间内聚。如果一个模块内的各组成部分的处理动作和时间有关,则称为时间内聚。时间内聚模块的处理动作必须在特定的时间内完成.
(5)逻辑内聚。这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪一种功能。(逻辑相似)
(6)偶然内聚。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为偶然内聚模块。
力争做到高内聚,并能判断出低内聚,修改设计提高模块的内聚程度。
扇入、扇出、控制域、作用域等名词含义
深度:指结构图控制的层次,即模块的层数。
宽度:指一层中最大的模块个数。
扇出:指一个模块直接下属模块的个数。
扇入:指一个模块直接上属模块的个数。
模块的作用域也叫模块的影响范围,受该模块内一个判断影响的所有模块的集合
模块的控制域也可称为模块的控制范围,是这个模块本身以及所有直接或间接从属1:它的模块集合。
理解启发式规则
1、 改进软件结构提高模块独立性
2、 模块规模应该适中,通常不超过60行语句
3、 深度、宽度、扇出和扇入都应适当
4、 模块的作用域应该在控制域之内,如果在设计过程中,发现模块作用范围不在其控制范围之内,可用以下方法加以改进:(1)上移判断点。使该判断的层次升高,以扩大它的控制范围。(2)下移受判断影响的模块。将受判断影响的模块下移到判断所在模块的控制范围内。