本篇文章内容整理自《构建之法》 邹欣 著
专业术语整理
软件 = 程序 + 软件工程
- 源程序:就是一行行的代码。它们是建立在数据结构上的一些算法。
- 需求分析:把合适的需求梳理出来,然后逐步开展后续工作。
- 程序理解:团队的新成员要尽快读懂已有的代码。
- 软件维护:团队中的新老成员对在运行中软件,进行打补丁,更新维护。
- 国际化和本地化:软件要处理不同语言、不同地区的用户对用户界面和功能的不同需求
软件开发的不同阶段
- 玩具阶段:技术含量不高,但也有很多窍门。
- 业余爱好阶段:实现了一个简陋的模型,可以完成简单任务。
- 探索阶段:不断尝试新的设计,基本成型。
- 成熟的产业阶段:已经成型,考虑因素全面,安全性高
什么是软件工程
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上过程。
软件工程的领域:
- 软件需求分析
- 软件设计
- 软件构建
- 软件测试
软件的特殊性
- 复杂性:人类创造的最复杂的系统类型。
- 不可见性:软件工程师能直接看见源代码,但是源代码不是软件本身。
- 易变性:软件看上去很容易修改,但是正确的修改是一件很困难的事。
- 服从性:他要服从系统中其他组件部分的要求,服从用户的要求、行业系统的要求等。
- 非连续性:很小的变化,引起很大的变化。
软件工程与计算机科学的关系
计算机科学和软件工程的不同侧重点:
计算机科学 软件工程 发现和研究长期的、客观的真理 短期的实际效果(具体的软件会过时) 理想化的 对各种因素的折衷 确定性、完美、通用性 对不确定性和风险的管理,足够好,具体的应用 各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题 理论的统一 百花齐放的实践方法 强调原创性 最好的、成熟的实践方法 形式化,追求简明的公式 在实践中建立起来的灵感和直觉 正确性 可靠性 软件工程的知识领域
- 生命周期:软件需求、软件设计、软件构建、软件测试、软件维护
- 专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量。
- 理论基础:计算基础、数学基础、工程基础
创造“足够好”的软件
- 用户满意度:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率。
- 可靠性: 软件经常崩溃。。
- 软件流程的质量:软件团队和开发流程的问题太多,导致团队无法相互协作,按时交付软件。
练习讨论
p18-2
- 如何把需求分析写清楚,写明白?
- 如何去准确的区分必要需求和辅助需求?
- 如何根据自己的团队选择一个开发模式?
- 如何提高用户的体验?
- 如何进行软件测试,才能最大的保证软件的安全?
p18-3
手机应用软件,经朋友推荐,在应用商店下载,用了很长时间感觉不错,每次都是通过推送更新来修复bug。通过优惠活动来取得竞争的优势。