软件开发流程

--什么是敏捷开发--转

扶醉桌前 提交于 2020-02-09 05:07:02
简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。   敏捷开发(agile development)概念从2004年初开始广为流行。Bailar非常支持这一理论,他采取了"敏捷方式"组建团队:Capital One的"敏捷团队"包括3名业务人员、两名操作人员和5~7名IT人员,其中包括1个业务信息指导(实际上是业务部门和IT部门之间的"翻译者");另外,还有一个由项目经理和至少80名开发人员组成的团队。这些开发人员都曾被Bailar送去参加过"敏捷开发"的培训,具备相关的技能。   每个团队都有自己的敏捷指导(Bailar聘用了20个敏捷指导),他的工作是关注流程并提供建议和支持。最初提出的需求被归纳成一个目标、一堆记录详细需要的卡片及一些供参考的原型和模板。在整个项目阶段,团队人员密切合作,开发有规律地停顿--在9周开发过程中停顿3~4次

软件工程阅读作业感想

自闭症网瘾萝莉.ら 提交于 2020-02-03 06:35:11
软件工程老师给我们留了阅读作业,刚开始觉得老师留的作业阅读量太大,而且时间太短,对此感到不是很理解,但是当我开始阅读《移山之道》这本书的时候,感觉这本书真的写的很通俗易懂,利用移山软件公司人员开发经营石头销售的软件的故事贯穿整本书,使我们很清楚的理解每个环节的顺序和重要性,同时也给我们实例展示了怎么开发项目。通过这本书的阅读,我意识到以下几个问题,这都是以前我的误区和不曾想到的事情。 1,软件开发的工具和方法十分重要。想要做出高质量高水平的软件并不是团队中只要有高超的编程能力和熟练地技巧就能完成的。一个软件开发团队需要一系列的管理工具,协作工具,软件构建工具,以及能保证软件质量的测试工具。软件开发的方法很多,每种方法都有着各自的使用原则,虽然说瀑布模型和螺旋模型已经过时的,但是依然有着各自的优势,不能被忽略。 2,软件开发过程不同角色的成员有着不同的作用。刚开始接触的时候,总觉得会编程的就是牛人,个人技术好的就能够独当一面,通过这次阅读,扭转了我的这种想法。PM虽然听起来好像级别高,其实和团队中的每个人都是一样的,只是工作不同;DEV看似是软件工程的核心,没有好的DEV就无法完成代码编程,无法实现高超的功能,也就没法完成软件开发,但是DEV并不是万能的,如果没有PM的需求规划,项目管理,没有好的测试人员寻找小强,就无法完善自己的程序,无法开发出满足顾客需求的软件

系统软件开发文档编写指南

ε祈祈猫儿з 提交于 2020-01-28 06:16:09
系统软件开发文档编写指南 为帮助大家编写文档,这里列出了十三种文档的内容要求及其简要说明。这些文档包括:可行性研究报告,项目开发计划,需求规格说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试报告,开发进度月报,项目开发总结报告,程序维护手册,软件问题报告和软件修改报告。各文档内容大纲由带编号的标题构成,标题后方括号内为其说明。这里给出一个统一的封面格式: ______________________________________________________________________________ 文档编号版本号______________ 文档名称____________________ 项目名称:______________________________________________ 项目负责人:____________________________________________ 开发单位:______________________________________________ 编写_____________ 校对_____________ 审核_____________ _________年________月__________日 , _________________________________________________

软件开发的稳定阶段和发布阶段(《构建之法》读书笔记6)

爷,独闯天下 提交于 2020-01-27 13:10:03
一个团队经历了计划/设计/开发等阶段,达到代码完成(Code Complete)这一目标,似乎后面的事情就水到渠成了。其实不然,软件生命周期的最后阶段往往是最考验团队的,不但考验团队项目管理水平、应变能力,也考验团队的“血型”。原计划的软件发布时间快到了,但是软件还是有各种问题,怎么办?优秀的软件团队会发布有已知缺陷的软件吗?在我看来,与人类的血型相似,软件团队也有“血型”,也可以分为4中。 A型:他们知道优秀的软件公司会发布有已知缺陷的软件 B型:他们不相信这一点 O型:他们不知道这一点,因此嘴巴惊讶成O型 AB型:他们对于自己开发的软件是A型,对于别人开发的软件是B型 所有的软件公司都希望在修正所有的缺陷之后再发布软件。但是,第一,什么叫“缺陷”?如果只是一些无关大局的问题,用户可以绕过去的,我们不一定非得马上解决第二,什么叫“改正”?如果修正方案中 又有“缺陷”怎么办?做商用软件的人都在为此苦恼,只有优秀的软件公司能找到一个平衡点,及时发布能够解决用户问题的软件并且能及时修改软件中的问题。 说道“质量”,我们不得不提“全面质量管理”,因为大家都讲“全面质量管理”,往往以为这我们的质量没有抓到点子上。有人会举出世界著名公司为了“完美”而不惜推迟发布时间的例子,例如苹果公司的一些产品,著名的游戏:“永远的毁灭男爵”,等等......请问:iPhone的第一个版本是完美的吗

