设计规约(specification)
即系统蓝图,在总体设计阶段,人和月是不能互换的。与其引入大量的人手,不如由精干的小团队制定规划。
节约系统资源,减少不必要的资源占用,顾全大局,毫厘必争,巧妙规划,依然是软件开发人员的优良素质,是活的软件优良性能的重要保证。
巧妙的数据结构定义往往能大幅度地提高系统的运行效率。
There is nothing in this world constant but inconstancy.世上唯一不变的就是变化本身。
今天,“拥抱变化”是敏捷建模的核心原则之一,我们必须接受变化总是在发生这一现实,病史软件产生过程切合灵活变更的需要。
附:想成为架构师,我需要了解:
虽然具体的开发技能并不是架构师唯一需要的能力,但深刻了解技术的架构师能得到开发人员的尊重。
回归测试(Regression Test)有时也译为“退化测试”,为了弥补升级和修复引起的新问题而被广泛关注并采用。
鉴于回归测试需要覆盖现有的所有功能,因此自动化测试是良好的解决方案。对于需多次维护的大型系统,定义出一套合理而完善的回归测试自动方案将有很大意义。
A good workman is known by his tools.良匠利器,相得益彰。
尽早地引入测试和核查,错误修复得越早,代价越小。
由于测试需要的时间难以估算,故而尽早引入测试是未雨绸缪的上策——测试已有的部分,那些尚未完成的构件,未就位的输入输出接口则由一些接口一致的简单替代品来模拟。
修复bug期间要严密地保持文档和实现之间的一致性,仔细地记录每个变更,否则将陷入混乱。
提倡小增量的迭代开发:每次改变系统一小部分,而不是试着让所有的东西在一个大发布版中都完成,尽量用一系列小的递增性的变化来组成一个大变化。
减少角色冲突,责权明确,建立开诚布公的工作氛围。
旨在验证程序正确的文档,通常应提供一套典型测试用例,以供使用者检查程序的基本功能是否完好。
重要原则:设计测试用例时应包括边界数据检测和负面数据检测。
No Silver Bullet----Essence and Accident in Software Engineering.没有银弹——软件工程的必然和偶然。
核心建议:
1.仔细地进行市场调研,避免开发可以买到的产品。
2.在建议软件需求时,将快速原型开发作为迭代计划的一部分。
3.有机地更新软件,随着系统的运行、使用和测试,逐渐添加越来越多的功能。
4.不断挑选和培养接触的概念设计人员。
软件要跟随用户的喜好而变化。
软件还要能跟上硬件的飞速发展。
软件开发核心理念:先建立简单的原型系统,在原型系统没有问题之后再进行大规模的开发。
向系统中添加复杂度应该通过两种方式来完成:
1.分层次,通过添加分层的模块或者对象;
2.增量式添加,由此保证系统总能正常运行。
面向对象的技术在开始学习阶段需要付出很多,但是一旦熟悉面向对象的编程方法之后,就可以子啊软件开发过程中受益匪浅。
面向对象方法不会让你的第1个项目开发就变得很快,第2个可能也不行.但是当你开发到第5个项目的时候,速度就会闪电般地加快。
我要明白:大多数经验丰富的程序员都有自己的程序库,这可以帮助他们在开发过程中复用大概30%的代码。而其一个大公司级别的复用程度可以达到75%。