《Head First 软件开发》阅读一
伟大的软件开发:让客户满意。
大多数项目的焦点:钱、时间。
我们需要交付的软件系统是需要客户满意,而你认为的完成并不是客户认为的完成。
如果我们不能确定客户需要的是什么,得回去问问他们。这是执行一个项目的必经之路。
伟大的软件开发是:need 、on time、on budget这三个原则,开发循环是完成一个项目指定目标的好的方式。开发循环自行制定,可以阶段性的了解客户的最新建议和想法,所以开发循环又是一个微型项目。
我们根据用户的需求制定不同的优先级,而客户的需求是我们需要完成的工作。流程,是对步骤的排序。正确的软件流程就是能帮助你在规定的时间和预算内能完成和交付伟大的软件开发。
总体来说,跟客户阶段性的交流,是完成一个项目的重点,让客户满意,是对软件系统的一个完美交付。
收集需求:知道客户想要什么
软件开发需要交付客户需要的软件系统,与客户沟通,获取更多的信息,重点是与客户沟通,才能得到想要的答案。当与客户反复讨论时,思路要开阔一些,与客户共筑需求愿景。收集良好的需求需要懂得变通,一种方法不行就换另一种方法;两个特别有帮助的技术是:角色扮演和观察。需求一定是面向客户的,所以使用情节要站在用户的角度写,自己和用户都能理解使用情节中的意思。通过分析客户的反馈,澄清需求。
需求的基本步骤:1、抓住基本的想法
2、共筑愿景的头脑风暴
3、构建使用情节
4、通过客户的反馈意见,发现漏洞和增强使用情节的清晰性
5、清晰地、以客户为中心的使用情节
需求与估计的反复循环是实现需求的重要方法。
《Head First 软件开发》阅读一的更多相关文章
- 《Head First 软件开发》阅读二
项目计划:为成功而筹划 每段伟大的代码始于伟大的计划. 客户现在就要他们的软件,可是开发需要的时间远远超过客户要求时间.我们需要实际解决方法:由客户确定优先级,与客户一起确定优先级顺序,开发出Mile ...
- Atitit.软件开发的几大规则,法则,与原则Principle v3
Atitit.软件开发的几大规则,法则,与原则Principle v31.1. 修改历史22. 设计模式六大原则22.1. 设计模式六大原则(1):单一职责原则22.2. 设计模式六大原则(2):里 ...
- python基础之迭代器、装饰器、软件开发目录结构规范
生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大 ...
- TCL校园招聘——软件开发工程师(java) 只招5个。。。
简介 TCL集团股份有限公司创立于1981年,是全球性规模经营的消费类电子企业集团之一,广州2010年亚运会合作伙伴,总部位于广东省惠州市仲恺高新区TCL科技大厦.旗下拥有TCL集团.TCL多媒体科技 ...
- 一个编程小白,如何入门APP软件开发领域?
近些年,互联网创业火得不得了!一时间,满世界都在招做App软件开发的专业人员.从大众角度来看,学编程,写代码,是一件非常困难的事情.但是,App开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那 ...
- R型思维模式对软件开发的影响(草稿)
The pragmatic programmers 一直在工作之余读些书,之前主要是纯英文版的计算机相关的算法,编译器,数学等,想通过读这些书来提高自己每日工作效能,结果收效甚微.一是,因为纯英文的书 ...
- atitit.提升软件开发的效率and 质量的那些强大概念and方法总结
atitit.提升软件开发的效率and 质量的那些强大概念and方法总结 1. 主流编程中三个最糟糕的问题 1 1.1. 从理解问题后到实现的时间很长 1 1.2. 理解和维护代码 2 1.3. 学 ...
- Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725 1. DSL主要分为三类:外部DSL.内部DSL,以及语言工作台. 1 2. DSL ...
- 敏捷软件开发 原则 模式 与实践 - OCP原则
最近在读BOB大叔的敏捷软件开发,特别是TDD那一章节,启示真的不少,从测试驱动开发,讲到驱动表明程序设计的意图,从设计意图讲到对象依赖的解耦,从解耦建立Mock对象. 其实是对每个模块都编写单元测试 ...
随机推荐
- 监控Linux服务器上python服务脚本
提供给公司使用的测试平台这两天频繁地挂掉,影响到相关同事的正常使用,决定在服务器上写个监控脚本,监控到服务挂了就启动起来,一分钟检查一次.注:后台服务使用的是python.监控脚本如下: NUM=`p ...
- Dart学习笔记-循环
1.for循环 main() { // for循环 ; i < ; i++) { print(i); // 0,1,2,3,4,5,6,7,8,9 } } 2.while循环 main() { ...
- Linux下搭建Git服务器
1.安装Git 见 Jenkins持续集成环境部署 第四节 2.创建Git用户和用户组 groupadd git useradd git -g git 3.创建证书切换到git用户创建证书 su gi ...
- vsftp新建用户及目录时遇到的坑
1.有关vsftp配置及用户权限设置,请参考: http://blog.sina.com.cn/s/blog_3edc5e2e0102vzv8.html 2.需求:公司另一部门要求单独建一目录,来存在 ...
- python基础-python函数参数为print语句时的输出
函数参数输入print语句,调用函数时都会执行print语句,实例: def outer(func): def inner(): print("我是内层函数!") return i ...
- unity 角色换装
unity角色换装的关键是更改角色部位上的物体的SkinnedMeshRenderer组件的属性: 更改mesh:mesh决定了部位的物体的外形,是主要的数据. 刷新骨骼:同一个部位下,不同的mesh ...
- PHP 按照时区获取当前时间
/** * 时间格式化 * @param string $dateformat 时间格式 * @param int $timestamp 时间戳 * @param int $timeoffse ...
- easyUI关键(常见)组件详解
一.easyUI 相关介绍 1.EasyUI 是前端框架,封装大量 css和封装大量 JS 2.使用前端框架时,给标签定义class 属性,就会有样式和脚本功能了(class属性对应了相关封装过的cs ...
- 1.基础CRUD
在ef中,CUD都使用Datacontext.SaveChange()进行保存. SavaChange方法在保存之前会自动调用DetectChanges方法检查DataContext中做了什么更改,以 ...
- RocketMQ高性能原理(pushConsumer,CommitLog,ZeroCopy)
1. Rocketmq消费模型(实时性) 常见的数据同步方式有这几种: push:producer发送消息后,broker马上把消息投递给consumer.这种方式好在实时性比较高,但是会增加brok ...