您好,欢迎访问三七文档
软件工程导论第一章本章要点•工程的概念•软件工程的发展•软件工程分析•三种过程模型•工程化思考工程是什么?•工程简而言之就是多人参与并有计划、有步骤地完成一项任务的活动•工程强调–目的–计划–步骤软件发展与软件工程起源•软件的发展四个阶段:–1950年前后到1960年前后,程序设计阶段;–1960年前后到1970年前后,软件系统阶段;–1970年前后到1980年前后互联网络兴起,软件工程阶段;–1980年前后到现在,分布式软件工程阶段;•1968年,北大西洋公约组织的计算机科学家召开国际会议,第一次提出软件危机的概念,产生了应对软件危机的对策---软件工程。软件工程与建筑工程的对比预算画设计图施工质检可行性分析需求分析详细设计、概要设计编码测试兴建一座高楼创造一部软件产品销售、入住使用销售、安装使用工程策略•任何工程都有如下的策略:–分而治之–复用–折衷优化–检验并保证质量•软件工程也会充分利用这些策略分而治之•把复杂的问题分解为小的问题并一一解决•分而治之图示复杂问题子问题1子问题2子问题3子程序1子程序2子程序3程序复用•利用现有的组件来构筑软件的一部分功能•组件技术有:CORBA、EJB、COM•软件复用图示:分解系统组件开发创建新组件提取组件从组件库中查找可用组件用组件编制软件组件库组件定义软件开发的发展与变化软件技术的发展带来了一些变化:•1用户对软件要求的变化:软件规模在扩大;对软件的质量要求在提高;•2软件技术本身的变化:新的理念、新的方法和新的工具•3软件开发队伍的变化:从单人开发、小组开发,到大规模团队开发;从稳定、相对稳定到全员流动软件开发的发展与变化•应对这些变化的是:•1市场化:软件开发由个人爱好行为转变为企业行为,需要大量的投资、大量的人力,并且要按照市场规律来运作•2知本化:要求技术的积累、模块的积累和成果的积累;•3开发过程的规范化:来应对需求多变,人员流动•4标准化:能力成熟度,质量控制软件工程的目标•软件工程的目标是提高软件的质量与生产率,最终实现合格的软件。–质量是软件需求方最关心的问题。–生产率是软件供应方最关心的问题。软件工程的四项基本原则•选取适宜开发范型•采用合适的设计方法•提供高质量的工程支持•重视开发过程的管理软件工程准则•七条基本准则–1)生命周期计划;–2)阶段评审;–3)变更控制;–4)改进程序设计技术;–5)控制人员规模;–6)定义评审;–7)不断改进软件工程;软件工程的要素1.方法:软件工程方法为软件开发提供了“如何做”的技术,是完成软件工程项目的技术手段;2.工具:软件工具是在开发软件的活动中智力和体力的扩展和延伸,为软件工程方法提供了自动的或半自动的软件支撑环境;3.过程:软件工程的过程则是将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。软件工程的组成•人员管理•项目管理•过程管理瀑布模型•瀑布模型将软件生命周期的各项活动顺序进行,形如瀑布流水,最终得到软件产品•是最早的软件工程模型,是其他所有现代模型的基础可行性分析需求分析概要设计详细设计编码测试部署维护软件团队瀑布模型continue阶段任务、结果及人员•阶段基本任务工作结果参加者计划期可行性研究与计划研究开发该项目的可行性可行性研究报告用户、高级程序员开发期需求分析理解和表达用户的要求需求说明书用户、高级程序员设计建立系统的结构模块、数据说明书用户、高级程序员编程编写程序程序高级程序员、初级程序员测试发现错误和排除错误测试报告另一独立的部门运行期运行与维护维护改进的系统用户、高级程序员瀑布模型特征•从上一项活动接收该项活动的工作对象,作为输入;•利用这一输入实施该项活动应完成的内容;•给出该项活动的工作成果,作为输出传给下一项活动;•对该项活动实施的工作进行评审,若其工作得到确认,则继续下一项活动,否则返回前项,甚至更前项的活动进行返工。瀑布模型各个阶段概述•可行性分析:做还是不做•需求分析:都有什么功能•概要设计:供有多少子功能•详细设计:子功能怎么实现•编码:子功能实现了吗•测试:功能完备吗•部署:需要多少设备和软件的支持•维护:软件运行的正常吗可行性分析•可行性分析因素–经济–技术–社会环境–人才需求分析概要设计•提供多少子功能•面向对象分析(OOA)详细设计•子功能如何实现•面向对象设计(OOD)编码•子功能是否实现?•程序员严格按照规范编码;测试•单元测试•系统测试•用户测试部署•部署要求–增强自动化程度,用ant等工具–培训最终用户–要有详细计划–记录详细的过程数据–及时反馈软件兼容性缺陷维护•一般维护分三类:–纠错性维护•改正软件漏洞、发布补丁程序–适应性维护•使得软件在新的硬件、操作系统、编译器和解释器下运行–完善性维护•增加新功能、更改原有的设计等影响维护成本的因素•非技术因素–需求的复杂性–开发人员的岗位稳定性–软件的生命期–外部环境的变化,例如财政政策影响财务软件•技术因素–软件运行环境–编程语言–编程风格–测试工作的有效性–文档的质量瀑布模型的优点•通过设置里程碑,明确每阶段的任务与目标•可为每阶段制定开发计划,进行成本预算,组织开发力量•通过阶段评审,将开发过程纳入正确轨道•严格的计划性保证软件产品的按时交付瀑布模型的缺点•缺乏灵活性,不能适应用户需求的改变•开始阶段的小错误被逐级放大,可能导致软件产品报废•返回上一级的开发需要十分高昂的代价•随着软件规模和复杂性的增加,软件产品成功的机率大幅下降演化模型可行性分析需求分析概要设计详细设计编码测试部署维护软件团队可行性分析需求分析概要设计详细设计编码测试部署维护软件团队可行性分析需求分析概要设计详细设计编码测试部署维护软件团队版本1版本2版本3迭代模型可行性分析需求分析v1概要设计v1详细设计v1编码v1测试v1部署维护软件团队概要设计v2详细设计v2详细设计v3编码v2测试v2需求分析v2迭代模型continue迭代模型continue•迭代的定义:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。•生命周期是基于对一个系统进行连续的扩充和精化,需要经历若干个开发周期,每个周期都需要经历分析、设计、实现和测试阶段。每个开发周期只针对比较小的一部分需求•在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程;•类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的优点•降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。•降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。•加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。•由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。迭代模型和瀑布模型的差别•最大的差别在于风险的暴露时间上。•任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么计划自然会更趋精确。•有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。迭代模型和瀑布模型的差别统一软件过程RUP模型RUP中的软件生命周期•初始阶段(Inception):目标是为系统建立商业案例并确定项目的边界。•细化阶段(Elaboration):目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。•构造阶段(Construction):所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。•交付阶段(Transition):重点是确保软件对最终用户是可用的。每个阶段结束于一个主要的里程碑(MajorMilestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。RUP模型的优缺点优点•提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。•建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。缺点•RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;•没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。软件项目管理第二章本章要点•项目管理一般原理•Project2002中的项目管理概念•用Project2002做项目计划•关键路径、关键任务计算法则成功的软件项目有多少?16%53%31%成功实现失控取消为什么失败?项目失败的前5个原因0%5%10%15%需求分析不完整缺少用户参与缺少资源不现实的期望缺乏系统支持缺少项目管理项目管理•项目管理的定义•项目管理分三个阶段:–制定项目计划–管理和跟踪项目–结束项目项目管理三角形费用项目轮廓定义•目标•前提•限制•范围项目计划要素•任务•任务相关性•工期•成本•资源任务相关性•任务相关性:两个链接任务之间的关系;通过完成日期和开始日期之间的相关性进行链接。有四种任务相关性类型:“完成-开始”(FS)、“开始-开始”(SS)、“完成-完成”(FF)、“开始-完成”(SF)。•当关键任务完成或另一系列中的任务发生延迟时,关键路径就会更改。任务相关性任务相关性描述例子完成-开始(FS)只有在任务A完成后任务B才能开始。地基要先建好才能盖房子开始-开始(SS)只有在任务A开始后任务B才能开始。所有的人员都到齐后会议才能开始完成-完成(FF)只有在任务A完成后任务B才能完成。所有的资料全部准备齐全后才能结案开始-完成(SF)只有在任务A开始后任务B才能完成。站岗时,下一个站岗的人来了,原本站岗的人才能回去工作分解结构项目摘要任务1摘要任务2任务3任务1.1任务1.2摘要任务2.1任务2.1.1任务2.1.2摘要任务2.1任务2.1.1任务2.1.2任务关系树型图WBS代码列Project中创建项目计划文档•新建项目文档•定义常规工作时间•添加分层任务•读取来自Excel的资料•添加资源•给任务配备资源任务相关操作•创建里程碑(0天)•创建周期性任务•创建和删除任务链接•创建任务相关性•设置任务限制工时计算公式工时=工期×单位(资源工作分配单位)工期是完成任务所经历的实际时间–工时是资源执行任务的工作时间–单位是资源的分配量•全职工作人员的单位一般是100%兼职工作人员的单位一般是50%详细甘特图关键路径•是贯穿整个项目的一条路径,表明在限定的时间成功完成项目涉及的各任务间的依赖关系。•调整关键路径上任务的时间进度将会影响整个项目的交付时间。•关键路径方法(CRM)图是一种网络图,用于项目的进度控制和协调项目的活动和事件。最早/晚完成日期•最早完成日期:根据前置任务和后续任务的最早完成日期、其他限制以及任何调配延迟,任务可能完成的最早日期。即任务在开始日期和预计工期的基础上能够最早完成的日期。•最晚完成日期:在不延迟项目完成时间的情况下,任务可以完成的最晚日期。该日期基于任务最晚开始日期、前置任务和后续任务的最晚开始和完成日期及其他限制。即任务在不延迟项目完成时间的情况下能够最晚完成的日期。关键任务/时差•关键任务是指一旦延迟就会影响项目完成日期的任务。•时差:在不影响其他任务或项目完成日期的情况下,任务可以落后的时间量。–可用时差是在不延迟其他任务的情况下,任务可以落后的时间量。–总时差是在不延迟项目的情况下,任务可以落后的总时差。•在典型的项目中,很多任务都有时差,因此即使延迟一小段时间也
本文标题:软件架构设计教程
链接地址:https://www.777doc.com/doc-3356569 .html