软件工程笔记(完整版).doc_第1页
软件工程笔记(完整版).doc_第2页
软件工程笔记(完整版).doc_第3页
软件工程笔记(完整版).doc_第4页
软件工程笔记(完整版).doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章软件工程概述1. 软件危机 (software crisis) :是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即“两低一高” 问题:质量低、效率低、成本高。软件危机也成为“软件萧条 (depression)”或“软件困扰 (afflication) ”2. 软件危机主要表现1)开发成本和进度估计不准2)用户对 “已完成的 ”软件系统不满意3)软件质量往往靠不住4)软件常常是不可维护的5)软件通常没有适当的文档资料6)软件成本逐年上升7)软件开发生产率滞后于硬件和计算机应用普及的趋势3. 产生软件危机的原因1)与软件本身的特点有关a. 软件不同于硬件,是逻辑部件而不是物理部件

2、缺乏可见性难于测试管理和控制开发过程困难不会因使用时间过长而被“用坏”难以维护b.软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升2)和软件开发与维护的方法不正确有关a.对软件开发和维护有关的错误认识和作法忽视软件需求分析的重要性认为软件开发就是写程序轻视软件维护b. 对软件开发过程与方法的认识与应用软件开发要经历一个漫长的时期(编程占 10-20% )程序仅是完成软件配置的一个组成部分软件开发方法要有利于软件维护4. 软件的特点(1) 软件是无形的( intangible )(2) 软件副本的大批量生产轻而易举(3) 软件业是劳动密集型的(4) 一个没有经过充分训练

3、的软件开发人员很容易编写出难以理解和修改的软件(5)软件本身很容易修改。但由于它的复杂性,又很难正确地修改。(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化5. 消除软件危机的途径1)对计算机软件的正确认识2)认识到软件开发不是个体劳动的神秘技巧, 而是一种组织良好、 管理严密、 各类人员协同配合、共同完成的工程项目3)推广使用成功的软件开发技术和方法4)开发和使用更好的软件开发工具总之 , 为了消除软件危机,既要有技术措施(方法和工具 ),又要有必要的组织管理措施。6. 对“工程 ”的理解:大事情,施工的过程,工程学科。施工的过程:分析设计实现维护7. 软件的

4、概念经典定义:软件=程序+文档+数据软件是计算机程序及其有关的数据和文档的完整集合。计算机程序是能够完成功能的可执行的指令序列数据是程序能适当处理的信息,具有适当的数据结构软件文档是开发、使用和维护程序所需要的图文资料8. 软件工程的概念概括地说,软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来, 以经济地开发出高质量的软件并有效地维护它,这就是软件工程。目标:项目成功(BFC,Better 、 Faster、 Cheaper)9. 软件工程的本质特征( 1)软件工程关注于大

5、型程序的构造( 2)软件工程的中心课题是控制复杂性( 3)软件经常变化( 4)开发软件的效率非常重要( 5)和谐地合作是开发软件的关键( 6)软件必须有效地支持它的用户( 7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品10. 软件工程的基本原理( 1)用分阶段的生命周期计划进行严格管理( 2)坚持进行阶段评审( 3)实行严格的产品控制( 4)采用现代程序设计技术( 5)结果应能清楚地审查( 6)开发小组的人员应该少而精( 7)承认不断改进软件工程实践的必要性11. 软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology

6、) ,也称为范型 (paradigm) 。1)传统方法学(结构化方法学): SA,SD,SP,ST2)面向对象方法学:OOA,OOD,OOP,OOTS:结构化, structuredOO:面向对象, Object OrientedA :分析, AnalysisD:设计, DesignP:编程, ProgrammingT:测试, Test12. 软件工程方法学三要素,这就是方法、工具和过程。其中:1)方法是完成软件开发任务的技术方法,回答“如何做”的问题;2)工具是为方法的运用提供自动的或半自动的软件支撑环境;3)过程规定了完成各项任务的工作阶段、工作内容、产品、验收的步骤和完成准则。第二章软件

7、过程1. 过程( process): ISO9000 把过程定义为,把输入转化为输出的一组彼此相关的资源和活动。2. 软件过程 (Software Process): 是为了获得高质量软件所需要完成的一系列任务的框架(Framework ),它规定了完成各项任务的工作步骤。3. 软件生命周期软件生命周期由软件定义、软件开发、和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。 (三个时期八个阶段 )三个时期八个阶段:三个时期:软件定义、软件开发、运行维护八个阶段:( 1)问题定义(2). 可行性研究(3). 需求分析(4).概要设计(5).详细设计(6).编码和单元测试(7).综合测试

