主要内容
软件生命周期SDLC
软件开发模型:瀑布型、增量型、V型、原型、螺旋型
敏捷开发与极限编程
软件配置管理SCM
版本控制系统VCS与Git
广义软件构造:design-programming/refactoring-debugging-testing-build-release
狭义软件构造:validate-compile-link-test-package-install-deploy
软件生命周期SDLC
从0到1:
从1到n:更新迭代
传统的软件开发模型
最基础的两种:线性与迭代
1.瀑布式:
2.增量式:
3.V模型:
4.原型化:
5.螺旋型:
敏捷开发
通过快速迭代与小规模的持续改进来快速适应变化。
极限的用户参与、极限的小步骤迭代、极限的确认/认证
软件配置管理SCM与版本控制系统VCS
软件配置管理用于追踪和控制软件的变化,核心是版本控制和基线的确立,要管理的内容有文档、配置、代码、软件工具及其环境。
软件配置项SCI:软件中发生变化的基本单元
基线:软件持续变化过程中的稳定时刻(多个源代码文件的一组版本或文档的一个稳定状态)
配置管理数据库CMDB:存储软件的各配置项随时间发生变化的信息和基线
版本控制工具需要提供的内容:
对个人:回滚到上一个版本、比较两个版本的差异、备份软件版本历史、获取备份、合并;
对于团队来说还需要做到在多个开发者之间共享协作、记录每个开发者的动作。
版本控制系统的分类:
本地版本控制系统:仓库存储在开发者本地机器上,无法共享和协作
集中式版本控制系统:仓库存储在独立的服务器中,支持多开发者的协作
分布式版本控制系统:上两个地方都有
Git
Git的所有操作都在对象图上进行,包含了Git项目的历史,是一个有向无环图。
广义软件构造
1.programming:
(1)编程语言:在IDE这个集成开发环境中,包含了源代码编辑器、智能代码补全工具、代码重构工具、文件管理工具、库管理工具、图形化用户界面构造器、编译器、解释器、自动化build工具、版本控制系统、外部第三方工具
(2)建模语言:UML(必学)
(3) 配置语言:改变程序运行时行为、分离稳定与不稳定部分 XML,JSON
2.Review and static code analysis代码评审
正式的代码评审会议、轻量级的代码评审(结对编程)、利用工具的静态代码分析(CheckStyle)
3.Dynamic code analysis/profiling
动态分析:执行程序,观察其时空复杂度,特定指令或函数的调用频率和持续时间
4.Debugging and Testing
前者发现错误,后者解决错误,均不会提高代码质量,只能解决缺陷,想要质量只能从需求分析、设计和编程上入手。
5.Refactorinh
在不改变功能的前提下优化代码,使代码更加容易改变或维护。之后要运行单元测试进行检测。
狭义的软件构造(build)
使用build的场景:传统编程语言、解释型语言、基于网站的语言、单元测试、静态分析、文档
build的过程:
build工具:Make、Ant、Maven、Gradle、Eclipse IDE