作为一名程序员,小伙伴们有没有想过这个简单的问题,“软件是什么?”
软件 = 程序 + 数据 + 文档 + (服务)程序 = 数据结构 + 算法
看完这两个直观的公式,是不是有一种恍然大悟的感觉,“哦,原来这样啊。”
再来看四条对“软件”的定义,比较枯燥,但概念是到位的:
软件是能够完成预定功能,达到预期性能的,可以执行的计算机指令;软件是能够让程序处理适当信息的数据结构;
软件是描述程序操作和使用的文档;
软件是一种逻辑实体,具备知识性的产品集合,是对物理世界的一种抽象,又是一种人脑智力的成果。
软件开发并不是一件轻而易举的事情,需要经历下面这些基本过程:
1)软件计划,确定产品定位和目标用户。这一步是需要甲方去规划和调研的。
2)软件需求分析:根据甲方需求,分析出甲方需要的产品功能。这一步是需要项目负责人(或者产品经理)去和甲方沟通的。
3)根据需求进行设计:包括概要设计和详细设计。这一步是需要项目负责人(或产品经理)做的,并且要正确地传达给开发人员。
4)编码并运行。这一步是需要开发人员去做的。
5)测试:确认甲方需求,对设计和结果进行验证。开发人员要进行单元测试,集成测试,如果有的测试团队的话,就需要站在甲方和用户的角度去测试整体产品是否符合要求并达到性能要求。
6)维护:保证软件能够在正式环境下运行,并且对一些缺陷(bug)进行修正,或者对功能进行完善,或者对性能进行改进,不断迭代软件版本。
既然软件开发的过程是有难度的,是需要付出时间和精力的,那就有必要遵循一些原则,否则开发成本就会变得很昂贵,开发周期就会拖延很长时间。
原则一: Don'tRepeat Yourself。
直译叫做“不要重复你自己”,还有一个耳熟能详的版本,“不要重复造轮子”。
在你一开始进入软件开发这个领域后,就一定要注意,把你自己写过的一些解决方案汇总到一起,定期梳理一遍,写点文档,不断重构,使它们成为一把把瑞士军刀。如果可以的话,把它们开源出来,服务更多的开发者。
有了自己的工具库后,当你下次遇到类似的需求时,就可以直接拿出来用,省去不少时间。
你还应该善于利用那些业界已经开源出来的成熟的技术方案,比如下面这些。