您好,欢迎访问三七文档
软件工程复习提纲:一、软件危机二、软件工程的定义三、软件过程(软件从无到有,从开发到完成到维护)常见软件过程模型:瀑布模型为主;增量模型;螺旋模型(唯一一个要有风险分析的模型)四、统一过程(适合架构型软件),敏捷开发,CMM(五个等级)五、软件需求工程的概念,可行性分析,需求分析的概念和方法六、软件架构的发展历程七、软件测试的原则,测试的方法,测试策略八、软件项目管理的九大知识领域和五大管理过程题型:一、选择20*2二、判断10*1.5三、论述四、分析一.软件危机开发的软件不符合应用的需要,错误百出,可靠性极差,使用不方便,开始项目常不能按交货,成本大大超过原来的预算等,这种现象被人们称为“软件危机”。软件危机主要表现在以下1对软件开发成三和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。2.用户对“已完成”的系统不满意的现象经常发生。3.软件产品的质量往往无法保证,缺陷很多,补丁一个接一个打。4.软件的可维护程序非常低。5.软件通常没有适当的文档资料6.软件成本不断提高。7.软件开发生产率的提高赶不上硬件的发展和人们的需求的增长。二.软件工程的定义用现代工程的概念,原理,技术和方法进行计算机软件的开发,管理和维护,把经过时间考验面证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。三.软件过程,常见的软件过程模型(瀑布模型,增量模型,螺旋模型)软件过程,也称为软件生存周期过程,是指软件生存周期中的一系列相关过程,其中过程就是活动的集合,活动是任务的集合,任务要起到把输入加工成输出的作用。活动的执行可以是顺序的、迭代的(重复的)、并行的、嵌套的,或者是有条件地引发的。瀑布模型1.特点强调阶段的划分及其顺序性强调各阶段工作及其文档的完备性每个阶段结束之前,都从技术和管理两个角度进行严格的审查是一种严格线性的、按阶段顺序的、逐步细化的开发模式2.适用时机所有功能、性能等要求能一次理解和描述时所有的系统功能一次交付时必须同时淘汰全部老系统时3.价值结构简单明了;历史较长、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具。一种较为有效的管理模式:订计划、成本预算、组织开发人员,阶段评审,文档管理,从而对软件质量有一定的保证。4.风险和缺点获得完善的需求规约是非常困难的;难以适应快速变化需求;系统太大时,难以一次做完;反馈信息慢;极可能引起开发后期的大量返工,如返工到需求、设计等早期活动;增量模型1.特点多个版本可以并行开发;每个版本都是可运行的产品;需求在开发早期是明确的;2.增量型适用时机需要早期获得功能;中间产品可以提供使用;系统被自然地分割成增量;工作人员/资金可以逐步增加。3.增量型需考虑的风险需求未被很好地理解一次要求所有功能需求迅速发生变化事先打算采用的技术迅速发生变化长时期内仅有有限的资源(人员/资金)演化模型1.特点迭代的开发方法,渐进地开发各个可执行版本,逐步完善软件产品。每个版本在开发时,开发过程中的活动和任务顺序地或部分重叠平行地被采用。与增量模型的区别是:需求在开发早期不能被完全了解和确定,在一部分被定义后开发就开始了,然后在每个相继的版本中逐步完善。四.统一过程(适合架构型软件)敏捷开发,CMM(初始级,可重复级,已定义级,已管理级,优化级)RUP是一个风险驱动的、基于UML和构件式架构的演化开发过程。RUP的四个阶段先启(Inception),精化(Elaboration),构建(Construction),产品化(Transition)敏捷开发的框架分为4个层次:动机(快速响应不断的变化),价值(关于什么是最重要的信念),原则(一组满足价值的方法)和实践做法(在实践中的具体实现)适合采用敏捷过程的情况:需求不确定、易挥发有责任感和积极向上的开发人员用户容易沟通并能参与小于10个人的项目团队CMM(软件能力成熟度模型:CapabilityMaturityModelForSoftware)是一种用于评价软件承包能力并帮助其改善软件质量的方法,主要用于软件开发过程和软件开发能力的评估和改进,它侧重于软件开发过程的管理及工程能力的提高与评估。五、软件需求工程的概念,可行性分析,需求分析的概念和方法需求定义:系统必须符合的条件或能力软件需求用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。内容包括:FURPS+关注what(例如设计约束,实现需求,接口需求,物理需求)功能性(Functionality),易用性(Usability),可靠性(Reliability),性能(Performance),可支持性(Supportability)单个优秀需求应具有的特性:完整性正确性可行性必要性划分优先级(Why?)无二义性可验证性多个优秀需求应具有的特性:完整性可理解性一致性可跟踪性对需求进行分析,并进行图形建模,形成分析模型结构化分析模型数据流图(DFD)控制流图(CFD)数据字典(DD)实体—关系图(ERD)状态变迁图(STD)加工说明(PSPEC)控制说明(CSPEC)面向对象分析模型用例图活动图类图时序图通信图状态机图需求是确定软件要做什么,需求工程包括5个阶段:需求获取,需求分析,需求定义,需求验证,需求管理(定义需求基线,需求变更控制和版本控制,需求跟踪)。六.软件架构的发展历程(客户端-服务器模型,分布式架构模型,组件式架构模型,软件总线,中间件,SOA,云计算)c/S结构是一种分布式模型,采用发请求、得结果的模式:客户机向服务器发出请求(数据请求、网页请求、文件传输请求等等),服务器响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。C/S结构的应用都由三个相对独立的逻辑部分组成:第一级是数据库管理结点(databasemanagementnode)。第二级或中间级是“商业逻辑结点”(businesslogicnode),是指具体应用中实施的程序逻辑和法则。第三级是用户界面级,强调高效、方便易用的用户界面。在C/S模型中,客户和服务器在服务/请求上的差别,在一定程度上限制了系统的灵活性和可扩展性。采用分布式对象结构:“对象(Object)”——提供服务的系统组件(SystemComponent)。每个对象在逻辑上是平等的,它们可以互相为对方提供所需的服务。提供服务的对象就是服务器,而提出服务请求的对象就是客户。“软件总线(SoftwareBus)”的中间件(Middleware),即对象请求代理(ObjectRequestBroker,简称ORB)分布式对象结构具有很好的开放性和透明性,用户可以非常方便地在总线上添加、更新或删除组件对象。中间件技术中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。终端仿真/屏幕转换中间件数据访问中间件(ADO)远程过程调用中间件(RPC)消息中间件(MQ)交易中间件(MTS)对象中间件(ORB)云计算定义云计算(CloudComputing):是分布式处理(DistributedComputing)、并行处理(ParallelComputing)和网格计算(GridComputing)的发展,或者说是这些计算机科学概念的商业实现。是指基于互联网的超级计算模式--即把存储于个人电脑、移动电话和其他设备上的大量信息和处理器资源集中在一起,协同工作。在极大规模上可扩展的信息技术能力向外部客户作为服务来提供的一种计算方式。云计算综述数据在云端:不怕丢失,不必备份,可以任意点的恢复;软件在云端:不必下载自动升级;无所不在的计算:在任何时间,任意地点,任何设备登录后就可以进行计算服务;无限强大的计算:具有无限空间的,无限速度。云计算三种模式IaaS:是InfrastructureasaService,基础设施即服务,消费者通过Internet可以从完善的计算机基础设施获得服务。例如AWS,OpenStack,CloudStack提供的虚拟机计算服务。通过互联网就可以获得有计算能力的服务器,不需要实际的服务器资源。SaaS:是Software-as-a-service,国内通常叫做软件运营服务模式,简称为软营模式.提供的是软件服务,例如Office365等,通过互联网就直接能使用这个软件应用,不需要本地安装。PaaS:是Platform-as-a-Service的缩写,意思是平台即服务。把服务器平台作为一种服务提供的商业模式。例如Sae,通过互联网就直接能使用开发平台,不需要本地安装各类的开发环境。SOA的定义:面向服务的体系结构(service-orientedarchitecture)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。说得通俗一点就是,系统中分为三种角色:服务提供者、服务使用者和注册中心,提供者发布服务到注册中心,使用者通过注册中心发现所需服务,然后与该服务的提供者绑定,并调用服务SOA(Service-OrientedArchitecture)是面向服务架构,简单说就是把应用分成成一个个标准的服务模块,然后就可以按需要进行组合,满足企业定制化需求。SOAP即简单对象访问协议webService三要素:SOAP、WSDL、UDDIsoap用来描述传递信息的格式,WSDL用来描述如何访问具体的接口,uddi用来管理,分发,查询webService界面设计的原则易学性(Learnability)系统应容易学习和掌握,不应对用户有额外的知识和技能要求。用户可以通过两种途径来学习系统,即:系统的联机手册;系统功能的操作演示及例子。用户熟悉性(Userfamiliarity)界面应以用户导向的名称和观念为主,而不是以计算机的概念为主。这能让用户更快地熟悉系统,使用系统。一致性(Consistency)系统的各个界面之间,甚至不同系统之间,应具有相似的界面外观、布局,相似的人机交互方式以及相似的信息显示格式等。减少意外(Minimalsurprise)系统功能和行为对用户应是明确、清楚的。例如:系统有标准的界面;系统不会产生异常的结果,在相同情况下总会有相同的行为;系统有预定的响应时间等。易恢复性(Recoverability)系统设计应该能够对可能出现的错误进行检测和处理,提供机制允许用户从错误中恢复过来。提供用户指南(Userguidance)系统应提供及时的用户反馈和帮助功能。用户多样性(Userdiversity)系统应适应各类用户(从偶然型用户、生疏型用户到熟练型用户,直至专家型用户)的使用需要,提供满足其要求的界面形式。黄金规则让用户驾驭软件,不是软件驾驭用户减少用户的记忆保持界面的一致性七.软件测试的原则,测试的方法(白盒法,黑盒法),测试的策略测试准则所有的软件测试应追溯到用户的需求穷举测试是不可能的根据软件错误的聚集性规律,对存在错误的程序段应进行重点测试尽早地和不断地进行软件测试避免测试自己的程序制定测试计划,避免测试的随意性测试应该从小到大测试策略按测试层次分类单元测试、集成测试、系统测试按软件质量属性分类功能性测试、可靠性测试、易用性测试、性能测试、可移植性测试、可维护性测试其他测试策略验收测试、α测试、β测试、安装测试、回归测试八.项目管理的九大知识领域和五大管理过程。范围管理,进度管理,成本管理,风险管理。九个知识域:范围管理,人力资源管理,采购管理,时间管理,风险管理,沟通管理,成本管理,质量管理和整合管理。范围管理:项目范围
本文标题:软件工程复习
链接地址:https://www.777doc.com/doc-1990853 .html