软件工程复习
- 格式:doc
- 大小:200.00 KB
- 文档页数:10
第一章1、软件工程的基本原理(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性2、软件工程方法学的三要素:方法、工具、过程方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具:为运用方法而提供的自动的或半自动的软件工程支撑环境;过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
3、面向对象方法学的4个要点(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有对象都划分成类(class)。
(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
(4)对象彼此间仅能通过发送消息互相联系。
4、软件生命周期分时期、分阶段。
各阶段主要完成的任务,回答什么问题软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
维护时期的主要任务是使软件持久地满足用户的需要。
具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。
通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。
每个阶段的基本任务:1、问题定义:问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”这个阶段的任务是通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告得到客户的确认。
2、可行性研究:这个阶段的任务是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法,回答:“对于上一个阶段所确定的问题有行得通的解决办法吗?”的问题3、需求分析:这个阶段的任务是确定目标系统必须具备哪些功能。
准确地回答“为了解决这个问题,目标系统必须做什么”。
4、总体设计:必须回答的关键问题是:“概括地说,应该怎样实现目标系统?”这个阶段的任务一个是软件工程师实现目标系统的几种可能的方案,通过分析权衡每种方案的优缺点后选出最佳方案,制定实现最佳方案的详细计划;另一个是设计程序的体系结构,即确定程序由哪些模块组成和模块间的关系。
5、详细设计:这个阶段的任务是把解法具体化,即详细设计每个模块,确定模块功能需要的算法和数据结构。
回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”6、编码和单元测试:这个阶段的任务是写出正确的容易理解、容易维护的程序模块7、综合测试:这个阶段的任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
8、软件维护:这个阶段的任务是通过各种必要的维护活动是系统持久地满足用户的需要。
5、几种典型的模型,基本特点1、瀑布模型特点:1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点瀑布模型的优点:结构简单,强调软件开发过程的阶段性和顺序性;对软件开发管理严格,文档齐全(里程碑驱动或称文档驱动),注重复审,保证了软件的质量;软件开发的支持工具比较齐全;支持推迟实现的观点,尽可能将编码向后推迟.瀑布模型的缺点:过程不可逆转,前面阶段隐藏下来的问题会在后面放大;由于强调软件开发的阶段性,反馈信息慢,拖延了开发进度;由于是文档驱动的,因此耗费了太多的时间和精力;重视需求规格说明,然而获得一个完整的规格说明是非常困难的,导致了开发出来的系统最终需求与最初需求不一致,大大地降低了实用性.二、快速原型模型快速原型模型是不带反馈环的,这正是这种过程模型的主要优点:软件产品的开发基本上是线性顺序进行的。
三、增量模型(也称为渐增模型)能在较短时间内向用户提交可完成部分工作的产品,是增量模型的一个优点。
另一个优点是:逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
增量模型的优点:(PPT里的)项目可以分解为多个子系统,子系统之间边界清楚;任务或功能模块驱动,可分阶段提交产品;系统本身具有良好的模块化特征,模块内部高内聚,模块之间低耦合,模块本身信息隐蔽;增量模型的缺点:(PPT里的)不适合各部分联系紧密的项目;系统整体结构的一致性可能较差;各子系统风格可能不一致.四、螺旋模型螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险;在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
螺旋模型的主要优势在于,它是风险驱动的,但是,这也可能是它的一个弱点。
五、喷泉模型体现了面向对象软件开发过程的迭代和无缝的特性。
综合分析第二章1、数据流图的符号数据流图有四种基本符号:正方形(或立方体):数据的源点或终点;圆角矩形(或圆形):变换数据的处理;开口矩形(或两条平行横线):数据存储;箭头:数据流,即特定数据的流动方向。
在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。
2、数据字典的组成元素,符号定义一般说来,数据字典应该由对下列4类元素的定义组成:1.数据流2.数据流分量(即数据元素)3.数据存储4.处理符号定义:=意思是等价于(或定义为);+意思是和(即,连接两个分量);[]意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;{ }意思是重复(即,重复花括弧内的分量);( )意思是可选(即,圆括弧里的分量可有可无)。
例:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。
标识符=字母字符+字母数字串字母数字串=0{字母或数字}7字母或数字=[字母字符|数字字符]由于和项目有关的人都知道字母字符和数字字符的含义,因此,关于标识符的定义分解到这种程度就可以结束了。
3、成本/效益分析的公式(1)货币的时间价值通常用利率的形式表示货币的时间价值。
假设年利率为i,如果现在存入P 元,则n年后可以得到的钱数为:F=P(1+i)n这也就是P元钱在n年后的价值。
反之,如果n年后能收入F元钱,那么这些钱的现在价值是:P=F/(1+i)n假定年利率为12%,利用上面计算货币现在价值的公式可以算出修改库存清单系统后每年预计节省的钱的现在价值,如表所示。
设想把数量等于投资额的资金存入银行,每年年底从银行取回的钱等于系统每年预期可以获得的效益,在时间等于系统寿命时,正好把在银行中的存款全部取光,那么,年利率等于多少呢?这个假想的年利率就等于投资回收率。
P= F1/(1+ j) +F2/(1+ j) 2+ +F3/(1+ j) 3+… + Fn/(1+ j) nP:投资额;Fi:第i年的收益;n:系统寿命;j:投资回收率例如,修改库存清单系统:求解该高次方程,投资回收率为j=0.41%.第三章1、E-R 图使用实体—联系图来建立数据模型。
可以把实体、联系图简称为E-R图。
2、数据规范化软件系统常常使用各种长期保存的信息,这些信息通常以一定方式组织并存储在数据库货文件中,为减少数据冗余,避免出现插入异常或删除异常,简化修改数据的过程,通常需要把数据结构规范化。
通常用“范式”定义消除数据冗余的程序。
第一范式(1 NF)数据冗余程序最大,第五范式(5 NF)数据冗余程序最小。
但是,第一,范式级别越高,存储同样数据就需要分解成更多张表,因此,“存储自身”的过程也就越复杂。
第二,随着范式级别的提高,数据的存储结构与基于问题的结构间的匹配程序也随之下降,因此,在需求变化时数据的稳定性较差。
第三,范式级别提高则需要访问的表增多,因此性能(速度)将下降。
从使用角度看来,在大多数场合选用第三范式都比较恰当。
通常按照属性间的依赖情况区分规范化的程度。
属性间依赖情况满足不同程序要求的为不同范式,满足最低要求的是第一范式,在第一范式中再进一步满足一些要求的为第二范式,其余依次类推。
下面给出第一、第二和第三范式的定义。
(1)第一范式每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。
(2)第二范式满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。
(3)第三范式符合第二范式的条件,每个非关键字属性都仅由关键字决定,而且一个非关键字属性不能仅仅是对另一个非关键字属性的进一步描述。
3、状态转换图符号,语法,状态3.6.1、状态状态是热河可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
状态规定了系统对事件的响应方式。
系统对事件的响应,即可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。
在状态图中定义的状态主要有:初态(即初始状态)、终态(既最终状态)和中间状态。
在一张状态图中只能有一个初态,而终态则可以有0到多个。
状态图既可以标普世系统循环运行过程,也可以表示系统单程生命期。
当描绘循环运行过程时,通常并不关心循环是怎样启动的。
当描绘单程生命期时,需要标明初始状态(系统启动时进入初始状态)和最终状态(系统运行结束时到达最终状态)。
3.6.2 事件事件是在某个特定时刻发生的事情,它是对引起系统做动作或从一个状态转换到另一个状态的外界事件的抽象。
例如,内部时钟表明某个规定的时间段已经过去,用户移动或单击鼠标等都是事件。
简而言之,事件就是引起系统做动作货(和)转换状态的控制信息。
3.6.3符号在状态图中,初态用实心圆表示,终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。
上面部分为状态的名称,这部分是必须有的;中间部分为状态变量的名字和值,这部分是可选的;下面部分是活动表,这部分也是可选的。
活动表的语法格式如下:事件名(参数表)|动作表达式其中,“事件名”可以是任何事件的名称。