现代软件工程 练习与讨论 第十五章 稳定和发布阶段

对电脑控制的丹佛机场行李系统做Postmortem总结

首先,这是典型的软件项目开发失控的例子,甲乙双方都是有实力而且有丰富项目经验的公司,但却最终导致了项目失控,可从以下几个方面找原因:

1,在项目开始前的需求和目标不明确导致在施工过程中,后加需求。比如,“丹佛市决定建设一个全机场范围的集成自动化行李处理系统,替代各家航空公司自行建设的方案”;这里忽略了当时机场的基础设施中缺少安装行李系统所需的足够空间以及建筑结构无法承受行李系统所附加的重量等问题,盲目的进行开发。因此,锁定需求:一开始就必须锁定最终需求,与客户(可以是老板、上级、同事或真正的外部客户)谈妥之后,要形成需求文本,约定需求考核点、可投入资源以及出现需求变更时的处理原则。以文本形式确认最终需求的考核点等内容,可以避免很多误会和扯皮,并为应对不可控因素埋下伏笔。

2,出现结构性问题和施工次序不当,在施工之前,没有一个系统的准确的分析,明确这样一个庞大项目的各个子项目施工顺序,应遵循先易后难,想简单后复杂,前期工作是为了后期打基础,避免后期工作在施工时,又要回头先做前面没有完成的部分,导致项目无法按时完结。

3,贪大求全,需求控制失效。“丹佛市决定建设一个全机场范围的集成自动化行李处理系统,替代各家航空公司自行建设的方案”,这个决定的本身就缺乏科学的考量和调研,我想这与那位市长追求政绩,好大喜功有不可分割的关系,一个需求的提出,不是拍脑门,而是经过一系列内部与外部的,结合实际情况的过程,科学求证出来的,盲目的需求会导致一系列重大问题,甚至灾难性的后果,赔了夫人又折兵。

时间: 2024-10-14 00:03:26

现代软件工程 练习与讨论 第十五章 稳定和发布阶段的相关文章

现代软件工程 练习与讨论 第十六章 IT 行业的创新

 16.6.1 VCD 的创新阅读和讨论 VCD 在中国创新和衰退的故事,谈谈先行者如何把技术的领先转变为持久的市场领先,并结合技术产品的周期图,谈谈如果你当时也是一个竞争者,你应该怎样竞争? 答:当我们拥有技术的领先时: 一,我们应该具有自主知识产权意识,申请专利保护. 二,在市场需求状况下,不断地提高产品的技术与质量,使产品不断升级,满足用户的需求. 三,价格战是使产品迅速普及的一种常用手段,能提升企业的市场占有率.但价格战是把双刃剑,不顾及企业利润的恶性价格战,会使企业深陷泥潭是个危险的行

现代软件工程 练习与讨论 第十二章 用户体验

1  什么时候开始考虑用户体验? 用户体验十分重要,正如书中所介绍的,用户安装软件并且启动后,会首先有第一印象,如果第一印象不尽人意,那么这个软件很可能即使交互性很强,压力测试,负载平衡达到了很高的水平,也不会有人光顾,也正如书中所讨论的,高级功能并非是拿到主页面去show的,在高级的技能若没有有好的用户页面作为载体,那么也没人去用,所以及早的考虑用户界面是一定的.但是也不可以先设计好用户页面再去进行开发,那么开发周期会大大增加,并且开发人员和测试人员会处于空闲状态.软件服务始终都要记住用户的选

现代软件工程 练习与讨论 第十四章 质量保障

1.在高难度领域往往一个人身兼多职,所以不需要专职的Test,专职的Test反而是对高级人才的浪费. 专职人员应该处理的是一项可重复的,贯穿整个流程的工作,而软件项目的软件测试环节正好就是这样的工作,所以专职Test还是很有必要的.不过如果公司内的员工个人能力都很强,Tester也能负责其他工作,那就没必要浪费能力专职Test了. 2.像FaceBook这样的公司员工个人能力都很强,加上本身产品属于每天都在频繁使用,对质量要求也不是太高的类型,能够很快从用户获取充分的反馈,所以没有必要拥有专职的

现代软件工程 第十五章 练习与讨论

15.3.0 案例分析 可以看看这两个学生项目的例子,推断出这些团队的血型: STG游戏的跳票(为了完美,推迟了7天,但是7天之后也没有发布……)[leal1] [i] 英语学习软件(说了“明早发布”,但是明早一直没到)[ii] 15.3.1  反动分子阿超 在最后的稳定阶段,阿超不断地把事情推到下一个版本,二柱和果冻都不耐烦了——为什么不拼一下,把所有事情在第一版搞定? 阿超: 有两种做法—— 1. 根据事情的轻重缓急,安排大部分事情在下一个版本做.正因为我们对项目.团队.商业模式有信心,才会

【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能

原文:[.NET Core项目实战-统一认证平台]第十五章 网关篇-使用二级缓存提升性能 [.NET Core项目实战-统一认证平台]开篇及目录索引 一.背景 首先说声抱歉,可能是因为假期综合症(其实就是因为懒哈)的原因,已经很长时间没更新博客了,现在也调整的差不多了,准备还是以每周1-2篇的进度来更新博客,并完成本项目所有功能. 言归正传,本重构项目是在我根据实际需求重构,由于还未完全写完,所以也没进行压测,在2月份时,张善友老师给我留言说经过压测发现我重构的Ocelot网关功能性能较差,其中

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

第十五章 文件属性类的实现

                  第十五章    文件属性类的实现        根用户的权限也不能是无限大.必须考虑到保护用户的隐私!用户的文件内容.程序代码可设置为根用户也不能观看,只能是文件拥有者可以查看.修改.但根用户可以删除一切非根用户的文件.也可以查看用户的目录.所以,i_mode字符更改如下:      BU16 i_mode; // 描述文件的访问权限:文件的读.写.执行权限  // i_mode.15-13  ftype; 文件类型: 0-符号软连接文件, // 1-硬连接文

C和指针 (pointers on C)——第十五章:输入输出函数

第十五章 输入输出函数 这一章读完的第一感觉就是"呵呵". 如果说上过C语言课,基本上scanf()/printf()算是用的比较熟练了.尤其是那些抽象的格式说明.还有scanf()为什么要加括号. 读过本书前面的内容的话,getchar(),putchar(),gets(),puts()这些应该也问题不大. 再如果的话,你学过计算机图形学,你玩过OpenGL,听说过双缓存机制,那么fflush()也肯定弄明白了. 再加上FILE的操作,输入输出定位刷新删除改名,流的概念. 这一章就会

第十五章 链表

/** 数组与链表的区别:数组易随机访问,链表易插入和删除 链表组成:储存数据元素的数据域,储存下一结点地址的指针域 链表易于插入与删除 lists 的用法????????????????????? *///建立一个图书链表 #include<iostream> #include <string> using namespace std; struct book //第一步: 用于建立节点. class 默认为私有 struct 默认为公有 //节点组成:①数据域 ②指针域(*ne