作为一个程序员,首先需要了解的是事情是我们编写的软件服务的对象是用户,所以我们必须坚持以用户的使用方便程度来评判你写的程序是否完美。当然,没有十全十美的程序,但是只要用户使用方便我们就说这个程序是完美的。所以,用户才是软件的核心。
软件的结构是什么,没有具体的解释。但是可以确定的是,软件=程序+软件工程。而程序=数据结构+算法。
软件是什么?软件就是大量的程序的集合体,从而扩展到一个满足各种功能的应用软件,在扩展到一个能保证维修的软件服务。那程序又是什么,简单的解释,程序就是一行行的代码的集合体,而软件的一个个功能的实现就是这一行行的代码合起来的结果。一个复杂的软件不但要有合理的软件架构,软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系,编译参数,链接参数等等。
软件工程是什么?软件工程就是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上的过程。软件工程包括下列领域:软件需求分析,软件设计,软件构建,软件测试和软件维护。开发软件时有一个流程,他的目的就是可以提高软件开发,运营,维护的效率,并提高软件的质量,用户的满意度,可靠性和软件的可维护性。
软件开发具有下面五个难题:
- 复杂性。任何一个功能的实现都不是想象的那么简单,往往需要程序员想上好几天甚至几个月,加上大量的实验以及改良浓缩出来的几百行,几万行甚至几百万行代码,随着系统越来越复杂,代码的需求量甚至更多。
- 不可见性。由于源代码是封装的,而用户看到的是软件而不是源代码,所以一旦软件出现错误,导致的就是无法判断出程序出现了什么错误。
- 易变性。由于用户会提出各种各样的要求,所以程序必须是可变的。
- 服从性。软件不能独立存在。他总是要运行在硬件上面,他要服从系统的中其他组成部分的要求,他还要服从用户的要求,行业系统的要求。
- 非连续性。许多软件都没有增加输入的特性,有时输入上的很少的变化,回引起输出上的很大的变化。
关于个人软件开发流程:
单元测试。单元测试就是解决自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,从而保证模块的质量能得到稳定的,量化的保证。
创建单元测试的主要步骤:
1.设置数据
2.使用被测试类型的功能
3.比较实际结果和预期的结果
单元测试需要注意的事项:
1.必须有最熟悉代码的人来写
2.单元测试要快
3.应该覆盖所有代码路径
4.应该集成到自动测试的框架中
5.必须和产品代码一起保存和维护
回归测试。目的是验证新的代码的确改正了缺陷,同时验证新的代码有没有破坏模块的现有功能,有没有Regression。单元测试是回归测试的基础。
软件工程师的任务清单:
1.计划,估计这个任务需要多长时间
2.开发 分析需求,生成设计文档,设计复审,代码规范,具体设计,具体编码,代码复审,测试
3.记录用时
4.测试报告
5.计算工作量
6.事后总结
7.提出过程改进计划
这是我对软件工程的初步体验。