8、(8).软件维护4. 软件开发模型 (在课本的 14 33 页,了解一下 ) 1) 瀑布模型 (Waterfall)2) 快速原型模型 Prototype3) 增量模型( Incremental Models )4) 喷泉模型5) 螺旋模型6) 统一过程 (rational unified process,RUP)7) 敏捷过程8) 极限编程 (extreme programming,XP)9) 能力成熟模型(capability maturity model,CMM)第三章结构化的分析(SA)1. 需求分析:发现、求精、建模、规格说明、复审的过程。发现:获取需求,完备、正确、有效求精:细节建

9、模:形式化描述规格说明:详述复审:批准2. 需求分析的准则1) 必须理解和表示问题的信息域,根据这条准则应该建立数据模型。2)必须定义软件应完成的功能,这条准则要求建立功能模型。3)必须表示作为外部事件结果的软件行为,这条准则要求建立行为模型。4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。3. 需求获取的方法1) 访谈正式的:事先准备好的非正式的访谈:开放的,头脑风暴,情景分析2) 面向数据流自顶向下求精3) 简易的应用规格说明技术4) 快速建立软件原型4. 分析建模结构化分析实质上是一种创建模型的活动。通过需求分析而建立的模型必须达到下述的三个基本目标:描述用户的需求。

10、为软件设计工作奠定基础。定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品。5. 模型 (Model) :是为了理解事物而对事物作出的一种抽象,是对事物的书面上的无歧义文字或图形的描述 .5.1.模型是对问题的简化。5.2.要从多个角度认识事物。6. 分析模型: 数据模型 (实体联系图) 、功能模型 (数据流图)、行为模型 (状态转换图) 。7. 需求分析成果:软件需求规格说明8. 实体 -联系图( ER 图, entity-relationship diagram )(P41,要求会画 )( 1)数据模型的主要成分:数据对象,数据对象的属性,数据对象彼此间相互连接的关系

11、数据对象:对软件必须理解的复合信息的抽象。属性:定义了数据对象的性质。联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。类型:一对一联系、一对多联系、多对多联系。联系也可以有属性。( 2)实体 -联系图的符号表示:实体属性联系9. 数据流图( DFD ,Data Flow Diagram ):描绘信息流和数据从输入移动到输出的过程中所经受的变换(书本 P43 47,要会画)10. 数据字典( DD: ,Data Dictionary ):是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合(书本 P49 51,要会画)11. 状态转换图( SD, State Diagram

12、):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。用于建立行为模型。状态:是任何可以被观察到的系统行为模式。状态规定了系统对事件的响应方式事件:是在某个特定时刻发生的事情,是引起系统做动作或(和)转换状态的控制信息。(书本 P47 49)第四章结构化设计性能DFD环境功能将来分析设计过程ERDDD数据STD接口( 五大需求)架构数据(四大设计)内存 DS数据DB外存file架构C/S,B/S四大设计构件之间的接口接口人机接口Process过程Procedure(步骤)三型两化行为模型三型功能模型数据模型系统化两化层次化如何设计:必须依据原理、原则、规则、准则模块:是由边界元素限

13、定的相邻的程序元素的序列,而且有一个整体标识符来代表它。模块化: 就是把程序划分成可独立命名且独立访问的模块, 每个模块完成一个子功能, 把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。( 1) 一组相邻元素( 2) 一个边界( 3) 一个名字(标识符 ID )Why 模块化?1) 降低复杂度2) 有利于团队分工协作How to 模块化?Meyer 模块化 5 标准1) 模块可分解性(降低复杂性)2) 模块可组装性(可重用,reuse)3) 模块可理解性(易于维护 )4) 模块连续性(副作用小)5) 模块保护性(屏蔽异常)抽象( abstract):抽出事物的本质特征,而暂时

14、不考虑它们的细节找共性,略特性抓主要,略次要有效降低模块数量逐步求精:为了集中精力解决主要问题而尽量推迟对问题细节的考虑。Miller大小粗细法则:一个人在任何时候都只能把精力集中在7 27 2 个知识块上。全局变量信息隐藏局部变量块内:高内聚,一个模块只做一件事模块独立参数少块间:低耦合,KIS( keep it simple)类型简单结构化设计原理:1) 模块化2) 抽象3) 信息隐藏4) 逐步求精启发原则:1) 改进软件结构提高模块独立性2) 模块规模应该适中(LOCcode3) 深度、宽度、扇出和扇入都应当适中( 7 2 原则)4) 模块的作用域应该在控制域之内5) 力争降低模块接口的