关于构建之法的问题

陌路散爱 提交于 2020-01-26 09:09:25
  在软件开发过程中,软件工程肩负着许多责任;将种种条件确定下来,把资源安排妥当,使工作过程确定清晰,产出稳定可靠。这其中的微妙和复杂,其中大量鱼人的协作,与时间的较量和经验体会,都要通过实践才能慢慢积累起来。构建之法很好的解决了软件工程知识领域“从0到1”的问题。让我们在校学生也能很好的理解软件开发过程中的流程和可能出现的困难。   1.对于在校大学生而言,并不会有太多的机会去真正的做到一些软件开发,我们应该如何去提升自己的编程能力呢?   2.在软件开发过程中,如何有效的规避一些可能发生的错误?   3.敏捷流程在具体软件项目的使用情况   4.在我们毕业后如何能快速的适应各个企业中软件开发流程?   5.未来IT行业是否仍然有很高的发展上限? 来源: https://www.cnblogs.com/yesiamlj/p/5595743.html

软件开发的核心

依然范特西╮ 提交于 2020-01-25 02:12:42
「我们一直这样做开发,时间做久了,便忘了当初的本意。」 有关软件系统开发,我们谈些什么? 我们谈过程,编码规范、开发流程、同行评审、结对编程、持续集成,从瀑布到敏捷再到极限编程。 我们谈架构,企业级、J2EE、容器化、SOA(面向服务架构)、Microservices(微服务化)。 我们谈规模,大容量、高并发、大数据。 我们还谈可靠性、可用率、n个9、响应时间等等。。。 这一切的核心是什么? 先讲个电力行业的一个故事,电力的项目我没做过,对电厂的原理虽有所了解,但看见那些大规模的电站还是感觉挺复杂的。 故事是这样开始的: 记得有个给我们上培训课的主讲老师是个须发皆白的老先生,进门后掏出一堆零件放在讲台上, 一盏酒精灯、一个小水壶、一个叶片、一个铜光闪闪的小电机、一盏小灯泡。 老先生往壶里倒了些水,点燃酒精灯,不一会儿水开了,从壶嘴里喷出了蒸汽,带动叶片旋转,然后小灯泡就亮了。 他说:这就是电厂。 他还说:如果烧的是煤炭,这就是燃煤电厂;如果烧的天然气,这就是燃气电厂; 如果获得热能的方式是核裂变,这就是核电厂;如果带动叶片的能量来自水从高处流向低处,这就是水电厂。 老先生说:你们或许会问 “那我们看到的电厂怎么这么复杂”,答案其实很简单, 电力项目需要复杂系统的目的,一是为了确保安全(Safety),二是为了提高效率(Efficiency)。 安全和效率的平衡,是所有工程技术的核心

《构建之法》阅读笔记六

断了今生、忘了曾经 提交于 2020-01-17 04:16:25
一个团队经历了计划 / 设计 / 开发等阶段,达成代码完成这一目标,但是软件生命周期的最后阶段往往是最考验团队的,不但考验团队项目管理水平、应变能力,也考验团队的“血型”。 在稳定阶段的初期,团队只要决定需要修复哪些缺陷,然后团队成员就会进行必要的设计、实现、测试工作,并签入代码修改。但是,随着项目进展和发布日期的临近,团队还要保证修改方案不会给产品带来负面的影响。这时,还要对修改方案进行会诊,包括以下三个方面:第一步:开发者提交参加会诊的 Bug 和修改方案 ;第二步:会议决定是否同意修改方案 ;第三步:执行。 一个里程碑结束了,要总结团队有什么经验教训、产品怎么才能做得更好。这个软件开发的周期结束了,反思一下这个软件开发的流程,即要开事后诸葛亮会议。 最近几年,我们整个社会似乎都对创新感兴趣。对于创新有一些迷思如下: 1. 灵光一闪现,伟大的创新就紧随其后 2. 大家都喜欢创新 3. 好的想法会赢 4. 创新者都是一马当先 5. 要称为领域的专家,才能创新 6. 技术的创新是关键 7. 成功的团队更能创新 影响产品竞争的各种因素有:产品行业的因素、公司和市场因素、团队执行因素、产品的价值因素。 在 IT 创新的潮流中,我们要从小事做起,重质量,讲信用,对产品负责,对工作自豪。 个人感受部分: 身处这个时代,要积极进行创新才能有立足之地。 团队项目结束了也要开事后会议

