程序=数据结构+算法
软件开发的不同阶段
1、玩具阶段2、业余爱好阶段3、探索阶段4、成熟的产业阶段
软件工程是把系统的、有序的、可量化的方法运用到软件的开发、运营和维护的过程。
软件的特殊性
1、复杂性2、不可见性3、易变性4、服从性5、非连续性
一个好的软件体现在
1、用户满意度2、可靠性3、软件流程的质量4、可维护性
好的单元测试的标准
1、单元测试应该在最基本的功能/参数上验证程序的正确性。
1、单元测试必须有最熟悉代码的人来写。
3、单元测试过后,机器状态保持不变。
4、单元测试要快。
5、单元测试应该产生可重复、一致的结果。
6、单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
7、单元测试应该覆盖所有代码路径。
8、单元测试应该集成到自动测试的宽家中。
9、单元测试必须和产品代码一起保存和维护。
初级软件工程师成长的几种方式:
1、积累软件开发相关的知识,提升技术技能。
2、积累问题领域的知识和经验。
3、对通用软件的设计思想和软件工程思想的理解。
4、提升职业技能。
5、实际成果。
软件开发的工作量和质量的衡量
1、项目/任务的大小。2、所花时间的多少。3、项目/任务的质量。4交付的时间。
在过去我很少在意上面所述的咩容,我在编程的时候,不分阶段,也不在意质量,还有经常延缓交付时间,这使我逐渐养成了非常严重的毛病。
我个人的学习进展开始与别人拉开了距离,归其原因有以下几点:
开发过程不进行代码测试,导致漏洞百出,查找改正也跟不上进度。
由于前面浪费了大量时间,后面无法按时完成,从而造成无法按时交付。
另外就是我编写的软件能实现基本功能,但是会有很多bug.
我需要逐渐改掉这些毛病,首先要做的就是,编程要细心,多注意细节,总结经验,部分复杂算法要多做测试,再写入程序。以此提高个人的编程效率,从而能按时交付软件。有多处的时间,才能更好的完善软件,减少bug。