15、复杂度(接口KIS )6) 设计单出口单入口的模块7) 模块的功能应该可以预测设计结果描述工具:建模工具软件工具工具建模工具开发工具IPO 图( Input Process Output ):描述模块(总体)架构表示: C/S,B/S ,层次层次图+ IPO 图 = HIPO 图结构图:(P76)Yourdon 提出的结构图是进行软件结构设计的另一个有力工具面向设计流的设计方法三种设计方法面向数据结构的设计方法面向对象的设计方法设计优化:无有好优精人 机界面设计问题MICUIGUIAUIMMI1. 系统响应时间(长度、易变性)集成式(内含,开始就设计在软件中)2. 用户帮助措施嵌入式 / 附加

16、式(联机文档)1) 完备性2) 选择性( menu, F1 , help)3) 如何显示帮助信息4) 返回 /退出 (ESCescape , 按钮 )平面5) 怎样组织帮助信息层次结构(导航)Web 页(超链接)3.出错信息处理1) 可理解性2) 建设性3) 警示性4) 视听性5) 友好性4.命令交互UI 设计的重要性:1) 用户评价产品的依据2) 占总设计量的50% 以上3) 涉及到美学、人机工程学、心理学4) UI 工程师成为一种岗位UI 设计原则:以人为本、人性化、美、方便和谐美一致对称人机界面设计过程:用户界面设计是一个迭代的过程建模( UML 的状态图)建立原型( powerpoin

17、t,dreamvever )试用评估界面设计指南(看看微软的界面设计)1) 一般交互2) 信息显示3) 数据输入结构化方法学SASDSPST1965GOTO 语句1968(书本 P89)1972如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每一个代码块只有一个入口和一个出口,则称这个程序是结构化的。1) 顺序2) 选择(单路、双路、多路、多重)3) 循环( for 、 当型循环、直到型循环、枚举)过程设计工具程序流程图N-S 盒图PAD 图图UML活动图判定树判定表表伪码语言语言(要会画这些图,会根据伪码语言转化为上述各种图,还要掌握几种图之间的转换)数据的三类逻辑结

18、构1) 顺序2) 选择3) 重复第五章结构化实现测试定义:为了发现错误而执行程序的过程错误编写时产生的故障运行时发生的测试具有破坏性,而其它的环节都是建设性的。但是其破坏时为了更好的建设,保证质量的有效途径测试的目标( G.Myer )1) 定义:测试是为了发现程序中的错误而执行程序的过程2) 好的测试:好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案3) 成功的测试:成功的测试是发现了至今为止尚未发现的错误的测试目的测试方案一组输入一组输出(预期的结果)测试的准则1) 追溯到需求:所有的测试都应该能追溯到用户的需求2) 及早计划:应该在测试之前的相当长时间,就指定出测试计划3) 2、

19、 8 定律:把Pareto 原理应用于软件测试。Pareto 原理告诉我们,测试发现的错误中的 80%很可能是由程序中20% 的模块造成的4) 从小到大:测试应该从“小模块”开始,并逐步进行“大模块”测试5) 不可穷尽:穷举测试是不可能的6) 第三方(丙方)测试:为了达到最佳的测试效果,应该由独立的第三方来从事测试工作所谓最佳效果,就是指最大可能性发现错误的测试,这也是测试的基本目标黑盒测试:接口处、功能测试测试方法白盒测试:结构测试流图 P110(要会根据程序流程图转化)体现了程序判断的节点白盒测试技术:1) 逻辑覆盖2) 路径覆盖程序的复杂度度量(3 种方法P115,要会根据流图,计算出程

20、序的复杂度)流图中的区域数= 环形复杂度流图中的环形复杂度= 流图中的边数 图中节点数流图中的环形复杂度= 图中判定节点的数目+ 1+ 2复杂:指人的体力和脑力受到挑战独立路径( P115)定义:是指至少引入程序的一个新处理语句集合或一个新条件的路径自顶向下找法从左向右逐步增加黑盒测试技术(P120)等价类划分边界值分析错误预测测试步骤(从小到大)单元子系统系统验收平行运行集成测试一边运行新系统,一边运行旧系统集成测试的策略深度优先自顶向下宽度优先自底向上软件的可靠性可靠性:时间段,在规定的时间段内,成功运行程序的概率可用性:时间点,在一个时间点上,成功运行程序的概率MTTF :Mean Ti

