复习整理、绪论1. 软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交岀的所有产品都必须是经过验证的缺点如果需求规格说明与用户需求之间有差异,很可能导致最终开发岀的软件产品不能真正满足用户的需要。
(瀑布模型几乎完全依赖于书面的规格说明)由于多数用户不熟悉计算机,系统分析员对用户的专业也了解不深,因而很难在在开发的初始阶段彻底弄清软件需求。
(瀑布模型只适用于项目开始时需求已确定的情况)5、软件可行性研究的目的和内容目的:是弄清待开发的项目是不是可能实现和值得进行内容:经济可行性,技术可行性,运行可行性,法律可行性三、结构化分析(重点)P711、结构化分析SA模型的组成DFDffiI MASDD秋态■蚪鱼阎STD图拧制规格谜明CSFEC2、结构化分析的基本步骤1.了解当前系统的工作流程,获取当前系统的物理模型。
2.抽象岀当前系统的逻辑模型。
3.建立目标系统的逻辑模型。
4•作进一步补充和优化。
3、 绘制数据流图DFD 的注意点① 父图与子图的平衡,即父图的输入输岀数据流与子图的输入输岀数据流一致 ② 区分局部文件和局部外部项 ③ 分解的速度不宜过快 ④ 按规则命名加工编号⑤ 提高数据流图的易懂性,合理分解决策表、决策树的绘制|例题:邮寄包收费标准如下:若收件地点在 若收件地点在1000公里以外, 部分每分斤加收0 . 5元。
请绘制收费的原始决策表, 4、 1000公里以内,普通件每公斤 2元,挂号件每公斤3元。
普通件每公斤 2. 5元,挂号件每公斤3. 5元;若重量大于30公斤,超重 (重量用W 表示)决策表(判定表):决策规则号]士34 567 &条 件 普追件 Y NY NYNYNU ri30Y Y Y Y N N N N 1000公里且内YYNN1 Y YNN的 行2WXX3WXX2.5WX3 5WX2. □X3(R(W -3O}XO. 5X3. 5X 30^(K-30) X0. 5X决策树(判定树)2.5 W3 W3.5 W牡2.5X30^(^30)X0153, 5X30^(W>30)X{X55、 结构化的三种控制结构顺序、选择、循环 DO_WHILE6、 流程图、N-S 图和PDL 的特点,通过PDL 语言绘制流程图和N-S 图 例题:将三个数从小到大排序并对其进行优化,得到优化后的决策表,再绘制岀决策树2 W否流程图:7、 给定一个系统,用结构化分析方法进行分析,画出 DFD DD丿冃学与试报寫过程中荷卩“记求叔名算”的MIX*该加工上躍星根林枫名屋(蛉名、H 弓G 价证巧-■踝也林[和幵考课程常、JT^b ;河h 经杜檢,股久 圮可、WilllUk^证席报呂看,同刖记录到爭生霁也中〔准号低号、姓名、规程h 诗绘制谖拘1:的DFD 图.井写 用数制扫典中的竝据缺日離揺流词Ml 数据腕黑Sh加勒中亠姓桝-性别-片檢证寸T 磔胖名 斤占歸程-噸45 4斤芳讨间 考牛韶册=• 丫1笛』谍科四、 面向对象及UML 1、 面向对象的基本特征抽象、封装、继承、多态2、 静态、动态 UML 图例(P84)五、 需求工程与需求分析 1、 需求分析的任务与步骤任务:(1)通过对问题及其环境的理解、分析和综合建立分析模型,(2)在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达岀来。
需求分析 的认为就是为了明确要开发的是一个什么样的系统,而不是去实现这个系统。
步骤:需求获取、需求建模、需求描述(编写SRS 、需求验证2、 需求分析和需求工程的困难性客户说不清楚需求人口N-S 图:正式抠宕单君牛*旳E 式那号证.分析人员或客户理解有误需求自身经常变动3、面向对象需求模型组成用例图、用例规约、补充规约、术语表4、用例规约应该包含哪些内容?基本流和备选流的概念及区别(P117)简瞇说明:衢哋介紹该用例的柞用和日的. 1事件流;包括基本流和希选流'农小出浙冇对能的祜动阳L捏特陳石求:描述与像用力弟咲杓非功能杵需求和设il哟束前盍条件和肓遗条件v衣帛■流指谨川例最1E常时•种场最冷沖弘流中,系址执厅啄列活功来响应霽片占提川的昵务毎个歩骤都需竖川麴了编号’以请楚地标旳步骤的光心顺序.毎牛步骤的■徙内容川--何简朴的标題來概抵.使川读:职町通过浏览标趣快速的r解川關的I:密步戦个用捌模型皓木忌述z后+在针对擁牛步骤说酬描述翦与者和系统上间的篩选汇匕用于牺述用例扭讦过穆中的斤常成偶尔发牛的仙况,他和雄木流券I合起总能聘覆盖谨用机所冇训能发牛的场忠起点:谨备选流从爭件硫的娜一步开殆.条件:蛊朴么条件会哋发该帚选流.功作:系统在该务选流中会采取聊咗励作.恢复:该备选流结東乩该I】」例应加啊缆续执行”笛选谦的描述榕宜川j華木流槪.即需啖编匕井以标題槪述其内容•塢号前叩川前缀亠切,臥示与堆本流的区別*六、面向对象分析1、面向对象分析的主要任务(P138)首先要理解用户的需求,包括全面理解和分析用户需求,明确所开发的软件系统的职责,形成文件并规范地加以表述。
然后进行分析,提取类和对象,并结合分析进行建模。
其基本步骤是:标识类,定义属性和方法;刻画类的层次;表示对象以及对象与对象之间的关系;为对象的行为建模。
这些步骤肯反复进行,直至完成建模。
2、面向对象分析的模型组成3、软件设计的任务是什么?概要设计和详细设计的主要工作|任务:将软件分析模型转变为考虑具体实现技术和平台的软件设计模型。
概要设计(结构设计):把一个软件需求转换为软件表示时,首先设计岀软件总的体系结构。
基本任务:1)设计软件系统结构2)进行数据结构及数据库的设计3)编写概要设计的文档4)评审详细设计:为SC图中的每个模块确定采用的算法和块内数据结构,用选定的表达工具(流程图、N-S图、PAD图、伪代码)给出清晰的描述。
基本任务:1)为每个模块进行详细的算法设计2)为模块内的数据结构进行设计3)对数据库进行物理设计4)其他设计5)编写详细设计说明书6)评审七、软件设计1、模块的定义模块是一个拥有明确定义的、输岀和特性的程序实体。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
模块化设计是把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。
但又相互关联的模块。
2、什么是模块独立性?用什么来度量(低内聚高耦合)?模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
独立性可以从两个方面来度量:模块本身的内聚性(Cohesion)和模块之间的耦合(Coupling)。
3、耦合、内聚的定义,几种类型(P171)内聚:从功能的角度对模块内部聚合能力的量度低内聚(偶然性内聚、逻辑性内聚、时间性内聚),中内聚(过程性内聚、通信性内聚),高内聚(顺序性内聚、功能性内聚)耦合:对软件内部块间联系得到度量弱耦合(非直接耦合、数据耦合、特征耦合),中耦合(控制耦合),较强耦合(外部耦合、公共耦合),强耦合(内容耦合)4、扇入、扇出的定义扇入:一个模块被其他模块调用的个数扇岀:一个模块调用其他模块的个数八、编码和测试1、四代语言的特点和典型代表第一代也称机器语言,是计算机能直接识别和执行的语言。
优点是无需翻译,占用内存少、执行速度快。
缺点是随机而异,通用性差,而且因指令和数据都是二进制代码形式,难于阅读和记忆,编码工作量大,难以维护。
第二代语言也叫汇编语言,是用助记符号来表示机器指令的符号指令的符号语言。
优点是比机器语言易记。
缺点同机器语言。
第三代语言还称高级语言,容易学习,通用性强,书写岀的程序比较短,便于推广和交流,是很理想的一种程序设计语言。
代表有C语言,C#语言。
第四代语言又叫面向应用的语言。
主要特点是:非过程性、采用图形窗口和人机对话形式、基于数据库和“面向对象”技术,易编程、易理解、易使用、易维护。
代表有SQL关系数据查询语言,UNIX系统的shell语言。
2、变量命名规则3、软件测试的基本任务程序测试的是为了发现错误而执行程序的过程。
目的:发现程序的错误任务:通过在计算机上执行程序,暴露程序中潜在的错误。
4、软件测试要经过哪些步骤(P254)?这些测试与软件开发各阶段之间有什么关系?软件测试要经过的步骤是:单元测试-集成测试-确认测试-系统测试。