《构建(第三版)》第一章学习

第1章 概论

软件=程序+软件工程

1、程序=数据结构+算法 软件企业=软件+商业模式
2、软件开发分为几个不同的阶段:玩具阶段、业余爱好阶段、探索阶段、成熟的产业阶段。

软件工程是什么

  • 软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

  • 软件工程包括很多领域:软件需求分析、软件设计、软件构建、软件测试和软件维护领域等。

  • 软件开发特点:

    • 复杂性:软件可以说是人类创造的最复杂的系统类型。
    • 不可见性:无法看到机器内部源代码如何运行
    • 易变性:正确修改软件很困难
    • 服从性:服从系统中其他组成部分的要求,还要服从用户的要求、行业系统的要求服从用户、行业系统的需求
    • 非连续性:输入很小的变化,可能会引起输出上极大的变化
  • 计算机科学与软件工程的区别:

  • 软件工程的目标:创造“足够好”的软件。
    软件的Bug多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。

软件工程的学习目标

  1. 研发出符合用户需求的软件说明: 要通过实际的工作收集、 推导、 提炼需求,并在软件发布后通过实际数据验证需求的确被满足了。 需求来自于实际, 而不是自己想象出来的“需求”或者人云亦云的需求。
  2. 通过一定的软件流程, 在预计的时间内发布“足够好”的软件说明: 这个软件不是急于求成完成的, 而是经历了一定的软件流程, 通过全体团队成员的努力, 长期逐步完成的。
  3. 通过数据和其他方式展现所开发的软件是可以维护和继续发展的说明: 例如, 对用户需求有详细的分析, 包括对将来这类软件发展的趋势的分析。 主要功能都有设计文档,源代码完整,有修改记录,并有最后版本。关键模块有可以执行的单元测试、压力测试脚本等等。对于已知的bug和将来的工作都有详细的记录。

目前流行的源程序版本管理软件和项目管理软件都有哪些,各有什么优缺点?

Microsoft TFS
微软的团队代码管理服务平台Team Foundation(通常记作“TFS”)是一种为 Microsoft产品提供源代码管理、数据收集、报告和项目跟踪,而为协作软件开发的项目。

  • 优点:TFS功能非常强大。微软对于个人或小团队推出了免费的TFS Express版,功能齐全,主要提供如下功能:源代码管理、工作项跟踪、自动化生成、敏捷任务版。
  • 缺点:搭建、维护tfs比较复杂,硬件要求也比较高。个人用起来一般也就主要用其源码管理功能

Github
GitHub是基于git实现的代码托管。git可能是目前最好用的版本控制系统了,非常受欢迎。

  • 优点:GitHub可以免费使用,并且快速稳定。 适合分布式开发,强调个体;任意两个开发者之间可以很容易的解决冲突;离线工作,管理代码成本低,不需要依赖服务器;部署方便,基本上下个命令就可以用;良好的分支机制,可以让主干代码保持干净。Git对程序源代码进行差异化的版本管理,代码库占极少的空间。易于代码的分支化管理。
  • 缺点:代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。不支持中文,图形界面支持差,使用难度大。

Trac
Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。

  • 优点:Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件。Trac有良好的扩充性。
  • 缺点:不支持多项目;中文化不完整;核心功能很少,需要安装很多插件。

BUGZILLA:
Bugzilla 是一个开源的缺陷跟踪系统,它可以管理软件开发中缺陷的提交(new)、修复(resolve)、关闭(close)等整个生命周期

  • 优点:BUGZILLA不收费,有中文版支持;具有强大的检索功能以及完备的产品分类方案和细致的安全策略;用户界面友好;版本间向下兼容。
  • 缺点:BUGZILLA只能管理缺陷

Apple XCode:
Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X、iOS的应用程序。

  • 优点:编译速度极快,操作起来比较快速和轻松; 支持开发人员使用 C、C++、AppleScript 和 Java等多种语言。
  • 缺点:更新版本后,某个插件可能会失效。
posted @ 2019-11-05 22:22  1993Fxn  阅读(141)  评论(0编辑  收藏  举报