软件工程

  • 盘点史上最具毁灭性的软件Bug

    据悉,每年软件Bug会让美国经济面临近600亿美元的损失.我们都知道,软件Bug很烦人的,会对我们的工作.生活带来很多毁灭性的影响.现在,就让我们按时间顺序来盘点下史上最具有毁灭性的19个软件Bug. 以下为译文: 1. 1962年的Mariner Bug 损失:1850万美元 经过:Mariner 1航空软件漏洞直接导致火箭在发射不久后就偏离了其预期轨道,任务控制中心在其发射293秒后就摧毁了火箭. 原因:一名程序员错误地将公式录入到计算机代码中,直接导致计算机错误的计算了火箭的运行轨道. 2

    软件工程May 4

  • bigtall的敏捷日记(1)

    虽然接触敏捷已经很久很久了,零零碎碎实施过,但是始终没有机会将传统的项目管理方法彻底抛弃,现在终于决定要彻底投入敏捷的怀抱了.为此我准备了整整一年的时间.我将会在这一系列的文章里,请你和我一起分享这个改变的过程. 传统的scrum方式有三个角色:产品经理(Product Owner),scrum教练(Scrum Master)和组员(Team Member).因为我们以产品研发为主,所以在角色上有一些改变: 把产品经理的角色分散到每一个组员,但是保留一个经验比较丰富的人专门对backlog进行验

    软件工程May 3

  • McDonald & Scrum
    McDonald & Scrum

    几天前去麦当劳的时候,见到一个领班模样的人在训斥一线员工,没听清楚具体是什么事情,就是觉得这样的一种管理模式或者说反馈模式非常的好,快速.有效.有针对性,然后由此联想到scrum. Scrum是一种敏捷方法,强调快速反应,讲求人的配合等等.而其团队组织方式是多功能型,由具有各种才能的人组成足以达成既定任务的团队.有清晰的工作目标,有一定的规范辅助,留给个人有一定的发挥空间,成员之间彼此协作,而scrum master则担当着现场督导的职责,确保团队能够获得完成任务所需的必要资源,以及遇到的障碍.

    软件工程May 3

  • 中国象棋程序的设计与实现(七)--心得体会和开发日志

    上大学那会,还没有自己专属的SVN仓库,但是我已经意识到了管理代码的重要性,我最常用的一种需求就是恢复到上一个正确的版本. 为此,我每实现一个重要功能,就会备份整个项目一次,增加开发日志,如"2010/11/13 实现玩家列表同步". 前前后后1年时间完成这个项目,还是有很多体会的. 总结使人进步,分享使人快乐. 希望对大家有所帮助,有所启发. 心得体会 1.软件复用实在是太重要. 2.前期对需求的了解不全面,当功能越来越多的时候,改动很麻烦. 前期对需求并不清楚,功能都是一点点的加上

    软件工程, 中国象棋, 心得体会, 代码管理, 开发日志May 3

  • 中国象棋程序的设计与实现(四)-- 一次"流产"的写书计划

    1.写书缘由 2010年写完中国象棋程序(代码)后,我想认真完善下这个项目. 在写代码过程中,我已经加入了大量的注释. 写完后,我开始撰写相关文档.由于自己读的是软件工程专业,所以我想把需求分析.架构设计.详细设计.测试等文档都认真地写一下. 认真的说,我确实都写了. 在细化文档的过程中,我突然想到,为何不自己去写一本如何实我的中国象棋程序的书籍呢? 有源码和文档了,按说也不难. 所以,我就开始了. 我煞费苦心地完成了 序.前言.目录.附录,部分章节的写作,真可谓是"绞尽脑汁". 不过

    项目管理, 软件工程, 文档, 中国象棋, 写书May 3

  • 著名豆腐渣软件项目:美国联邦调查局虚拟案件文档系统
    著名豆腐渣软件项目:美国联邦调查局虚拟案件文档系统

    导读:最烂的软件项目是什么?相信每个人都有不同的答案.中国铁道部12306一到假期就歇菜的特性,肯定跻身网民们心目中的烂项目TOP10.最近,奥巴马政府主导下的美国医疗网站HealthCare.org以上亿行代码之巨,远超Windows和Linux等大型系统软件代码量,也成功跻身烂项目候选名单.不过总的来说,12306不放假的时候还能工作,HealthCare.org也只是因为代码数量太多而不是功能无法实现而被人诟病.不过,下面这个 项目:美国联邦调查局虚拟案件文档系统(FBI Virtual

    软件工程April 29

  • 敏捷度量指标争论又起

    敏捷教练和咨询顾问们经常警告他们的客户:传统的度量指标,诸如收益价值.工作小时数.代码行数,以及代码测试覆盖率等都不能与敏捷项目很好地吻合.但是这样,客户们就会产生下面的问题:什么是好的敏捷度量指标?相对于坏的度量指标,怎么能提出好的度量指标?即使是好的度量指标,在某些环境里是否也会变得不再合适? XP/Scrum团队里面经典的度量指标自然是开发速率(Velocity),或者说团队在上一次迭代里面完成了多少开发工作?这个指标起初只是为了帮助团队更好地决定下一次迭代的计划工作量.然而,"开发速率是

    软件工程April 29

  • 敏捷开发松结对编程系列:L型代码结构案例StatusFiltersDropdownList(下)

    新的筛选效果 现在需要在下拉框上加上两排新的筛选项(更早和更晚): 师傅本人可以在45分钟完成(实测),但如果直接交给徒弟维护(或师傅离开后维护),可能会发生以下问题: 1. 以前的下拉框里边只有两排,现在要显示三排了,怎么办? 2. 三排了,框框变宽,显示不下了怎么办? 3. 以前的筛选条件是怎么写的?(希望改改就能写出新的来) 在非L型代码结构下,可能会寄希望与阅读DropdownListHtml接口: [csharp] view plaincopy public static MvcHtm

    软件工程April 25

  • Laurent Bossavit:敏捷十年之路
    Laurent Bossavit:敏捷十年之路

    为什么对"敏捷十周年纪念"大做文章?只因我们喜欢整数?还是有更深远的意义? 计算机还是个年轻的领域,因此十年对于任何存在的事情来说都是相当长的时间.十年,对于我们的业务来说,只有极少数东西才有"历史". 软件从业人员对历史有多关注呢?远远不够.我仅从业二十余年,可能不足取信. "在计算机领域工作了超过半个世纪之后,有一件事让我很担忧,远超其它事情:那就是缺乏历史感."Jerry Weinberg在一篇文章[1] 的开篇写道,Weinberg在IB

    软件工程April 21

  • 敏捷宣言的发起者如何完成从技术领导者到文化变革领袖的转变?

    本文讲述敏捷方法诞生的故事,集中于敏捷宣言发起者在思考模式转变过程中的角色变化.以深入采访17名敏捷宣言发起者中的12位为依据,我们将描述技术驱动的力量怎么会使得敏捷方法引起文化的变革.我们会介绍发起者孩提时代的背景,他们在构想出敏捷宣言之前的主要职业活动,以及敏捷宣言制订的过程.我们希望在本文中传达的一则主要消息是:虽然敏捷宣言的发起者是由技术主导的,但实际上,软件社区倾心于敏捷的原因却是由于敏捷宣言注重人性的方面.这则讯息说明了在采用敏捷软件开发的过程中,应该强调什么样的人性面及方法.实践及

    软件工程April 21

  • 程序开发效率:思路最重要

    程序开发的效率,其实不是写代码的速度.经验相当的人,写代码的速度其实差不了多少.至少会是同一个数量级的.但思路和实现方法却不是差一点数量级的问题. 实现同样的功能和效果,按某些方法(虽然可能是常规方法),如果需要一周的工作量的话, 用变通的方法不仅能实现同样的功能(或许更好的),可能一天,甚至几个小时就搞定了. 最近深有体会.现在开始明白为什么微软这样的大公司在笔试的时候,程序要要做的智力类型的题目的比例会比实际考编程的还多. 明白为什么很多大公司招聘的笔试题里会有智力测试的部分. 举个例子.同

    软件工程April 21

  • 现代软件工程讲义 4 方法论 - MSF
    现代软件工程讲义 4 方法论 - MSF

    [内容来自 移山之道] 白话MSF方法论 2.1 果冻的预习 果冻:超总,听说你要讲MSF,我就先预习了一下,但是MSF的名词太多了,我真是头大,能不能解释一下这两句: "MSF的一个基础原理是学习所有的经验.这一原理在MSF过程模型里的关键里程碑上得到了充分的应用,在过程模型里愿意学习这一关键概念成功应用这一原理所需要的.愿意学习这一概念通过后里程碑回顾的经过检验的做法在项目里得到体现.在大型的和复杂的项目里,Microsoft建议是利用客观的外部服务商来确保有一个无过错的环境,并把学习最大化

    软件工程April 21

  • 关于程序的一些看法和简单建议

    一个人自娱自乐的写个小程序,跟一帮人一起写个大程序.真的是不一样. 自己一个人,根本就不存在交流,相互理解的问题.人越多,理解他人意图,向他人解释意图就越来越花时间.只要是需要交流的任务,并非是人越多越好.有人加入,为了使加入的人有事做,原来的事就要重新划分,而分开之后要配合,又要花时间交流.发觉很多重要的软件开始都是几个人做出来的.而漫画中,进行任务也采用小组模式,好像<幽游>, <猎人>都是四人小组. 这里,最基本的问题就是任务的划分,最理想的划分是相互独立.而要做到这种独立,

    软件工程April 20

  • 走出软件作坊 成为开发正规军(三十八):我就是一个香港导演

    系列文章目录索引:<走出软件作坊:三五个人十来条枪 如何成为开发正规军> 当我写完这个系列所需要的所有章节后,我回顾了一些,颇与软件开发相似.我希望这篇文章能够锻炼大家的关联性思维.这种思维很重要,许多创新的高手在关联性思维方面极强,他们往往能把许多随时随处随地看到的一些东西与自己的工作或手头问题联系在一起.不管我们是在开发.管理.创业上,我们都非常需要这种关联性思维. 许多网友缺乏这种关联性思维,我说一种现象,是为了说明某个方法或方向.但是他却看不到我的用意,非要跟我讨论这种现象本身.例如,

    软件工程April 19

  • 重构:"为什么"和"怎么做"

    近日在"敏捷中国"讨论组展开了一系列关于重构的讨论.一种观点认为,对代码的重构是程序员出于对代码美感的追求而进行的行为. 重构更多的是基于激情,把代码做为艺术品来雕琢.但是不少软件公司工作环境可以很快摧残这种热情. 然而作为软件开发工作的一部分,重构行为显然不应该被归结于"激情"和"艺术".之所以有这种想法,往往是由于没有一种有效的方式来衡量重构行为的成本和收益,从而不能有效地组织和管理重构行为.在同一组讨论中就有人提出了这个问题: 我想了解一下

    软件工程April 18

  • 关于软件生产模式的思考

    在我们公司的软件研发体系中,存在着三种截然不同的软件开发方式.而我,作为公司最老同事之一,也是这三种开发模式的亲历者,曾不只一次的被公司同事问过我关于这三类方式之间的异同点.于是利用空闲时间,对其进行一番整理.分析和对比. 1.全能型 部门经理在接到项目之后,将此项目交给部门内的熟练程序员后,此程序员就自动被委任其为项目经理.从此开始,程序员将根据项目售前方案和销售合同内容,在项目进行过程中分别担当起项目经理.功能设计师.数据存贮设计师.程序员.测试员和项目实施人员等诸多角色.并在项目进行的过程

    软件工程April 15

  • 现代软件工程讲义 5 项目经理 Program Manager
    现代软件工程讲义 5 项目经理 Program Manager

    在一个软件团队里, 不同的人有不同的投入, 我们在猪,鸡和鹦鹉的故事里已经说明了. 不同的人还要在团队中担负不同的任务, 我们也要讲一下. 开发人员 (大部分内容在:现代软件工程讲义 2 工程师的能力评估和发展) 项目经理 ( 这篇博客 ) 测试人员 (link) 0. PM 我碰到的不少大学同学都有一个想法 - 先做几年技术, 然后做管理; 也有一些同学说 - 我技术不行, 希望直接找到一个管理的工作, 就像PM 那样. PM 的M 就是 manager, 但是 P有这几种: Product

    软件工程April 14

  • 蔡学镛:文档模板,天使或恶魔?

    在试图建立"技术文档"时,许多人可能会想到"文档模板" .文档模板的存在究竟是好是坏,因人因事而异.此外我们也应该分清楚:何时应该使用文档模板,何时不要使用文档模板? 使用模板的好处 先来看看使用模板的好处: 1.在你毫无头绪时,文档模板具有引导写作的功效. 2.文档模板可以帮助你不会遗漏一些该写的重点(假设该模板已经很完备). 3.你可以专注写内容,不用分心去管板型(因为模板都已经将这些设置好了).板型很重要,好的板型有助于阅读. 使用模板的缺点 当然使用模板也有

    软件工程April 14

  • 走出软件作坊 成为开发正规军(八):水清则无鱼

    系列文章目录索引:<走出软件作坊:三五个人十来条枪 如何成为开发正规军> 我的朋友开了家屁小公司,纯粹的三五个人十来条枪.每年还不死,但活的也很辛苦.平时做的也就是两三万的单子,运气好能做8-10万的单子.那天,突然给我打了电话,说要请我吃饭. 饭肯定是不能白吃的.朋友告诉我:唉,烦心啊.客户不成熟,是麻烦事.客户太成熟,也是个麻烦事. 我说,此话怎讲? 我朋友说:你看,我过去跟单,客户对软件不懂,但他却知道有个华军软件园,里面有可以免费下载的管理软件.我报个两万的价格 客户直晃脑袋说:我以为

    软件工程April 13

  • 雷文-武汉科技大学-软件工程-本科-20111020(2011年校园招聘找工作时的简历)

    以下是我2011年大四校园招聘时的简历,从Word复制来的,排版不是很好看了. 有兴趣,随意吐槽. 姓名 雷文 学历 本科 学校 武汉科技大学 专业 软件工程 电话 151-0278-0892 邮箱 [email protected] 专业技能 1.掌握Java语言和常用类库,具有一定的算法功底. 2.熟悉Java Web开发,熟悉SSH框架和Tomcat服务器. 3.熟悉常用的设计模式,具有较好的面向对象分析和设计能力. 4.熟悉Oracle数据库,能熟练运用SQL语言. 5.能够

    软件工程, 软件工程师, 职业规划, 简历, 校园招聘April 13

  • Martin Fowler谈Scrum认证.敏捷现状与未来

    在6月21日ThoughtWorks举办的AgileChina大会上,InfoQ中文站编辑李剑有幸对ThoughtWorks首席科学家Martin Fowler进行了采访.在访谈中,Martin Fowler谈到了对Scrum认证的看法,以及敏捷的现状与未来. InfoQ中文站:Martin,你好.我们最近在中国做了一次有关Scrum实施情况的调查,从结果中发现,很多实施Scrum的人对敏捷只是一知半解,参加了Scrum认证之后就自认为已经是Scrum Certified Master了,开始在

    软件工程April 11

  • 对超高生产力的度量是浪费时间吗?

    在一个关于超高生产力与电击疗法的演讲中,Jeff Sutherland提到:超高生产力(Hyper-Productivity)至少应该达到丰田的绩效水准,也就是四倍于行业平均水平.他认为:正确进行敏捷开发的团队,应该可以在3个为期两周的迭代中体现出300%的进步.最近在Scrum Development group的讨论中,成员们争论有无可能准确度量多个sprint体现出来的生产力,以及这样做是否有益,还谈到是否有可能看出团队已经到达超高生产力状态. Adam Sroka认为要想度量多个spri

    软件工程April 7

  • 解读极限编程的12大原则 7:配对编程

    系列文章目录索引:<解读极限编程的12大原则> 配对编程:提供持续的信息反馈和确保正在编程的人进行重构.测试和遵守编码标准,实现代码共享目的. 初识敏捷开发的人几乎都会被这一打破传统开发模式的新模式所吸引,觉得新奇无比,然而在了解其工作机制之后,很快的就会形成极为明显的两大阵营.我从来没有实践过配对编程,但是我体会到偶尔的两个人一起调试程序的乐趣和优势.然而,即便是有一天我有了决策权,我也很难肯定自己愿意让员工按照配对编程的模式进行开发,因为这种模式是否能够成功取决的人为因素似乎太多太多.没有

    软件工程April 7

  • 软件工程 之 动物世界
    软件工程 之 动物世界

    在一个神奇的国度里生活着许多动物, 其中有猪, 鸡, 和鹦鹉. 它们每天搞头脑风暴, 琢磨如何创业, 最后鹦鹉提议它们合伙开一个早餐店: 具体分工如下: 猪: 提供猪肉, 做熏猪肉 (bacon) 鸡: 提供鸡蛋, 做煎蛋 鹦鹉: 提供咨询, 它会每天阅读大量博客, 给其他团队成员提供建议, 例如最新业界趋势, 最新术语, SaaS, N-层架构, 创业明星当年的轶事, 等等. 这项创业对三个动物的负担是一样的么? 它们应该各自占多少股份? 一旦创业失败, 猪, 鸡, 和鹦鹉会各自失去什么? 在

    软件工程April 6

  • 敏捷认证:社区驱动的提议

    S.M. Kripanidhi感到现有的敏捷认证体系差强人意,给出了"社区认证敏捷实践者"的提议.这样的认证价值何在?Kripanidhi列举出一堆理由: 辨识优秀的敏捷实践者 帮助潜在的客户或雇主鉴别优秀实践者 提高敏捷社区的可信赖程度 他建议大家使用本土社区来甄别符合认证要求的实践者: 那些跟敏捷实践者常常接触的各利益方(经理.客户.团队.伙伴.社区)比别人更了解他.要判断他敏捷相关的能力是否高超,这些人是最佳人选. Kripanidhi的提议包含五种认证:实践者(作为个体的团队成

    软件工程April 1

  • 走出软件作坊 成为开发正规军(二十一):我要飞的更高

    系列文章目录索引:<走出软件作坊:三五个人十来条枪 如何成为开发正规军> 又到了半年,公司这几天要开半年会. 老板让我做一下总结报告,对上半年的研发成果.下半年的研发计划.明年要做什么新产品的规划,希望我都能谈到. 对上半年做了哪些工作,这些都有工作记录,也有项目管理系统,也有Bug管理系统,也有版本升级发布,所以很容易总结出来. 下半年做什么,有需求管理系统,客户的需求都排着.共性的.希望做的更专业更深入的模块也在详细设计之中.对于扩展支持更多的客户组织模式.远程管理模式.更低层次和更高层次

    软件工程March 31

  • 软件工程院校排名

    1.上海交通大学 "软件科学理论"."软件工程"."系统软件"和"应用软件" 2.南京大学 软件工程技术.软件工程管理.信息系统工程.嵌入式软件.移动应用技术 3.北京大学 基于SOA的过程管理系统"(IBM中国研究中心).Linux on Power Program(IBM中国研究中心).计算机游戏设计研究与课程开发(微软亚洲研究院).面向家庭网络的数字版权保护技术(联想研究院).基于双核结构的数字家庭媒体中心(I

    软件工程, 排名March 31

  • 敏捷与结构性模块化(二)
    敏捷与结构性模块化(二)

    在上一篇文章中,介绍了结构性模块化与敏捷之间的关系,在这个系列的第二篇文章中,我们将会研讨OSGi™,在实现Java™的结构性模块化方面,OSGi扮演了核心的角色:OSGi与流行的敏捷方法论之间存在着自然的联系. 1 但我们已经实现了模块化! 绝大多数开发人员都同意程序应该模块化.尽管在面向对象的程序设计出现的早期,逻辑性模块化的要求就被迅速满足了(见http://en.wikipedia.org/wiki/Design_Patterns), 但是软件行业花费了很长的时间才理解结构性模块化的重要

    软件工程March 27

  • 持续集成之"软件自我识别"
    持续集成之"软件自我识别"

    在前文<自动化部署>中,我们讨论了自动化部署.通过对部署操作脚本化.部署验证自动化.部署环境版本控制.生产部署全自动化等诸多实践,可以让部署完全处于受控状态.然而,作为运维人员,是否曾经有人走过来问你这样的问题:"当前生产环境上部署的是哪个软件版本?"你是否遇到过这样的情形,即使手里拿着一个jar文件或dll文件,也无法知道它到底是哪个版本.也许你可能认为,这算不了什么,到某个管理平台上查一查部署记录就行了.可是,如果发现在生产环境的集群服务器上,不同机器上部署的同一个程序

    软件工程March 26

  • 走出软件作坊 成为开发正规军(三十二):一分钟先生

    系列文章目录索引:<走出软件作坊:三五个人十来条枪 如何成为开发正规军> 有很多网友特奇怪我为什么能有时间来写博客,甚至还能接受网友的IM交流,问我是怎么做到的.他们都觉得自己每天忙死了,相信我作为部门的头公司的高层,估计更忙的不见人影,怎么回事呢? 我总结了总结,在此给大家分享一下. 首先,我每天的工作主要干什么? 1每日接受开发组长报告给我的进度报告.功能需求设计报告,我来提出调整建议和指导.对于报告的问题,我会给出建议的处理方法.如果需要我出面动手解决,那我就出面.这是每日的例行事务,占

    软件工程March 25

  • 我们能从BPMN 2.0期望什么?

    业务过程建模符号(BPMN)是被当今所有过程设计工具都采用的流行符号.BPMN是OMG维护的公共标准,已广泛地被不断携新产品进入市场的商业和开源BPMS工具厂商共同接受.例如,BEA的AquaLogic BPM 6.1 – BPMN(http://dev2dev.bea.com/blog/atoussai/archive/2008/04/aqualogic_bpm_6_1.html).查阅InfoQ中关于BPMN的帖子(http://www.infoq.com/bpmn). 尽管其已被广泛采用,

    软件工程March 25

  • 好程序需要你写(至少)两遍

    最近这些年,越来越多的人开始转向敏捷开发.各种敏捷开发技术并不新鲜,大多是在80 和 90年代发展形成.但只是在最近这些年,程序员和(更重要的是)一些商业顾问,架构师,客户开始变得喜欢和拥抱敏捷开发. 进化中的需求 现在的一种普遍的认识是,在开始编码前,你不可能把所有的需求都写完备.这些需求的确定是一个逐渐发展进化的过程.使用短开发周期/springts,我们一步步的开发程序,使用多次迭代的方式完成从客户方得到的最新需求.这些都是基于一个进化的思想.就像生活中,我们总是通过一步步的改进来达到最好

    软件工程March 23

  • 谷歌是如何做代码审查的

    在上一篇文章中提到过,我已经不在Google工作了.我还没有想清楚应该去哪里-有两三个非常好的工作机会摆在我面前.因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西. Google是一个非常优秀的公司.他们做出了很多令人称赞的东西-既是公司外部,人们可以看到的东西,也是公司内部.有一些在公司内部并不属于保密的事情,在外部并没有给予足够广泛的讨论.这就是我今天要说的. 让Google的程序如此优秀的一个最重要的事情看起来是

    软件工程March 22

  • 思考:DSL用不着像英语

    很多人都认为好的DSL应该是类似于英语的,好让非程序员也能阅读.Dave Thomas强烈反对这种看法,他主张DSL的关键不在于尽可能接近自然语言.他更进一步认为把接近自然语言作为设计DSL的主导原则是非常有害的.他还列举了他心目中的若干DSL设计的要点,并提供了一些例子来说明怎样才是成功的DSL. 按照Dave的说法,DSL不需要接近于英语或其他任何自然语言,因为DSL面向的是非常特定的一类用户--领域专家--他们实际上在自己的专业领域并不说自然语言. 领域专家[--]说的是行话,一种为了在同

    软件工程March 21

  • 写程序时该追求什么,什么是次要的?

    本文来自:http://www.cnblogs.com/JeffreyZhao/archive/2009/05/29/1491692.html 就我看来,一段程序,最该关注的是"逻辑表现",次要的"性能"等问题的优化.当然,肯定也会有需要追求性能的场景,不过这并不是"追求"出来的,而是在大量经验累计情况下做出的正确决策.就算在那种情况下,"逻辑表现"还是非常重要的. "逻辑表现"的意思,就是如何用程序清晰地

    软件工程March 20

  • 高质量与高生产力的并存?

    最近一个项目发布了,可是这个群的消息还每天不断的弹出来.项目组的人还每天不断的优化功能,提出日常需求.似乎项目虽然发布了,但是远远没有达到完美,项目还没有结束.有些可惜的是,如果不是定死发布日期,我们完全可以把项目做的更好. <人件>中通过跟踪大量项目统计,说明很多经理倾向于把产品的质量与产品的其他属性一样看待,一种可以根据市场的需要按不同等级提供的东西.而另一方面,项目其他成员对质量的观点非常不一样.因为他们的自尊与产品的质量紧紧地捆在一起,他们倾向于强调他们自己的质量标准.让他们满意的最低

    软件工程March 20

  • 关于代码质量的一些思考

    关于代码质量的一些思考 今天刚好看到同事写一段代码,跟同事聊到一个代码风格的问题,讨论了一会,也没得出什么结果.回来想了想,之所以大家观点不一样,其实是一开始代码追求的目的就不一样. 1. 可读性 我是一直认为代码的可读性是最重要的目标.太多的书都讲到一个观点:"代码是写给人阅读的,只不过刚好能被计算机执行". 大部分做自己产品的团队,一个项目的维护时间可能是开发时间的5倍以上,而维护的常见内容都是一些小功能以及已有bug的修复.可读性带来的好处就是,非常容易弄清一段功能逻辑,从而定位

    软件工程, 代码质量, 心理学March 20

  • 国内CMMI的主要问题和发展前景 - 访中科方德袁峰

    自2001年下半年以来,国内软件企业掀起了一股CMM/CMMI(以下简称CMMI)的热潮,纷纷通过了CMMI的评估,至今已经8个年头了,那么CMMI在国内的应用现状怎样呢?中科方德(基础软件国家工程研究中心)软件工程工具与服务事业部总经理袁峰博士将为大家指点迷津. CMMI在国内的发展历程及对整个行业的贡献 1.首先,请您介绍一下CMMI在国内是怎样一个发展历程? 首先简单回顾一下CMMI的发展历程:CMMI源于美国,1991年SEI发布了软件能力成熟度模型(SW-CMM)1.0版;1993年发

    软件工程March 19

  • 强中自有强中手 调试高手和编程高手

    业界总是有高手之说,高手成了程序员心中之偶像,成了程序员成长之目标.但是,现实中人们往往对自己所了解的程序员,很难认同为高手;人们反而对那些自己不了解的,甚至是道听途说的人会认作为高手了.高手,同武林高手一样,神秘之至. 许多程序员都有这样的经历:无论自己编写什么很短很短的程序,一般是很难一次就能通过编译的;通过编译的其功能还不一定是正确的.我在很早就注意这样现象了,开始的时候,我还不信这个邪,还试着编写程序看看自己能否一次能否编译成功,为这个事还和别人打过赌呢!这当然是年轻时做过的事了.后来我

    软件工程March 18

  • 解读极限编程的12大原则 1:计划的制定

    系列文章目录索引:<解读极限编程的12大原则> 计划的制定:包括客户选择的项目大小.程序功能的优先级.各个版本的合成和发布日期. 曾经听说过一个关于项目经理的笑话:接手一个项目,领导问项目需要多长时间,我们的项目经理拍拍脑袋说出一个时间节点.领导说这个任务很紧张啊,能不能快一点(再加上一些威逼利诱的话^%$#^%^$#^),项目经理继续拍拍脑袋说出一个时间节点--就这样一番讨价还价,终于领导满意了,临走关切的问没问题吧?项目经理拍拍胸脯说请领导放心.项目经理回来找到技术骨干,把项目时间节点一说

    软件工程March 17

  • 走出软件作坊 成为开发正规军(三十六):地主家也没有余粮了

    系列文章目录索引:<走出软件作坊:三五个人十来条枪 如何成为开发正规军> 有个网友给我的留言让我陷于深思. 他是一个十来条枪公司的小老板.他的困境也是许多同样规模小软件公司的困境.我也有不少朋友创业,他们所处的困境都是相似的. 大家都是差不多认识几个客户,然后觉得时机成熟了,就出来自创门户.开始还做的挺顺,把这几个关系客户都做了,也小赚了一笔钱. 但是做完后问题就来了.新的客户并没有在做的过程中产生.老的客户也并没有大块的其他项目要进行,况且自己也不是万金油什么都会,所以即使老客户有其他项目,

    软件工程March 16

  • 拙劣的软件工程-导师与研究生开发模式

    在路的篇幅里,我阐述了大量读研时失败项目的例子. 为什么我们的项目做起来总是这么吃力,很多看似简单的项目经常胎死腹中,貌似进展很快的项目到最后迟迟不能结束,针对客户频繁变动的需求程序员们都显得如此疲惫不堪,原来的代码自己都懒的阅读,修改一处BUG引来无数新的BUG,更改(添加)一个功能可能只有几行的代码量,为什么发布上线却需要几个小时的工作量,为什么上线后,甚至一年后都会发现很多BUG,这些问题一直困扰着我,在经历了一些项目的实践之后,我开始总结与反省,阅读了许多书籍,试图从中寻找到答案,其中包

    软件工程March 16

  • 美好的人生从Debug开始

    "从未犯错表示你从未做事",Debug本来就是一路犯错跌跌撞撞的过程,只要在实验环境中累积足够的成熟度,自然可以在真实的环境中解决问题. 转换跑道的问题,困扰着大多数的工程师,主要原因是因为真正落实专业职与管理职双轨制度的公司不多,另外,资深的工程人员难免要负责带领专案与小组,这都牵涉到很多的改变.我想,其他领域的人员,可能也会有转换跑道的问题,但应该都没有资讯人员来得复杂.因为IT技术不断演进,使得资讯人员必须要一边追赶着技术,另外一边仍要持续带领专案与团队.或者,有人干脆放弃深入技

    软件工程March 15

  • yongtree吐槽:互联网产品开发乱象
    yongtree吐槽:互联网产品开发乱象

    从工作几年后,自己慢慢的觉得自己喜欢互联网领域的开发,这个领域能让我保持对技术高度的警觉性,能给我带来很多的新鲜感,所以一直在研究互联网领域的开发模式和特点.从企业应用领域转到以互联网为主的领域也差不多两三年了吧,这几年我明显感觉到找到适合我的发展之路,因为有兴趣所以让我不知疲倦的学习,成长.但是这几年也深深的体会到,互联网领域的开发不是一帆风顺,总有一种怪怪的感觉,如鲠在喉不知所然,我认为最大的问题在开发过程中的理解不统一,新观念和旧传统存在着激烈的斗争,不同的思路难以融合. 作为大多数的管理

    软件工程, 产品开发July 8

  • 如何做项目?

    如何做项目: 1,如何立项? 根据大体需求来制定项目细节,我们可以去调研,可以去复制,总之有一个用户需求的获取过程. 怎样才能获取到较好的用户需求. 若不是创新产品,我们可以参考类似产品的实现--体验兄弟产品,体验的方式有很多,比如实际使用.测试性使用.模拟开发使用.主要是研究兄弟产品的实现原理以及某些具体细节. 若是创新产品,首先我们有灵感--创意点,否则是空中楼阁--幻想而已. 2,如何指定开发需求. 根据用户需求,结合本地技术概论,考量用户需求的可实现性. 有了开发需求,利用嵌入模型来嵌入

    软件工程, 项目April 23

  • 软件工程的几个步骤

    软件工程一直以来都缺乏一个统一的定义,很多学者.组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发.运行和维护这些程序所必需的相关文件资料. IEEE:软件工程是开发.运行.维护和修复软件的系统方法. Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法. 软件工程学的内容 软件工程学的主要内容是软件开发技术和软件工程管理. 软件开发技术包含软件工程方法学. 软件工具 和 软件开发环境 :

    软件工程February 5

  • 小工到专家

    1.Provide Options,Don't Make Lame Excuses 2.Don't live with Broken Windows 3.Be a CataLyst for Change 4.Remeber The Big Picture 5.每年至少学习一种新语言 6.每季度阅读一本技术书籍 7.也要阅读非技术书籍 8.上课 9.参加本地用户组织 10.实验不同的环境 11.跟上潮流 12.上网 13.Critically analyze what you read and h

    软件工程November 6

  • 大学三年软件工程专业学习感受

    转眼间,三年过去了,再过2个月就要迎来大学最后的一年.回想一下这3年的学习,总结一点,就是走了很多弯路,好在现在已经认识到了. 为什么会走弯路呢?因为自己对某些知识存在很多错误的认识,比如说当年认为C语言不怎么重要,结果就没怎么好好学.以致于现在疯狂的往回补. 弯路走的多了,自然就有经验了.在我看来, 优秀的程序员=扎实的计算机基础知识+良好的数据结构和算法思想+自己最擅长的技术.很多同学,一直热衷于疯狂的写代码,这本来是很正确的,但这个要建立在一个基础上,那就是理论基础,没有理论基础的程序员是

    软件工程, 学习经验May 24

  • 软件工程过程学习笔记

    软件工程过程是为了提高软件质量而需要完成的一系列任务框架,它规定了完成各项任务的工作步骤. 软件生命周期的划分: ·问题定义:"要解决的问题是什么" ·可行性分析:"是否值得去做",考虑用最少的成本完成 ·需求分析:"做什么",产生需求说明(或叫需求规格说明) ·概要设计:"怎样做",并且要设计程序的体系结构 ·详细设计:"具体怎么做",包括必要的细节,程序员据此可以写出程序 ·编码与单元测试:选择一种语言

    软件工程January 15

  • 中国啥时才能搞明白软件是个工程

    我从96年毕业一直在搞软件这个行业,可能比较闭塞,不太跟别的同行交流,偶尔听到有人说你在搞IT信息技术,我很郁闷,为什么说我搞的是IT信息技术而不是软件产业?这是1999-2002间的事.现在跟同行聊多了,才越来越明白这是什么道理. 中国的操作系统是个空白,没有公司搞得能和微软一样牛,当IT业迅速占有中国市场的时候,中国大多书企业都是在微软的操作系统上搞应用开发:微软和其它软件开发商也提供了RAD模式的开发环境,几乎不需要懂太多代码的人,都能写出Windows应用,这也就造就了中国的软件开发是个

    软件工程June 24