您好,欢迎访问三七文档
软件工程概述主讲:郭俊颖Email:ybbh6b@126.com1软件工程的认识软件工程属于过程学,软件过程没有固定的模式可循。我们开发时应用采用什么过程和模式?没有良好的计划。我们应该如何才能做好计划?来自外部和内部需求的变更。需求一定是要变更的,我们如何应对?忽视测试阶段的工作,提交用户的软件质量差;其他根据问题。思考其解决方法!如何学好软件工程软件工程属于过程学,属哲学方法论范畴,属于复杂、理论性强、实践性强、技术含量高的综合学科,能从认识和学习复杂事物的一般规律去思考和回答。学习复杂事物遵循从粗到细,从表及里,由浅及深的方法。从头至尾的分段式学习在这里不适用;软件工程是一门理论性和实践性很强的学科,必须理论结合实践,以前常见的学习问题是重理论轻实践;软件工程许多问题没有对的和错的,只有较好的和适合的,并且解决方式不唯一。软件工程过程生命周期过程生命周期过程,大的划分为3个:计划、开发、使用与维护,细分如下。问题定义计划阶段可行性研究开发使用与维护需求分析使用与维护概要设计综合测试退役详细设计编码和调试生命周期过程计划过程:问题定义、可行性研究;设计过程:需求分析、概要设计、详细设计;实现过程:编码、调试、测试;使用与维护:使用与维护。思考既然软件工程属于过程学,那么请思考:前后过程之间是否有依赖关系?到底哪些过程比较重要,起决定作用?哪些容易做不好,导致软件危机?过程能否合并和省略?如果可以,我们如何选择适合自己的软件工程过程?软件开发模型瀑布模型演化模型原型模型螺旋模型增量模型喷泉模型瀑布模型只有前一阶段完成确认后才开始下一阶段。阶段间具有顺序性和依赖性。用户到最后才能看到产品。每个阶段必须完成规定的文档,完成文档审查,及早改正错误。缺乏灵活性可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段瀑布模型(WaterfallModel)例:毕业后七年,总算接了个大工程,造一根三十米烟囱,工期两个月,造价三十万,不过要垫资。总算在去年年底搞完了。今天人家去验收,被人骂得要死,还没有钱拿。原因?图纸看反了,人家是要挖一口井!瀑布模型存在问题⑴阶段与阶段划分完全固定,阶段间产生的大量文档,极大地增加了工作量。(2)项目开始阶段用户很难精确的提出产品需求,由于技术进步,用户对系统深入理解,修改需求十分普遍。⑵由于开发模型呈线性,项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。⑶前面未发现的错误传到后面的开发活动中,可能会扩散,进而可能会造成更不理想的效果。原型模型常有这种情况,用户定义了软件的一组一般性目标,但不能标识出详细的输入、处理及输出需求;还有一情况,开发者可能不能确定算法的有效性、操作系统的适应性或人机交换的形状。在这些及很多情况下,原型模型可能是最好的选择。原型模型听取用户意见建造/改造原型用户测试运行原型原型模型原型模型的作用类型⑴探索型这种原型目的是弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可能性。它主要针对开发目标模糊、用户和开发者缺乏对项目的开发经验。⑵实验型这种原型的目的是用于在大规模开发和实现之前,考虑方案是否合适规格说明,是否可靠。⑶进化型这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改造原型得过程中,逐步将原型进化到最终系统。使用原型策略⑴废弃策略先构造一个功能简单而质量要求不高的模型系统,针对这个模型系统,反复进行分析、修改,形成较好的设计思想。据此设计出完整、准确、一致、可靠的最终系统。⑵追加策略先构造一个功能简单而质量不高的模型系统作为最终系统的核心,然后通过不断地扩充、修改,逐步追加新要求,最后发展成最终系统。原型模型存在问题对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。原型模型要求开发者和客户在一段时间内共同完成原型系统的开发,如果任何一方没有实现承诺,会导致原型开发的失败。如果系统难以模块化,建造原型所需构件就有问题;如果高性能是一个指标,原型模型也可能不奏效。增量模型增量模型即渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。增量模型增量模型第一个增量往往是核心的产品,即实现了基本的需求,但很多补充的特性(其中一些是已知的,另外一些是未知的)还没有发布。核心产品交用户使用(或进行更详细的复审),使用和评估的结果是下一个增量的开发计划。该计划包括对核心产品的修改,使其能更好地满足用户的需要,并发布一些新增的特点和功能。这个过程在每一个增量发布后不断重复,直到产生最终的完善产品。增量模型,像原型和其他演化方法一样,具有迭代的特征。但与原型不一样,增量模型强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但它们确实提供了给用户服务的功能,并且提供了给用户评估的平台。增量模型人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时可增加人力实现下一个增量。当配备的人员不能在设定期限内完成产品时,它提供了一种先推出核心产品的途径,这样可以先发布部分功能给用户,对用户起到镇静剂的作用。具有一定的市场。缺点:自始自终开发者和用户纠缠在一起,直到完全版本出来。螺旋模型螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动.制定计划──确定软件目标,选定实施方案,弄清项目开发的限制风险分析──分析所选方案,考虑如何识别和消除风险实施工程──实施软件开发客户评估──评价开发工作,提出修正建议螺旋模型螺旋模型软件工程项目从螺旋中心开始启动,沿顺时针方向前进。第一圈产生产品规格说明;第二圈产生一个用于开发的原型;第三圈产生软件产品的初始版本;第四圈产生软件产品比较完善的新版本……。螺旋模型符合人们认识现实世界和软件开发的客覌规律;支持软件整个生命周期;保持瀑布模型的系统性、阶段性;利用原型评估降低开发风险;开发者和用户共同参予软件开发,尽早发现软件中的错误;不断推出和完善软件版本,有助于需求变化,获取用户需求,加强对需求的理解。螺旋模型存在问题风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加软件开发模型总结瀑布模型主要适应于小规模的软件开发。原型模型主要适应于:适用于解决有不确定因素的问题适用于对用户界面要求高的系统适用于决策支持方面的应用适用于中型系统螺旋模型一般只适用于庞大、复杂并具有高风险的软件的开发增量模型适用于需求经常变动的软件的开发软件开发方法软件开发方法主要包括:面向过程的开发方法(传统的软件开发方法)——结构化开发方法(StructuredDeveloping)、Jackson方法、原型化方法(PrototypingMethod)、HIPO法等。面向对象的开发方法——OOSD(Object-OrientedSoftwareDevelopment)基于构件的开发方法——(Component-BasedDevelopment,CBD)或基于构件的软件工程(Component-BasedSoftwareEngineering,简称CBSE)软件工程工具及环境项目管理工具:Project;需求建模工具:Visio,PowerDesigner,RationalRose;程序开发工具:语言开发平台;软件测试工具:Junit,WinRunner;配置管理工具:VSS(VisualSourceSafe);软件工程再认识软件工程特点软件工程是一门跨专业、跨学科、设计众多方面的内容;软件工程来源于实践,为实践服务;软件工程的理论性很强;软件的需求经常变化;……特点很多,我们该如何学好?学好软件工程的方法学习方法一:螺旋式学习第二遍学习第三遍学习第一遍学习单单是软件工程过程的内容学好,我们也不可能是阶段式的,因为它太复杂了,没有统一模式可循。学好软件工程的方法学习方法二:实践结合理论所谓“实践结合理论”、“理论指导实践”是我们认识事物一般是总结经验和教训,得出理论,再和大家的理论比较,指导与实践,这样一个反复的过程。实践理论12学好软件工程的方法学习方法三:程序员成长之路良好的编程习惯,不断的实践,不断的理论学习,逐渐成长为项目经理、架构分析师、老板等。编程人员编程习惯算法OOD设计模式架构设计人员需求人员项目管理心里学
本文标题:软件工程第2次课
链接地址:https://www.777doc.com/doc-3380996 .html