21、me To Failure ,平均无故障时间MTTR :Mean Time To Repair ,平均维修时间测试发现 bug质量排除 bug可靠性第六章面向对象方法学导论面向观点、世界观、软件观System?1) 若干部件的集合2) 部件具有独立的功能和边界3) 部件之间具有相互联系,这些联系构成结构4) 部件间相互作用,构成运动对象( P151)在研究或解决问题的过程中关注的人、事物、概念OO( Object Oriented, 面向对象)起源学习、掌握、运用面向对象方法学的四个要点:面向对象=对象+类+继承+通信1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较

22、简单的对象以某种方式组合而成2) 把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。3) 按照子类与父类的关系,把若干个对象类组成一个层次结构的系统4) 对象彼此之间仅能通过传递消息互相通信面向对象方法学的优点1) 与人类习惯的思维方法一致2) 稳定性好3) 可重用性好4) 较易开发大型软件产品5) 可维护性好面向对象的一些概念1.对象:是封装了数据结构以及可以施加在这些数据结构上的操作的封装体, 这个封装体有可以唯一标识它的名字,而且向外界提供一组服务。2. 类:就是对具有相同数据和相同操作的一组相似对象的定义3. 实例:就是有某个特定的类所描述的一个具体的对象4. 消息:

23、就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明书5. 方法:就是对象所能执行的操作,也就是类中所定义的服务6. 属性:类中说定义的数据,它是对客观世界实体所具有的性质的抽象7. 封装:就是把某个事物包起来,使外界不知道该事物的具体内容8. 继承:是指能够直接获取已有的性质和特征,而不必重复定义他们9. 多态性: 是指子类对象可以像父类对象那样使用, 同样的消息既可以发送给父类也可以发送给子类对象。10. 重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字面向对象的三种关系:继承组成关联父类(这个箭头是空心的)子类子类对象的特点:( 1) 以数据为

24、中心( 2) 实现了封装( 3) 本质上具有并行性( 4) 模块独立性好面向对象建模:功能模型类三种模型的建模工具:对象模型:类图功能模型:用例图(用况图)动态模型:状态图,时序图对象模型动态模型(面向对象模型)面向对象的建模步骤:系统观点啥们UML 的 9种图对象模型:最基本、最核心、最重要状态图:描述了单一对象,在其生命周期内的变化规律事件 event瞬间的状态时间段时序图:多个对象的交互。时序图的每个对象有各自对应一个状态图第7&8章九个图分析九个图设计架构成中心用况驱动增量与迭代For 人for 计算机3 型 5 层 (课本的p166)对象模型3 型功能模型动态模型自顶向下5 层逐步求

25、精啥们之序面向对象( OOA )的任务与过程分析:搞清楚、弄明白软件的需求,并根据需求建模研究需求识别对象建立模型面向对象分析的策略:三型五层:自顶向下、逐步求精五层:主题层、类与对象层、结构层、属性层、服务层需求陈述 P167用户提供、表现多样内容:范围、需求、假设问题:歧义、矛盾对策:甲乙共商,原型化需求例子ATM(课本 P167)建立对象模型类:名词a kind of关系:part of. with词法分析属性:量词(重量、身高、年龄)、形容词方法:动词候选筛选确定优化UC 矩阵user customer建立动态模型顺序图(多对象)需求陈述状态图(单一对象)编写脚本画顺序图案例研究:电梯

26、系统(课本的P186 P190)OOAOODOOP(3 型4 图 )( 3 型4 图)for需求for机器 /实现3 型4 图:对象模型功能模型动态模型类图用例图顺序图、状态图OOD (面向对象设计)准则:P1921. 模块化2. 抽象3. 信息隐藏4. 弱耦合5. 强内聚6. 可重用启发规则:1. 设计结果应该清晰易懂2. 一般 /特殊结构的深度应适当3. 设计简单的类4. 使用简单的协议5. 使用简单的服务6. 把设计变动减至最小第 9 章(老师没讲)第 10 章 UML(P232) (自己看,一定要会画9 种图)第 11章 计划管理:就是通过计划、组织和控制等一系列的活动,合理的配置和使用各种资源,以达到既定目标的过程。软件项目管理:就是通过计划、组织、控制等一系列的活动,合理的配置和使用各种资源,以便在预定成本和期限内开发符合客户需要的软件的过程(类)工程:大的、复杂的、由众多人一起完成的(对象)项目:一个具体的工程是项目估量(代码行)工作量人财物时软件配置:程序、文件、数据对软件的配置进行管理的原因:需求的变更是不可避免的风险( risk ):导致失败的因素识别评估避免估算代码行:估概预决代码行LOCKLOC估算量功能点FP( functionpoints)FP 技术:(具体的计算方法程序量( KLOC F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论