大话软件
1.为什么这么多专业术语?
软件企业 = 软件 + 商业模式
软件 = 程序 + 软件工程
程序 = 数据结构 + 算法
程序,即源程序。就是一行行的代码,是建立在数据结构上的算法。
源代码管理(Source Code Control),也叫配置管理(Software Configuration Management)
质量保障(Quality Assurance)
通过工具、流程和文档保证程序的正确性。
软件测试(Test)
软件功能的验证过程。
需求分析(Requirement Analysis)
分析客户需求,梳理出合适的需求,逐步开展后续工作。
程序理解(Program Comprehension)
读懂已有的程序,了解程序设计。
软件维护(Software Maintenance)/ 服务运营(Service Operation)
修复软件bug、给软件打补丁、维护服务的正常运行。
软件生命周期(Software Life Cycle,SLC)
软件项目管理(Project Management)
用户体验(User Experience)
好的软件,之所以为好的软件,不是由于它的功能比同类多或者好,而往往是因为它让人感觉到好用。成功的软件,往往赢在用户体验。
国际化和本地化(Globalization & Localization)
针对不同语言、不同地区、不同的用户习惯于需求而做的处理。
2.软件工程到底为何物?
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件开发流程:开发、运营、维护软件过程中的技术、方法、习惯、思想等统一到一个体系,目的是提开发、运营、维护的效率,提高软件质量、用户满意度、可靠性和可维护性。
工具的存在是为了保证流程的有效运作。
流程+工具,相辅相成。
3.软件开发难在哪?
a)复杂性
软件代码行数以千计、数以万计……
软件的各模块之间的以来关系随着模块的增多迅速增加。
b)不可见性
软件工程师能直接看见源代码,但是源代码不是软件本身。
软件出现错误,只能看到程序出错的一瞬间留下的痕迹(错误码、大致的目标代码、错误信息),很难复现程序到底出了什么问题。
c)易变性
修改软件不修改硬件简单
d)服从性
软件不能独立存在,需要运行在硬件上。
e)非连续性
微小的输入变化,可能会引起输出的极大变化。