开云 开云体育APP第一讲 软件开发概述
(1)系统软件 操作系统:管理、分配、控制系统资源组程序的集合, 提供给用户可操作的基本应用界面。 编译程序:把高级语言转换为计算机可识别并执行的机 器语言 数据库管理系统:存储、管理数据,方便信息数据的使 用 网络通信管理程序:对网络间通信进行控制和管理 诊断程序:检查和判断计算机系统的故障 等等
(1)学习强势知识 什么是强势知识:知识的价值可以用创造出来的 社会财富(包括物质财富和精神财富)来衡量。 所谓强势知识就是“能够最快地为社会创造最多 财富的知识”。 我们应当在短暂的、富有生命活力的时间里学习 和应用强势知识,而不是垃圾知识。
需求定义:系统服务或约束陈述 阶段任务:和客户一起确定、分析和协商需求。 阶段产品:需求文档
始于开发者开始使用方法(UML)对需求进行建模。 产品是规格说明文档。OOA中两个最重要的规格说明技 术是类图(说明数据)和用例图(说明功能)。 另外还包括描述其他需求如:性能、外观、可用性、可维 护性、安全性、政策和合法需求
(1)软件是一种逻辑实体,而不是具体的物理实体,因此它 具有抽象性,质量问题不易暴露.
人们往往忽视软件质量问题及其造成的损失。 桥梁和操作系统的一个重要区别在于,土木工程界和软件 工程界对于崩溃这件事情的态度不一样。1940年Tacoma Narrows大桥坍塌 vs Windows死机 如果一个软件工程师像一般工程师对待桥梁坍塌那样严肃 地对待操作系统崩溃,软件工程的职业水准就会大大提高。
关于成本:开发成本和维护成本是软件的主要成本构成。 除了软硬件基础设施的成本外,人力资源成本占了开发成 本的主要比例。人力资源成本等于雇员的工资乘以工作时 间,所以企业招聘员工的理想状态是:以最低的工资招聘 恰好满足工作需要的人。另外,设法提高工作效率以减少 总的开发时间,从而降低人力资源成本。
“质量、效率、成本” 通常是衡量产品开发过程优劣的 三个关键指标。 如果产品的质量比较差,必然挨用户骂,轻则被退货, 重则倒品牌。 如果工作效率比较低,等你慢腾腾开发完成产品并推向 市场时,可能大部分市场己经被竞争对手捷足先登了。 如果开发成本太高,要么用户买不起,要么利润率太低。
① ② ③ ④ ⑤ ⑥ ⑦ 对软件开发成本和进度估计常常很不准确 用户对“已完成的”软件系统不满意的现象经常发生 软件产品的质量往往不可靠 软件常常是不可维护的 软件通常没有适当的文档资料 软件成本在计算机系统中所占比例逐年上升 软件开发生产效率提高的速度运远跟不上计算机应用 迅速普及深入的趋势。
关于效率:企业总是希望产品上市的时间越短越好, 这样可以抢占市场。 对于合同性的项目而言,开发方应当在合同指定的期 限内交付软件,否则违约的话将损害双方的利益。所 以对于企业而言,时间就是金钱。 在正常情况下,开发团队的工作效率是决定产品实际 开发时间的主要因素。所以提高工作效率是企业获取 更多利润的有效途径。
第一阶段,做个职业程序员,主要工作是编程、测试 和维护,领导让他干啥就干啥。 第二阶段,成为项目经理或同等级别的技术负责人, 从事项目管理、需求分析、系统设计之类的工作,带 领一批程序员干活。 第三阶段,成为机构(企业或者事业部)的领导,成 天琢磨怎样让机构赚更多的钱,决定产品的发展战略, 然后让别人去开发产品。
(2)如何管理团队 规范化的管理有两层含义:首先制定工作规范, 然后按照规范开展工作 . 超越规范化的管理 :知人善用显然是超越规范的。 直观地理解,“知人”是指领导者应当非常了解他 的团队成员,包括知识技能和性格爱好等等;“善 用”是指让团队各成员扬长避短,使团队战斗力达 到最强
世界上第一个编软件的人—阿达(Augusta Ada) 19世纪60年代为机械式计算机巴贝奇编写软件 软件是整个计算机系统中具体实现各种功能和操作的核心 部分。 软件=程序方法数据文档 程序是按事先设计的功能和性能要求,执行的指令序 列 方法是提供如何构造软件的技术 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料
客户因素:客户的需要被误解或没有被完全捕捉;客户 需求变化过于频繁;客户没有准备为项目提交足够的资 源;客户不想与开发者合作;客户具有不现实的期望; 系统不再对客户有利。 开发组织:未雇佣最好的开发者;为现有的开发者未提 供继续培训和教育的机会;开发者之间进行信息交换和 交互不够;未通过消除障碍并努力激励开发者;未提供 一个令人鼓舞的工作环境;使个人目标和组织策略及目 标不一致;缺少团队工作;
1968年北大西洋公约组织的计算机科学家在联邦德国召 开会议,讨论软件危机问题,正式提出“软件工程”的概 念。
软件工程即采用工程的概念、原理、技术和方法来开发和 维护软件,将工程管理技术成功的经验和思想与具体软件 的开发过程、研究技术相结合,形成一整套适合于计算机 软件开发的方法、规范和技术。
企业用人之道也有两个内涵: 用正确的人,即利用能为企业赚取利润的人 正确地用人,即努力使人为企业赚取尽可能 多的利润。 有句名言:“人分四类—人物,人才,人手 ,。”
(3)软件不同于机械、电子设备,它不存在磨损和老化问题, 然而它存在退化问题,设计人员必须多次修改。 桥梁维护仅限于粉刷、修复小裂缝、重铺路面。修改操作 系统三年修改50%的源代码,把操作系统从一种机器移植 到以一种完全不同的机器,是很自然的。 维护考虑经济问题。新旧技术选择。 只有坏的软件才需要维护? 软件维护成本和时间占整个软件成本和时间的50-60%, 有的甚至80%。
提高工作效率的前提条件是所有工作成果的质量必须合 格。否则,工作效率越高,软件中的缺陷就越多,那么 用于测试和维护的代价也越高,得不偿失。 提高质量、提高效率都不是喊口号,要根据企业的目标 和当前实力,量力开云 开云体育官网而行。常见措施有: 提高项目成员的工作技能 制定合适的软件过程 提高复用程度 使用高效率的开发工具和管理工具
大学教育以填鸭的方式给学生灌输技能,却忽视了传授思 想和方法;学生们埋头学习,不知学以致用,离开学校后 对企业、产品、人生一片茫然;企业以混乱甚至错误的方 式开发产品,重复着前人的失败而不是成功。这就是产生 “软件危机”的真正根源。
(1)开发正确的产品 所谓“开发正确的产品”是指“开发能够赚取利润的产 品”。 对于企业而言,评判产品“对错”的标准就是“能否赚 钱”。
bug的故事 0金额帐单的故事 美国战略防空司令部的导弹虚惊 Therac—25医用线性加速器致病人死亡 飞毛腿导弹击中沙特兵营
团队管理的基本目标是让所有成员有条不紊地开展工作,在 预定的时间和成本之内,开发完成质量合格的产品,从而使 企业和个人获得预定的利益。 团队管理的努力目标是调动一切积极因素,努力提高产品质 量、提高工作效率并且降低开发成本;使企业和个人获得比 预定目标更多的利益。 团队管理的策略是大部分的管理工作是成熟的,有成功的模 式可以套用,应当走规范化管理的路线;而另外小部分的管 理工作可能是富有个性的,并不适宜套用规范,那么应当采 用超越规范化的管理方式。
软件的定义的发展 程序的集合:50-60年代 程序+文档:70年代,软件危机以后,认识到 文档的重要性 程序+文档+数据+方法:80年代以后,加强 软件生产的工程化、规范化
IT产业已经逐步发展成为中国的支柱产业之一,然而充满 活力、优秀的软件企业屈指可数,绝大多数软件企业长期 面临“产品质量低下、进度延误、成本高昂”的共性问题, 就像患了恶劣的慢性病,难以根除。 许多原本雄心勃勃的软件企业并没有战死在沙场上,而是 被恶病折磨得奄奄一息直至颓然去世。但是IT产业的利润 和前景实在是太诱人了,没有获得免疫力的新企业又如雨 后春笋般地诞生,前仆后继,延续着相似的故事。
(2) 正确地开发产品 关于软件质量:软件的质量属性很多,如正确性、 精确性,健壮性、可靠性、容错性、性能、易用性、 安全性、可扩展性、可复用性、兼容性、可移植性、 可测试性、可维护性、灵活性开云 开云体育等。 能成为卖点的质量属性才是质量要素,才值得开发 人员关注 。提高软件质量的最终目的是为了获取尽 可能多的利润,而不是出于对完美质量的追求; 如果某些质量属性并不能产生显著的经济效益,我 们可以忽略它们,把精力用在对经济效益贡献最大 的质量要素上。
(1)学习强势知识 把事业建筑在强势知识之上 :人们应当根据自己 的兴趣、毅力、悟性(天赋),发掘适合自己的 强势知识,并把事业建筑在强势知识之上 。 我们并不推崇“干一行爱一行”,因为爱和不爱 都是发自内心的,无需听从口号。我们更不赞同 在事业上“择一而终”,因为这可能使生命失去 色彩。人是易变的,只要朝着更加适合你的方向 改变,就叫“与时俱进”。另外要抓住机遇。 Unix诞生、MS DOS故事、Windows故事
物色团队的核心成员 :区别“核心”与“普通”的要素 是“才能、责任心、忠诚度”。 物色团队的普通成员 :选择普通成员的主要指标是“技 能合格、安分守己、任劳任怨”。
关于软件过程的改进:一般地,在软件开发过程中,工 程类的过程域主要有:需求分析、系统设计、软件实现、 软件测试、软件维护等; 管理类的过程域主要有:项目规划、项目监控、需求管 理、质量管理、配置管理等。任何活动都会影响产品的 质量、生产效率和成本。从20世纪90年代起,软件过 程改进成为软件工程和项目管理交叉学科的主流研究方 向。软件过程改进的目标就是“提高产品质量、提高工 作效率和降低开发成本” 业界的实践证明,走规范化之路是成本最低、见效最快、 最能持续发展的软件过程改进方法。
盖一个茅草屋,几个人几天就可以完成。但盖一个摩天 大楼,需要很多人协作,需要可行性分析、设计蓝图、 施工、验收等过程,在投入后还要进行维护。 建筑师设计大厦会考虑体系结构问题。建造房子时可以 使用预先做好的预制件,而不用一砖一瓦开始做。有时 因为某些原因,可以把用于别的房子的构件,对房子质 量等没有影响。
20世纪80年代末至今 •网络计算机 •并行计算 •人工神经网络 •专家系统 •强大的桌面系统 •多项开发技术
20世纪70年代中至80年代末 •消费者影响 •低成本硬件 •潜入”智能” •分布式系统
涉及解决方案策略的选择以及系统的模块化。 解决策略需要决定客户(用户界面)和服务器(数据库) 等问题,以及粘合彼此之间的中间件。
软件开发过程确定以促进开发小组内部合作的活动和组织 的程序,使得能交给客户一个性能优良的产品。 过程模型包括:说明执行活动的次序;说明需要交出什么 样的制品,以及什么时候交出;将活动和制品分配给开发 者;提供监控项目进程、评估产出和计划未来项目的准则; 迭代式和增量式开发 能力成熟度模型CMM(1-5级) ISO9000
根据事业的目标,确定对应的强势知识结构,有目的有 步骤地学习这些强势知识,并且要随着事业的变化,不 断地修正知识结构 学好基础知识 读书时扬长补短,工作时扬长避短 不仅要学习新知识,还要向错误和失败学习,形成学习 的良性循环。
(2) 西部旅行—开发经验 对于一个完全不熟悉旅途和目的地情况的人,在途中会遇 到各种各样的问题,解决这些问题只能依赖别人的经验、 书本知识和自己的判断。如果这些问题解决得好,可能成 功到达目的地,否则就会走弯路,甚至离目的地越来越远, 最后由于时间或经费等原因不得不放弃履行。 如果这个人以前曾经成功地到达目的地,那么他以后再次 到西部旅行时就会熟悉沿途的情况,对可能遇到的风险就 会预先做好防范,成功到达目的地的机会就会大大增加。
① ② ③ ④ ⑤ ⑥ ⑦ 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采纳现代程序设计技术 结果应能清楚地审查 开发小组的人员应少而精 承认不断改进软件工程实践的必要性
描述每个模块、部署(客户、服务器) 用户界面设计 数据库设计 数据结构与算法设计
3.6 实现阶段 为买来的软件进行安装 为客户定义的软件进行编码 测试 数据库装入 用户培训 硬件购买于调试
所谓“正确地开发产品”是指:项目团队在预定的时间 和成本之内,开发完成合格的产品;项目团队尽最大努 力把产品做得好、做得快并且少花钱。前者是基本要求, 后者是努力方向。
团队作战,需要每个人协同工作,同时需要高昂的士气。 如果团队中有人工作懈怠,对胜利表示怀疑或悲观,很 容易影响其他人的士气。 指挥员的任务除了要保持团队的斗志外,要根据当前的 进攻目标分配人力和物力,在规定的时间内攻克目标。 战士需要有武器,武器越先进,对工具越熟悉,整个团 队战斗力越强。
(2)提高表达能力 树立正确的观念 :表达要是指“写”和“说”的能 力。“写”和“说”是人们向外界表达自己才华的重要途径。 请你看看四周,你会发开云 开云体育官网现当领导的通常都是能说会写之人, 而不是技术最好的人。如果你不擅长写和说,你永远都不能 当领导! 提高写作能力 : 内容是文章的灵魂 (巧妇难为无米之炊) 表述内容要符合逻辑 内容要有真凭实据(即实证) 措词追求“正确、准确、优美”
20世纪50年代初至60年代初 •自定义软件 •有限的分布 第二阶段 •面向批处理 20世纪60年代中至70年代末 •软件产品 •数据库 •实时 •多用户
尽管软件白领是令社会大众羡慕的阶层,但是男士 们成家立业的艰辛程度丝毫不亚于农民和蓝领。这 是因为他们所负的压力远远超过了经济收入。
《甲方乙方》冯小刚的年终工作报告:同志们,我 们推出的“美梦一日游”深受广大群众的喜欢, 墙上挂满了群众们送的锦旗。大家工作都很勤奋, 客户越来越多,但是我们挣的钱却越来越少了。 公司再办下去就成了慈善机构,所以大家只好散 伙。
中国移动通信曾经在《环球时报》上刊登了这样的广告:神 州行给全球通发了一条短消息,说我神州行自5.17起也有了 短消息。全球通也给神州行发了一条短消息,说我全球通知 道你神州行自5.17起有了短消息,以后不但神州行和全球通 都可以发短消息 而且神州行还可以给全球通发短消息,全 球通也可以给神州行发短消息,也就是说神州行自5.17起 有了短消息,神州行和全球通可以互发短消息。……
开发人员需要一种语言来创建可视化系统模型,并与客 户和其他开发人员讨论。 目前通用的语言是UML和支持UML的一些CASE工具如: MagicDraw,Power Designer,Rational Rose
从某个待开发软件的目的被提出并着手实现,直到最后停止 使用的这个过程,称为软件生命周期 粗粒度:分析、设计、实现 细粒度:需求确定、需求规格说明书、体系结构设计、 详细设计、实现、集成、维护(和最后逐步结束); 规划和测试跨越了整个生命周期
把各个模块组装成一个整体系统,实现客户需 求。有时需要写一些“粘结”程序。
整个产品被交付给客户时,维护就开始。 平均占整个软件生命周期70%的时间和50% 以上的成本
国内大学计算机教育太差劲了? 书籍资料不够导致人们不懂软件开发和管理吗? 难道是软件人才不够? 难道是政府对IT产业的扶持不够? 难道社会对IT产业的不够?
人们常常关注开发成本而忽视了维护成本。对于一个有 信誉的企业,如果卖出去的软件产品中有错误,那么就 有义务修改错误。软件刚卖出去的时候,销售价格肯定 比开发成本高,看起来是赚了钱。但是如果软件质量比 较差的话,那么维 护成本将是个无底洞,完全有可能把 先期赚的钱给消耗光。 人们不可为了压缩开发成本而放弃软件测试、技术评审 等质量检查活动。前期偷懒将使后期遭殃。
搞技术主要用脑,搞管理主要用心。技术才能取决于 智商(IQ),而管理才能取决于情商(EQ)。 如果你的 IQ和 EQ都比较高,那么你就是当领导的料。 如果某人的IQ很高但是EQ却很低,那么就请他走技 术专家的路线,切勿开云 开云体育官网走错道。 怎样提高管理能力: 要有当领导的愿望。 要有自学成才的信心 正确地学习基础管理知识 从项目经理做起
① 让最优秀的人才当团队 的领导, ② 让次优秀的人才成为核 心成员 ③ 让平庸之人成为普通成 员 团队的人员结构
充分准备 仪表整洁,精神抖擞 声音响亮 戒掉烦人的口头词 现场交互,调动听众的积极性
出色的技术才能和管理才能可以让人获得很高的职位,但 是如果缺乏人格魅力,即使他成为领导开云 开云体育也成不了领袖。 领导是一种行政职位,可以被任命也可以被散职。领袖则 是活在人们的内心里,他让人们发自内心地尊敬和服从。 企业没有领袖就等于没有灵魂。如果广大员工和领导者没 有精神上的联系,仅仅存在雇佣关系,就不会发生“同甘 共苦”这种美好的故事。 怎样提升人格魅力:胸怀宽广、意志坚强、知人善用、具 有社会责任心。
软件开发方法往往依赖于硬件技术,同时效仿硬件技术, 但是又远远落后于硬件技术。 比如至今为止,软件的开发尚未完全摆脱手工艺的方式, 但是硬件技术已经发展到超大规模集成电路阶段,而从 市场上买到的软件,本身是一个完整的系统,不能作为 构件再组成其他程序。
由前节可以看出,在信息系统开发中许多关于项目失败、 超出期限和预算、解决方案错误、系统不可维护的例子, 几乎四分之三的软件项目由于上述原因中的一种或多种 而失败。 这些“基本的困难”确定了软件开发中的一个不变得事 实,这个不变事实简要地指明软件是作为一种创造性的
(2)软件生产与硬件不同,软件开发没有明显的制造过程, 不能完全工程化。 软件成为产品后,其制造只是简单的拷贝而已。 由于软件本身是非常复杂的--实际问题的复杂性、程序 逻辑结构的复杂性,软件执行时经过一个不连续的离散 状态(离散数学)。桥梁是一种类似于连续的系统,可 用微分方程描述。软件不能完全工程化。 容错的概念:设计桥梁要使它能承受可预见的考验。软 件设计的前提是我们并不能预见软件能遇到的任何情况, 在遇到意外时,能够将损失降到最小。
印度大型软件公司的项目按合同完成率达到95%以上, 而麦肯锡公司不久前的一项调查表明,全球软件开发项 目中只有16%能按计划完成,中国低于10%。 印度目前有软件公司7500多家,从业人员41万人,其 中5000人以上的大公司16家,10000人以上的公司6家, 印度软件企业的上百家分支机构分布在欧美国家,印度 软件业近5年的平均增长率达60%左右。 全球目前通过CMM-5认证的52家软件企业中,印度占了 42家。
靠体力劳动谋生的工薪阶层称为蓝领,靠脑力劳动谋生的工 薪阶层称为白领。通常,在同一地区,白领的工作条件和生 活条件都要比蓝领的好一些。 ----白领买衣服的故事 据大致估计,上海、北京等发达城市的软件白领平均年薪为 10万元左右。如果进一步细分的线万元左右的称为 灰领,年薪15万元左右的称为银领,年薪20万元以上的称 为金领。
软件的研制工作需要投入大量的、复杂的、高强度的脑力 劳动,它投入的成本是比较高的。 软件工作涉及到相当多的社会因素,如软件的开发和运行 涉及到机构设置,体制运作及管理方式等问题,甚至涉及 到人们的观念和心理,这些因素直接影响到项目的成败。
真才实学忧于学历 :对于工程学科而言,硕 士和博士的课程普遍不及本科课程那样博大精 深,混个文凭很容易。 读硕士或者读博士的真正目的应该是提高真才 实学,而不是混个文凭。企业的领导都是精明 的商人,不是笨蛋,不会被空有文凭而没有真 才实学的人蒙骗的。
教育界和工业界应当研究和推广走向成功的“方法论和模 式”,这是解决“软件危机”最有效的办法。
企业的根本目标是“合法地赚取尽可能多的利润, 使企业利益最大化”。这个根本目标就如同企业的 “宪法”,是企业生存和发展之本。企业所有的特 定目标和行动都是围绕着这个根本目标展开的,任 何背离根本目标的行动都将对企业造成伤害,应当 杜绝。 “振兴民族产业、为国家多做贡献”是公民的义务。 政府对企业唯一约束是“守法”,甚至不要求“守 德”。 故事:巨人公司倒闭
扫一扫关注微信公众帐号