第一章概论
1.1 软件=程序+软件工程
程序=数据结构+算法 二叉树 遍历 应用软件 软件服务 源程序 数据 静态 输入
软件架构 软件设计与实现 软件构建 源代码管理=配置管理 软件测试 需求分析 程序理解 软件维护=服务运营 软件的生命周期 软件的项目管理
软件工程=软件+商业模式
软件开发的不同阶段 1玩具阶段2业余爱好阶段3探索阶段4成熟的产业阶段
1.2软件工程是什么
软件开发流程
1.2.1软件的特殊性
系统软件 应用软件 恶意软件
复杂性 不可见性(cpu核) 易变性 服从性 非连续性
1.2.2软件工程与计算机科学的关系
微软学术搜索 计算理论 信息和编码理论 算法和数据结构 形式化方法 程序设计语言
计算机体系结构 并行计算和分布式系统 实时系统和嵌 入式系统 操作系统 计算机网络 科学计算 安全和密码学 人工智能
模式识别 数据挖掘 计算机图形学 计算机视觉 数据库和大规模数据处理 万维网 自然语言处理和语音 人机交互 软件工程
1.2.3软件工程的知识领域
计算基础 工程基础 数学基础 霍夫斯塔特定律
1.2.4软件工程的目标——创造足够好的软件
用户满意度 可靠性 软件流程的质量 可维护性
bug
p18-2
(1) 复审者和开发者会不会有产生分歧的地方?如何处理?
(2)对于不同的用户需求不同时应该如何取舍?
(3)团队协作能力那么重要怎么知道自己适合团队中的什么位置?
(4)为什么现在很多软件已经足够满足用户需求还是时常更新呢?
(5)会不会产生处理不了的bug?
p18-3
分析特点
游戏软件一般比较重视可玩性新鲜感
手机应用一般比较重视用户体验和功能性优化
学校内部的软件一般比较重视数据的严谨和统计
(1)通过广告推广,是为了盈利,有的软件通过增加用户数据接广告推广盈利
(2)下载,高中,吸引人让人很难离开这些软件