陈皓谈对待技术的态度

一曲冷凌霜 提交于 2020-01-16 08:05:01
最近在 酷壳 上,陈皓撰文阐述了对待技术的态度,如何面对技术的快速更新?是否做软件开发比以前更加困难了?他都给出了自己的见解。 陈皓首先针对“如何看待日新月异的新技术”做出了回答: 遇到新技术我会去了解,但不会把很大的精力放在这些技术(如:NoSQL,Node.js,等)。这些技术尚不成熟,只需要跟得住就可以了。技术十年以上可能是一个门槛。有人说技术更新换代很快,我一点儿都不觉得是这样想。虽然有不成熟的技术不断地涌出,但是成熟的技术,比如Unix,40多年,C,40多年,C++,30多年,TCP/IP,20多年,Java也有将近20年了……,所以,如果你着眼成熟的技术,其实并不多。 他的核心观点是——要了解技术就一定需要了解整个计算机的技术历史发展和进化路线。你要朝着球运动的轨迹去,而不是朝着球的位置去,要知道球的运动轨迹,你就需要知道它历史上是怎么跑的。 然后,他简要回顾了IT技术的脉络,并列出了几条关键的主线: 70年代Unix的出现,是软件发展方面的一个里程碑,那个时期的C语言,也是语言方面的里程碑。(当时)所有的项目都在Unix/C上,全世界人都在用这两样东西写软件。Linux跟随的是Unix, Windows下的开发也是 C/C++。这时候出现的C++很自然就被大家接受了,企业级的系统很自然就会迁移到这上面,C++虽然接过了C的接力棒

软件开发各类文档模板

左心房为你撑大大i 提交于 2020-01-16 04:30:10
http://blog.163.com/amanda_liyan/blog/static/5456169120093304520393/ 可行性分析报告 1 引言 1.1 编写目的:阐明编写可行性研究报告的目的,提出读者对象。 1.2 项目背景:应包括    ● 所建议开发软件的名称    ● 项目的任务提出者、开发者、用户及实现软件的单位    ● 项目与其他软件或其他系统的关系。 1.3 定义:列出文档中用到的专门术语的定义和缩写词的原文。 1.4 参考资料:列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括    ● 项目经核准的计划任务书、合同或上级机关的批文    ● 与项目有关的已发表的资料    ● 文档中所引用的资料,所采用的软件标准或规范 2 可行性研究的前提 2.1 要求:列出并说明建议开发软件的的基本要求,如    ● 功能    ● 性能    ● 输入 /输出    ● 基本的数据流程和处理流程    ● 安全与保密要求    ● 与软件相关的其他系统    ● 完成日期 2.2 目标:可包括    ● 人力与设备费用的节省    ● 处理速度的提高    ● 控制精度或生产力的提高    ● 管理信息服务的改进    ● 决策系统的改进    ● 人员工作效率的提高 2.3 条件、假定和限制:可包括    ● 建议开发软件运行的最短寿命

软件开发标准化文档

假如想象 提交于 2020-01-15 01:13:34
/*--> */ /*--> */ 在项目开发过程中,应该按要求编写好十三种文档,文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。 ◇ 可行性分析报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 ◇ 项目开发计划:为软件项目实施方案制订出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。 ◇ 软件需求说明书(软件规格说明书):对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的,也是实施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求,为生成和维护系统数据文件做好准备。 ◇ 概要设计说明书:该说明书是概要实际阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。 ◇ 详细设计说明书:着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。 ◇ 用户操作手册:本手册详细描述软件的功能、性能和用户界面,使用户对如何使用该软件得到具体的了解 , 为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。 ◇ 测试计划