




免费预览已结束,剩余19页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
- 软件工程周丽媛一.如何建立一种软件生产的激励机制和良好的产业生态环境? 答:建立软件生产的激励机制可以根据软件设计人员的贡献给予相应的奖励,同时在设计团队之间引入竞争机制;建立软件的产业生态环境,需要与政府合作,通过促进政策、教育和维权等方式,建立更加健康的软件产业生态环境。积极应对各种新挑战、资产管理促进技术创新、打击盗版多管齐下,营造一个良好的知识产权环境,为软件产业健康发展提供更好的保障。二如何通过软件演化来满足用户快速变化的需求? 答:随时捕获用户的需求,更新软件功能,并且要根据社会环境预测用户需求,研发新技术,不断设计更新软件功能;处理之外也可以将不同功能的软件进行集成组合获取更加复杂的功能,这样可以应对用户快速变化的需求,同时也减少了更新软件的周期。刘翘铭1.简述UML实际建模过程。答:UML建模过程是一个迭代过程。每次迭代都建立相应的模型。分为以下几个阶段: 分析阶段。建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系。常以用例图为首选模型。 设计阶段。建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案。常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型。 实现阶段。主要工作就是进行编码,同时对已构造的模型作相应的修正。 配置阶段。通过模型描述所开发系统的软硬件配置情况建立配置模型。 测试阶段。使用前几个阶段所构造的模型来指导和协助测试工作。2.某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:生产科的任务是:(1)根据销售公司转来的内部合同(产品型号、规格、数量、交获日期)制定车间月生产计划。(2)根据车间实际生产日报表、周报表调整月生产计划。(3)以月生产计划为以及,制定产品设计(结构、工艺)及产品组装月计划。(4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间技术科的任务是: (1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。 (2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。试写出以上系统中生产科和技术科处理的软件结构图。答:3.Softwareengineeringexistsinavarietyofapplicationsexistinallaspectsofsoftwaredevelopment.Theprogramdesigntypicallyincludeprogramdesignandcodingoftheiterativeprocess,itisastageofsoftwaredevelopment.Softwareengineering,softwareprojectseekstoprovideguidanceinallaspects,fromfeasibilityanalysissoftwareuntilthesoftwareaftercompletionofmaintenancework.Softwareengineeringthatsoftwaredevelopmentandmarketingactivitiesarecloselyrelated.Suchassoftwaresales,usertraining,hardwareandsoftwareassociatedwithinstallation.Softwareengineeringmethodologythatshouldnotbeanindependentprogrammerfromtheteamandtodevelop,andtheprogramofpreparationcannotbedivorcedfromthesoftwarerequirements,design,andcustomerinterests.Softwareengineeringdesignofindustrialdevelopmentistheembodimentofacomputerprogram.软件工程存在于各种应用中,存在于软件开发的各个方面。而程序设计通常包含了程序设计和编码的反复迭代的过程,它是软件开发的一个阶段。软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作。软件工程认为软件开发与各种市场活动密切相关。比如软件的销售,用户培训,与之相关的软件和硬件安装等。软件工程的方法学认为一个独立的程序员不应当脱离团队而进行开发,同时程序的编写不能够脱离软件的需求,设计,以及客户的利益。 软件工程的发展是计算机程序设计工业化的体现。李芬田请从软件开发者,软件分类和用户的角度来研究一下软件的定义?答:第一,从软件开发者角度定义,软件=程序+文档,而程序又是由算法和数据组成,算法提供了解决问题的方法。软件开发文档是软件开发使用和维护过程中的必备资料。它能提高软件开发的效率,保证软件的质量,而且在软件的使用过程中有指导,帮助,解惑的作用,尤其在维护工作中,文档是不可或缺的资料。第二,根据软件的分类定义,软件大体可以分为系统软件和应用软件两大类,系统软件是电脑的基础软件,例如windows,ms-dos,应用软件是指具有具体功能的软件,并且是在系统软件上运行的,例如EXE文件COM文件windows是起基础作用的软件,一台电脑如果没有系统软件,并且是在系统软件上运行的,例如,财务软件,办公软件,广告设计,各种游戏等。第三,从用户角度看,软件技术硬件的附庸,软件是单独的产品,软件是许可证,软件是服务。2. 什么是软件危机?软件危机的表现是什么?其产生的原因是什么?解:软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性有显著的提高,生产成本显著下降,这为计算机的广泛应用创造了条件。一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术的进步一直未能满足发展的需要。在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。软件危机表现在以下四个方面:(1)经费预算经常突破,完成时间一再拖延。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。主观盲目制定计划,执行起来与实际情况有很大差距,使得开发经费一再突破。由于对工作量估计不足,对开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。(2)开发的软件不能满足用户要求。开发初期对用户的要求了解不够明确,未能得到明确的表达。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件不能满足用户的要求,因而导致开发失败。(3)开发的软件可维护性差。开发过程中没有同意的、公认的规范,软件开发人员按各自的风格工作,各行其是,开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致维护性差。(4)开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。造成软件危机的原因是:(1)软件的规模越来越大,结构越来越复杂。(2)软件开发管理困难而复杂。(3)软件开发费用不断增加。(4)软件开发技术落后。(5)生产方式落后。6)开发工具落后,生产率提高缓慢。唐东凯简述一下28定律在高级软件工程中的应用二八定律又叫80/20定律,是最省力的法则、不平衡的原则,被广泛应用与社会学及企业管理学中。所谓二八定律,即是意大利经济学家帕累托发现:社会上20%的人占有80%的社会财富。而对于我们所学的软件工程,也有其用武之地。二八定律主要用于软件测试中,它是软件测试的基本原理。软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求,或者弄清楚预期结果与实际结果之间的差别的过程。软件测试是为了发现程序中的错误而执行程序的过程。在软件测试过程中应该注意测试中的“群集现象”,即发现问题越多的地方,隐含的缺陷也越多,需要重点处理。这里提到的群集现象也就是我们一般所说的bug的群居现象。如果简单归纳一下软件测试中的80-20定律,大致有这些:1.80%的bug隐藏在20%的代码中2.80%的bug是由20%的测试人员发现的3.80%的bug属于20%的错误类型4.80%的时间用在测试计划、测试设计、测试实现上,20%的时间用于测试执行上5.80%的bug通过静态测试发现,20%的bug通过动态测试发现6.80%的bug通过人工测试发现,20%的bug通过自动化测试发现7.对于一个测试人员而言,20%的时间发现80%的bug,而剩余的80%的时间只能发现20%的bug。二如何理解敏捷视角下的软件过程1、敏捷软件工程。它是哲学理念和一系列开发指南的综合,这种哲学理念推崇让客户满意和软件尽早增量发布。开发方法强调超越设计和分析的发布及开发人员和客户之间主动和持续的沟通。是类软件工程,保留了基本框架活动,但将其缩小到推动项目组朝着构建和交付发展的最小任务集。敏捷建模(AM)认为建模对于所有的系统都是必要的,但是模型的复杂度、类型和规模必须根据所构建的软件来调节。2、敏捷联盟的12条原则。(1) 尽早交付有价值的软件来让顾客满意。(2)在后期也欢迎变更,利用变更来为客户创造竞争优势。(3)交付的时间间隔越短越好。(4)业务人员和开发人员必须天天在一起。(5) 围绕受激励的个人构建项目。(6)最有效的信息传递方式是面对面交谈。(7)可工作软件是进度的首要度量标准。(8)提倡可持续的开发速度。(9)关注优秀的技能和好的设计。(10)简单是必要的。(11)好的架构和设计出自于自组织团队。(12)每隔一定时间,反省工作,调整行为。3、XP(极限编程)XP包括了策划、设计、编码和测试4个框架活动的规则和实践。策划活动开始于建立一系列描述待开发软件必要特征与功能的“故事”,XP团队成员评估每一个故事并给出以开发周数为度量单位的成本。设计严格遵循KIS原则,适用简单而不是复杂的表述。鼓励适用CRC卡来组织相关的对象和类,鼓励重构。 编码一个关键概念是结对编程。两个人面对同一台计算机共同为一个故事开发代码。实施中两个人担当的角色略有不同。测试。在编码开始之前建立单元测试是XP的关键因素,所建立的单元测试应当适用一个可以自动实施的框架,易于重复执行,这种方式支持代码修复后的回归测试策略。胡睿题目1:结构化程序设计的主要内容是什么?它有什么优缺点?答案:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。题目2:系统设计的内容是什么?系统设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供基础(1)系统分解系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类,关联,操作,时间和约束的集合。每次分解的各子系统数目不能太多,最底层子系统称为模块。(2)确定并发性分析模型,现实世界及硬件中不少对象均是并发的。系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。后者可以放在一起,而综合成单个控制线或任务。(3)处理器及任务分配各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须完成下面的工作:估计性能要求和资源需求,选择实现子系统的硬软件,将软件子系统分配给各处理器以满足性能要求和极小化处理器之间的通信,决定实现各个子系统的各物理单元的连接。(4)数据存储管理系统中的内部数据和外部数据的存储管理是一项重要的任务。通常各数据存储可以将数据结构,文件,数据库组合在一起,不同数据存储要在费用,访问时间,容量以及可靠性之间做折中考虑(5)全局资源处理必须确定全局资源,并且制定访问全局资源的策略。全局资源包括:物理资源,空间和逻辑名字。如果资源是物理对象,则可以通过建立协议实现对并发系统的访问,以达到自身控制;如果资源是逻辑实体,如对象标识符,那么在共享环境中有冲突访问的可能,如独立的事务可能同时使用同一个对象标识符,则各个全局资源都必须有一个保护对象,由保护对象来控制对该资源的访问。(6)选择软件控制机制分析模型中所有交互行为都表示为对象之间的事件。系统设计必须从多种方法中选择某种方法来实现软件的控制。(7)人机交互接口设计设计中的大部分工作都与稳定的状态行为有关,但必须考虑用户使用系统的交互接口。题目3:软件测试类型都有哪些?请试着分别比较这些不同与联系?答案:测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。同时界面如同人的面孔,具有吸引用户的直接优势。设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再实用强大的功能都可能在用户的畏惧与放弃中付诸东流。区别在于,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。界面测试更关注于用户体验上,用户使用该产品的时候是否易用,是否易懂,是否规范(快捷键之类的),是否美观(能否吸引用户的注意力),是否安全(尽量在前台避免用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)?做某个性能测试的时候,首先它可能是个功能点,首先要保证它的功能是没问题的,然后再考虑该功能点的性能测试武杰1、Q:No matter you are what major, since learning this course in advanced software engineering, so would you please talk about the course which effect on the development of you in the future?(Please view the computer professional students.) A:Voice your opinions2、Q:Through the course Mr.Lee,what knowledge have you learned? Combined with the actual talk about your tips and feeling? A: Voice your opinions庞海龙高级软件工程中提到的5大需求、4大设计分别指的是什么?请你结合自己的理解谈谈软件需求获取的常用方法。高级软件工程中提到的5大需求,分别是功能需求、性能需求、数据需求、环境需求、将来的需求。4大设计指的是数据设计、架构设计、接口设计、模块设计。需求获取是一个确定用户对软件看法和要求、理解不同用户类的需求和限制的过程,常用的方法有三种,分别是组织人员组织人员,建立分析小组、其中包括领域专家:主角,也就是用户方面的问题专家,了解软件所解决问题的领域知识。系统分析员:导演,软件开发人员方面的人,其主要分析抽象领域专家的知识形成软件模型。1、 客户访谈客户访谈主要是调查研究,主要包括:(1)了解系统的需求。软件开发常常是系统开发的一部分,仔细分析研究系统的需求规格说明,对软件的需求获取是很有必要的。(2)市场调查:了解市场对待开发软件有什么样的要求;了解市场上有无与待开发软件类似的系统。(3)访问用户和用户领域的专家。把从用户那里得到的信息作为重要的原始资料进行分析;(4)考察现场。了解用户实际的操作环境、操作过程和操作要求。2、 问题分析与确认组织分析并评审,最终确定问题是否比较完整。刘凯一、软件工程中的哲学思想 1 软件设计方法的改变中体现了唯物辩证法中发展的观点 说明:从非结构化程序,到结构化程序,再到目前的面向对象程序,这一改变过程正体现着发展的观点。符合历史发展趋势的新的设计方法逐渐战胜替代旧的设计方法,这是由新旧事物的本质和发展的辩证本性决定的。新生的设计方法在旧设计方法的基础上诞生,对旧方法的因素取精华去糟粕,必将最终替代旧方法。 2 大型软件开发过程中资金、开发时间、开发人员之间的辩证联系。 说明:资金不足会导致开发时间的拉长和开发人员的不满懈怠;而开发时间的拉长也会反过来增加资金的消耗,对开发人员的状态也有不小的影响;开发人员的能力和状态直接影响到资金和开发时间。三者是相互影响、相互制约和相互作用的。 3 需求设计和具体编码是原因和结果的辩证关系 说明:首先需求设计和具体编码有时间顺序,具体编码必须在需求设计之后进行;其次两者之间存在必然的联系,因为需求设计的结果是具体编码的参考。并且两者互为因果,相互影响,需求设计决定具体编码,而具体编码过程中会发现需求设计的一些不足处,然后进行修改。 4 软件维护过程中体现矛盾的斗争性 说明:在软件的使用过程中,开发人员必须对软件进行维护,修补一些Bug、漏洞,完善强化软件的功能。但常常会出现这样的问题,修改一些功能很有可能会牵涉到其他的功能,甚至会导致其他功能的性能下降,这就存在了矛盾。这时就需要权衡利弊,特别要坚持唯物辩证法的重点论与两点论的统一。 5 软件功能和底层代码之间是现象和本质的关系 说明:软件功能是底层代码的外在表现,而底层代码是一个软件的根本性质。两者既对立又统一,首先两者有原则的界限,不能混同;其次软件功能由底层代码决定,而底层代码由软件功能体现。As the software plays more and more important roles in todays information society,the software reliabitity,safety and security are strongly required.The state of art of its engineering technologies for this high confidence software and the challenges it faced are worth researching.Based on the formal methods,this confidence software developing trends and its key technical points are worth discussing.随着软件在信息社会中发挥日益重要的作用,人们对软件可靠性、可靠安全性和保密安全性等可信性质的要求也越来越高;高可信软件工程的现状和面临的主要挑战非常值得研究。高可信软件工程技术的现状和面临的主要挑战,以及基于形式化方法的高可信软件技术的发转趋势值得探究。蒋权 一. 请描述一下UML里面静态建模及动态建模都有哪些图? 静态建模:创建并建立一个系统的静态特征1.用例图:描述系统功能及功能的使用者.2.类 图:表现系统里实体的关系,责任,类和类之间的关系,属性及方法.3.对象图:当类图不能完全显示关系时用对象图.描述对象的属性,对象名,方法.4.组件图:对类功能的封装,一个组件包含多个类. 虚线:表示依赖关系.5.部署图:描述系统中的物理结构.实线:表示连接动态建模:用来展示系统的行为1.时序图:描述对象的交互过程.以时间为参考(强调的是时间顺序). 虚线:(生命线)表示对象的生命周期. 实线:对象消息. 虚线:返回消息. 长方形:活动(激活). 叉:对象消亡.2.协作图:跟时序图一样,但强调对象的连接关系.3.状态图:描述对象的自身的状态(一个对象的类型不同可能行为很古怪,行为变化很大).4.活动图:(类似于流程图)描述一个环境中的交互顺序.1、说出软件工程的四项基本原则?选取适合的开发范型,采用合适的设计方法,提供高质量的工程支持,重视开发过程的管理。2、请列出软件工程的生命周期的6个阶段?问题的定义及规划,需求分析,软件设计,程序编码,软件测试和运行维护。3、软件生产过程中有哪些活动?什么是软件生存周期? 软件生产过程包括的活动有:需求分析、概要设计、详细设计、编码、测试、发布、维护。软件生产周期是指软件产品从研制、发布、维护到被新的产品代替这一整个产品生产过程。 4、主要的软件开发方法有哪些?主要有何不同?二软件需求分析的任务是什么?有哪些主要步骤?需求分析的基本任务是深入描述软件的功能和性能、确定软件设计的约束和软件同其它系统元素的接口细节、定义软件的其它有效性需求,总之,需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。主要步骤:1.问题识别(1)功能需求:明确所开发的软件必须具备什么样的功能。(2)性能需求:明确待开发的软件的技术性能指标。(3)环境需求:明确软件运行时所需要的软、硬件的要求。(4)用户界面需求:明确人机交互方式、输入输出数据格式。2.分析与综合,导出软件的逻辑模型分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。用图文结合的形式,建立起新系统的逻辑模型。3.编写文档(1)编写“需求规格说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。(2)编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。(3)编写确认测试计划,作为今后确认和验收的依据。(4)修改完善软件开发计划。在需求分析阶段对待开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。三简述面向对象分析设计的三个模型。答:三个模型:对象模型、动态模型、功能模型(1)对象模型描述系统的静态结构,包括类和对象,它们的属性和操作,以及它们之间的关系。构造对象模型的目的在于找出与应用程序密切相关的概念。对象模型用包含对象及对象的关系图表示。(2)动态模型着重于系统的控制逻辑,考察在任何时候对象及其关系的改变,描述这些涉及时序和改变的状态。动态模型包括状态图和事件跟踪图。状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为。事件跟踪图则侧重于说明系统执行过程中的一个特点“场景”,也叫做脚本(scenarios),是完成系统某个功能的一个事件序列。脚本通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件。功能模型着重于系统内部数据的传送和处理。功能模型表明,通过计算,从输出数据能得到什么样的输出数据,但不考虑参加计算的数据按什么时序执行。功能模型由多个数据流图组成,它们指明从外部输出,通过操作和内部存储,直到外部输出的整个数据流情况。功能模型还包括了对象模型内部数据间的限制。功能模型中的数据流图往往形成一个层次结构,一个数据流图的过程可以由下一层的数据流图作进一步的说明。四.软件生命周期模型及其选择(画一个图即可)Most complex systems today contain a great deal of software and digital components and will contain even more in the future. At the same time, software is becoming the Achilles heel of complex system development: At least half of all large software-intensive system projects are cancelled or suffer major delays and problems. System engineers and managers are often unprepared to cope with this new technology. The goal of this class we had is to learn why building these systems is so difficult and to provide system engineers, managers, and software engineers with the tools and knowledge to avoid these problems. With the end of the class, you will be able to exercise professional judgment in selecting approaches for a particular project based on an understanding of how the present state of software engineering practice came about, what was tried in the past, what worked and what did not work, and why. Note that the class is a system engineering of software class, not a standard software engineering class and as such will not provide basic training in programming or in specific approaches or tools for developing software.Well, we need to figure out what the system is suitable for the development of a complex system. So, please use your expertise to talk about what is the software life cycle, and to talk about the software life cycle models you know and choose a model and why? 当今最复杂的系统包含大量的软件和数字组成部分,将包含更多的未来。同时,软件正成为复杂系统发展的致命弱点:至少有一半的大型软件密集型系统项目被取消或遭受重大延误和问题。系统工程师和管理人员往往没有准备好应对这种新技术。这门课的目标是了解为什么构建这些系统是如此的困难,并提供系统工程师,管理人员和软件工程师的工具和知识,以避免这些问题。随着这门课的结束时,你将能够在一个特定项目的基础上,选择一个特定的项目,以了解如何在过去的软件工程实践的基础上,在选择方法,什么是在过去的尝试,什么工作,什么不工作,为什么。请注意,类是软件类的系统工程,而不是标准的软件工程类,因此不会提供编程的基本训练或开发软件的具体方法或工具。那么,在一个复杂的系统开发之前,我们需要弄清楚这个这个系统适合什么样的开发模型。所以,请你用专业知识谈谈什么是软件生命周期,并且谈谈你熟悉的哪些软件生命周期模型并且选择一个模型以及为什么选择?瀑布模型/改进的瀑布模型虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 -分析-设计-编码-测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段.由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型每一个阶段都不应该重叠,而应该是在评审通过,相关的产出物都已经基线后才能够进入到下一个阶段.瀑布模型的优点仍然是可以保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决.采用瀑布模型可以保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性.但对于前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型.另外对于中小型的项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中,而不是分阶段投入,因此采用瀑布模型会导致项目人力资源过多的闲置的情况,这也是必须要考虑的问题.很多人往往会以进度约束而不选择瀑布模型,这往往是一个错误的观点.导致这种情况的一个关键因素往往是概念需求阶段人力不足.因此在概念需求阶段人力能够得到充分保证的情况下,瀑布模型和迭代模型在开发周期上并不会存在太大的差别.反而是很多项目对于迭代或敏捷模型用不好,为了赶进度在前期需求不明确,没有经过一个总体的架构设计情况下就开始编码,后期出现大量的返工而严重影响进度.架构设计是软件开发中一个重要的关注点.因此在RUP中也提及到软件开发要以架构为核心.因此在架构设计完成后系统会被分为相关的子系统和功能模块.每个功能模块间的接口都可以定义清楚.在这种情况下,当模块B的详细设计做完成后往往就没有必要等到其它模块的详细设计都要完全作完才开始编码,因此在架构设计完成后可以将系统分为多个模块并行开发,每个模块仍然遵循先设计和编码测试的瀑布模型思路.这是瀑布模型的一种最重要的改进思路,也可以说这是一种增量开发的模型.当一个新系统的开发存在多个完全不相关的独立需求的功能开发的时候,这个时候也可以选择将整个开发过程按独立的需求来分为多个小瀑布进行操作.这种方式的最大问题就是没有一个完全总体的设计,架构设计人员无法在洞悉了所有需求后从系统的可扩展性,复用等方面总体规划.在项目管理中有一种压缩进度的方法叫赶工,因此瀑布模型的另外改进处就在适当的重叠各个阶段过程,达到资源的有效利用.比如我们通过讨论,会议确定的实现方式就可以开始执导下一个阶段的工作而不一定完全等到相关的交付物文档化出来.螺旋模型首先螺旋模型是遵从瀑布模型的.即需求-架构-设计-开发-测试的路线.螺旋模型最大的价值在于整个开发过程是迭代和风险驱动的.通过将瀑布模型的多个阶段转化到多个迭代过程中,以减少项目的风险.螺旋模型的每一次迭代都包含了以下六个步骤1.决定目标,替代方案和约束2.识别和解决项目的风险3.评估技术方案和替代解决方案4.开发本次迭代的交付物和验证迭代产出的正确性.5.计划下一次迭代6.提交下一次迭代的步骤和方案.螺旋模型实现了随着项目成本投入不断增加,风险逐渐减小.以帮我我们加强项目的管理和跟踪,在每次迭代结束后都需要对产出物进行评估和验证,当发现无法继续进行下去时可以及早的终止项目.螺旋模型复杂的地方在于尽责,专心和知识渊博的管理.因为对于每一次迭代我们要制定出清晰的目标,分析出相关的关键风险和计划中可以验证和测试的交付物并不是一件容易的事情.螺旋模型的每一次迭代只包含了瀑布模型的某一个或两个阶段.如第二次迭代重点是需求,第三次迭代是总体设计和后续设计开发计划等.因此这是和RUP提倡的迭代模型是有区别的,RUP的每一次迭代都会包含需求,设计,开发和测试等各个阶段的活动.RUP迭代的目的在于逐步求精而不是仅仅完成瀑布模型某一阶段的工作.增量和迭代模型增量迭代是 RUP统一过程常采用的软件开发生命周期模型.增量和迭代有区别但两者又经常一起使用.所以这里要先解释下增量和迭代的概念.假设现在要开发 A,B,C,D四个大的业务功能,每个功能都需要开发两周的时间.则对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二次增量完成C,D功能;而对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A,B,C,D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑.在第一个月过去后采用增量开始时候A,B全部开发完成而C,D还一点都没有动;而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成.RUP强调的每次迭代都包含了需求,设计和开发,测试等各个过程,而且每次迭代完成后都是一个可以交付的原型.迭代不是并行,在每次迭代过程中仍然要遵循需求-设计-开发的瀑布过程.迭代周期的长度跟项目的周期和规模有很大的关系.小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代.如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出.因此迭代模型虽然能够很好的满足与用户的交付,需求的变化,但确是一个很难真正用好的模型.就对风险的消除上,增量和迭代模型都能够很好的控制前期的风险并解决.但迭代模型在这方面更有优势.迭代模型更多的可以从总体方面去系统的思考问题,从最早就可以给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精化.业界比较标准的增量模型往往要求在软件需求规格说明书全部出来后后续的设计开发再进行增量.同时每个增量也可以是独立发布的小版本.由于系统的总体设计往往对一个系统的架构和可扩展性有重大的影响,因此我们推荐的增量最好是在架构设计完成后再开始进行增量,这样可以更好的保证系统的健壮性和可扩展性.原型法原型一般都不是单独采用的一种生命周期模型,往往会结合瀑布和增量迭代等方法一起使用.对于螺旋模型就可以理解为瀑布+迭代+原型+风险的一种生命周期模型.对于迭代开发来讲,每一个迭代周期的产出都可以看做是下个阶段要精化的原型.而对于瀑布模型开发来讲,我们在需求阶段也可以进行界面和操作建模,形成 DEMO后和用户做进一部的需求沟通和确认.当你的用户没有信息系统的使用经验,你的系统分析员也没有过多的需求分析和挖掘经验的时候,需求分析和调研过程则更需要是一个启发式的过程.而原型则是这种很好的启发式方法,可以快速的挖掘用户需求并达成需求理解上的一致.否则即使双方都签字认可的需求往往仍然不是客户真正想要的东西.原型可以分为抛弃型的和不抛弃型的.如果原型仅仅是需求阶段方面和用户沟通画的 DEMO,则这种原型一般都建议抛弃掉.而对于迭代开发来将,每次迭代的产出都是可以独立运行和包含基础功能的系统,是后续细化的基础,这类原型一般都不建议抛弃,后期的设计开发也要基于该原型逐渐的进行完善.快速和敏捷开发我们一般将快速和敏捷开发做为方法论,而很少将其做为一种软件开发生命周期模型.敏捷的目的是减少繁重和不必要的工件的输出,提高效率.而不是要我们去挑阶段或过程,不是分析设计都还没有做就去做开发.因此对于瀑布,增量迭代或原型我们都可以借鉴敏捷方法论中的一些好的实践,这些实践都是对传统的生命周期模型很好的补充.对于敏捷方法论在此不再做过多的叙述.关于选择生命周期模型的最后的总结1.在前期需求明确的情况下尽量采用瀑布模型或改进型的瀑布模型.2.在用户无信息系统使用经验,需求分析人员技能不足情况下一定要借助原型.3.在不确定性因素很多,很多东西前面无法计划情况下尽量采用增量迭代和螺旋模型4.在需求不稳定情况下尽量采用增量迭代模型5.在资金和成本无法一次到位情况下可以采用增量模型,软件产品分多个版本进行发布6.对于完全多个独立功能开发可以在需求阶段就分功能并行,但每个功能内都应该遵循瀑布模型7.对于全新系统的开发必须在总体设计完成后再开始增量或并行.8.对于编码人员经验较少情况下建议不要采用敏捷或迭代等生命周期模型.9.增量,迭代和原型可以综合使用,但每一次增量或迭代都必须有明确的交付和出口准则。五工资计算系统中的一个子系统有如下功能:计算扣除部分由基本工资计算出应扣除(比如水电费、缺勤)的部分;计算奖金部分根据职工的出勤情况计算出奖励金;计算工资总额部分由工资总额中计算出应扣除各种税金;生成工资表根据计算总额部分和计算税金部分传递来有关职工工资的详细信息生成工资表根据要求画出该问题的数据流程图。六某培训中心要研制一个计算机管理系统。它的业务是:将学员发来的信件收集分类后,按几种不同的情况处理。1)如果是报名的,则将报名数据送给负责报名事务的职员,他们将查阅课程文件,检查该课程是否额满,然后在学生文件、课程文件上登记。2)如果是想注销原来已选修的课程,则由注销人员在课程文件、学生文件和帐目文件上做相应的修改,并给学生注销单。3)如果是付款的,则由财务人员在帐目文件上登记,并开出发票给学生。注:一个学生可选多门课程要求:1.画出E-R图学生91117865410System132cectca课程选课账目1n11nn1n发票12.对以上问题画出数据流图。分类报名信课程检查学员信报名人员课程选课信息报名信息报名登记登记信息付款信财务人员课程报名信息付款信息记账记账信息账目付款信息学生注销信注销人员注销信息修改课程信息课程注销信息修改学生信息学生注销信息注销信息修改账目信息注销信息账目注销信息注销信息开注销单注销单学生开发票发票3.画出系统的用例图。七Software engineering is well beyond software development. It includes understanding customer needs, planning the development process, team work, maintenance, analysis and assessment
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 19 小英雄雨来(节选)公开课一等奖创新教学设计(2课时)
- 初中语文统编版(五四学制)九年级上册第三单元课外古诗词诵读左迁至蓝关示侄孙湘 公开课一等奖创新教学设计(表格式)
- 化妆品工厂安全培训课件
- 冰淇淋品牌忠诚度影响因素-洞察及研究
- 兆欧表使用课件
- 骨盆平面模型讲解
- 创业导师的灵魂讲解课件
- 工程成本预算讲解
- 管培生项目汇报
- 工会财务课件讲解
- 班主任班级卫生管理培训
- 万亨工业科技(台州)股份有限公司年产500万套逆变器及配件、800万套新能源汽车控制器配件技改项目环评报告
- 防止触电事故的安全技术措施
- 娃哈哈企业财务分析报告
- 破碎承包协议合同协议
- 非洲猪瘟防控措施课件
- 禁毒禁烟教育主题班会
- 交通运输公司安全生产目标考核奖惩制度
- 蛛网膜囊肿的治疗与护理
- 外卖站长个人工作总结
- 中医基础理论经络培训课件
评论
0/150
提交评论