1项目开发过程及流程李小龙的截拳道截拳道,李小龙所创,它的特点是没有固定僵化的形式,不受特定手段的约束,所以它能够吸收各门各派中的精华并为己所用,从某种意义上来说,截拳道可以使用一切手段和技巧,它的目的就是成为胜利者。不能非法和卑鄙适用于10人以下的项目实施亮剑中、小型企业与大型企业的开发环境独立团和集团军对敌作战规范化管理与超规范化管理嵌入式产品与软件产品正确的项目管理和实施方法促成项目成功项目开发过程有规可循,有规可依,但不能墨守成规,否则要么效率不高、要么失败讲课提纲二、项目开发流程三、项目文档编写规范四、如何提高项目实施能力一、项目规划一、项目规划1、项目研发目标2、项目研发涉及的过程3、项目需求分析的重要性4、项目立项的必要性5、如何确定项目的总体方案企业的根本目标是“合法地赚取尽可能多的利润,使企业利益最大化”以追求商业利益最大化为总目标,将提高质量、提高效率、降低成本的方法融入到所有过程域中,形成适合于本企业的研发管理过程规范。围绕企业目标展开市场导向、用户第一服从大局、服务企业技术本身非第一要素1.1项目研发的目标项目支持:质量保证、客户服务、产品维护1.2项目研发涉及的过程项目管理:需求分析、立项管理,结项管理,项目规划、项目监控、配置管理、变更管理项目研发:概要设计、详细设计、调试测试、试点运行、发布验收项目开发过程需求是什么?简单地讲,需求来源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细地说明了产品“必须或应当”做什么。需求的来源?用户提出(合同项目)、市场调查(自主研发)、自己挖掘(自主研发)需求分析是要决定“做什么,不做什么”需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。需求调查的目的是通过各种途径获取用户的需求信息(原始材料),产生《用户需求说明书》。需求分析的目的是对各种需求信息进行分析,消除错误,刻画细节等。需求定义的目的是根据需求调查和需求分析的结果,进一步定义准确无误的产品需求,产生《产品需求规格说明书》。系统设计人员将依据《产品需求规格说明书》开展系统设计工作。需求开发过程开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。需求是产品的根源,需求工作的优劣对产品影响最大。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。知识技能问题合作关系用户说不清需求双方误解需求需求文档写不好用户需求经常变更需求开发的困难项目立项的必要性项目立项是决策“做正确的事情”,而立项之后的研发活动和管理活动的目标是“正确地做事情”。“正确”就是指符合企业利益最大化这个根本目标。自主研发项目:缺乏“调研,可行性分析,立项建议,决策评审”,主要靠公司领导独断,团队只知道干活,却不了解产品的开发背景,不清楚用户期望的产品应该是什么样的。在开发过程中经常迷失方向,导致进度延误、费用超支等问题。合同项目:需求不清晰、合同内容空洞;双方在签订合同的过程中给出了一些空头承诺(例如对进度、质量、费用的估计过于乐观),在实际执行时却难以兑现这些承诺。项目立项存在的问题在撰写正式的《立项建议书》之前,立项建议小组首先要在宏观层面上搞清楚“开发什么”、“怎样开发”、“怎样赚钱”等重大问题,即产品构思,主要包括以下内容:产品构思•待开发产品的主要功能;•待开发产品的技术方案;•哪些产品部件应当采购、外包开发或者自主研发)•开发计划;•市场营销计划(如果是合同项目,可能不必考虑市场营销问题)《立项建议书》主要论述“开发什么样的产品、如何开发、如何赚钱”《可行性分析报告》的宗旨是为决策提供有价值的证据和结论市场可行性分析政策可行性分析技术可行性分析成本效益分析•产品需求、目标清晰吗?产品符合本公司短期、长期的发展战略吗?•客户需求强烈吗?消费群体的购买力强吗?•当前市场总额大吗?市场发展前景好吗?预期能占有的市场份额令人满意吗?•产品的核心竞争力强吗?•产品的技术方案合理吗?技术实现途径(如自主开发、外包开发等)合理吗?•产品的开发计划合理吗?实际用于开发本产品的经费、人员、物资、时间能满足要求吗?•产品的营销计划合理吗?成本-效益分析令人满意吗?•有政策风险吗?•有知识产权风险吗?•有财务风险吗?•有不可预测的市场风险吗?…项目需求?技术基础?开发周期?未来扩展?8位嵌入式系统?32位嵌入式系统?1.5、产品方案如何确定?人员素质?性价比?、单32位嵌入式芯片设计方案2、优先设计方案范例介绍:嵌入式Linux操作系统、总体流程介绍2、项目开发条件3、项目开发流程二、项目开发流程总体流程介绍开始一、项目立项及规划二、项目总体设计及计划三、软、硬件设计和实现四、联调及测试五、试点运行结束六、发布验收普通成员60%核心成员30%团队的人员结构技术才能、管理能力、开发经验、市场意识技术才能、责任心、忠诚度技能合格、安分守己、任劳任怨人分四类:人物、人才、人手、人渣应用核心功能应用具体功能①②③④总线GPIOGPIOGPIOGPIOGPIOMTD哪些技术可以积累?技术的积累、沉淀可大大加速研发的进度关键技术是否突破决定了项目的成败关键技术的进展速度决定了项目的进展关键技术是动态变化的关键技术是可积累的关键技术未必是产品的核心技术①②核心功能③应用功能④总体方案确定硬件原理确定需求功能确定开发板支持2.3.1软件开发流程自顶向下,逐步求精方法符合人们解决复杂问题的普遍规律。可提高软件开发的成功率和生产率用先全局后局部,先整体后细节,先抽象后具体的逐步求精的过程开发出来的程序具有清晰的层次结构,程序容易阅读和理解程序自顶向下,逐步细化,分解成一个树形结构。在同一层的节点上的细化工作相互独立。有利于编码、测试和集成每一步工作仅在上层节点的基础上做不多的设计扩展,便于检查有利于设计的分工和组织工作。单元测试详细设计集成测试概要设计系统测试产品需求验收测试用户需求开发与测试的关系(1)白盒、黑盒测试(2)功能测试(3)压力测试(4)性能测试(5)易用性测试测试报告(1)纪录测试实况1、基本信息(测试对象、测试环境、测试人员、测试时间)(2)对本次测试进行分析、提出建议2、实况纪录(测试情况、测试用例、错误严重程度)3、分析与建议4、错误修改纪录5、附件初测结论:√通过不通过复测记录复测次数复测情况复测人复测日期结论错误类型统计([]内填写错误类型数量)[]可重复错误[]不可重复错误[]死机性错误[1]数据性错误[]影响其它模块运行错误[]导致测试停顿性错误[]需求错误[]设计错误[]计算错误[]帮助等文字错误测试记录单试点运行、发布验收、推广应用1、现场运行环境会复杂和不确定2、修改、完善和改进是必然的3、产品测试好再去试点运行4、能在家做的事千万别在现场做5、勇于承担,不要推卸责任6、详细做好纪录,不能疏忽大意7、尽可能满足用户的合理需求、为什么要编写项目文档2、需要编写哪些项目文档3、如何编写项目文档?4、代码编写规范5、书面和口头表达的重要性三、项目文档编写规范什么是文档?在项目工程中,文档用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。应说清楚下列问题:是什么?做什么?为什么做?谁来做?怎么做?搞清楚3.1为什么要编写项目文档在项目过程中,会产生和使用大量的信息,文档在项目的开发过程中起着重要的作用,文档是开发人员思考和开发过程的纪录。•便于管理汇报。项目管理者可把这些记载下来的材料作为检查项目开发进度和开发质量的依据,实现对项目开发的工程管理。•提高开发效率。文档的编制,可使开发人员对各个阶段的工作都进行周密思考、全盘权衡、减少返工。并且可在开发早期发现错误和不一致性,便于及时加以纠正。•便于总结分析。作为开发人员在一定阶段的工作成果和结束标志,也可为后续工作奠定基础。•便于协调沟通。便于管理人员、开发人员、操作人员、用户之间的协作、交流和了解。使项目开发更科学、更有成效。需要编写哪些项目文档项目支持:质量保证、客户服务、产品维护项目管理:需求分析、立项管理,结项管理,项目规划、项目监控、配置管理、变更管理项目研发:概要设计、详细设计、调试测试、试点运行、发布验收项