1、软件发布方法,启明星辰信息技术股份有限公司,林宝晶 Lin_,Agenda,软件发布方法过程 源码管理 创建(Build) 模块集成 缺陷管理 变更管理 版本发布,软件发布过程,配置管理 创建 (Build) 模块集成 缺陷管理 变更管理 发布版本,配置管理(一),定义 配置管理要对软件生存期内各阶段的文档、实体和最终产品的演化和变更进行管理;同时要解决变更的标识、控制和发布等问题。目的是使对设计变更的管理制度化,从而提高开发效率、减少错误,保证产品的质量。,配置管理(二),概念: 软件配置项:在软件生命周期内,可以相对独立的开发的一个程序实体或者文档。 里程碑:就是软件开发过程中的“阶段”概
2、念。 基线:是软件开发过程中最重要的里程碑,不过基线强调的是一个开发阶段到达里程碑时的结果和内容。 受控库:是软件开发过程中,其修改权限受到控制的文档库和程序库,其中基线库和产品库,特别是产品库的修改权限将受到严格的控制,即使是授权修改的人,在修改前还必须得到批准。 基线库:是受控库中一些特别重要的库,如需求(基线)库和产品(基线)库。 产品库:是存放软件最终产品(即产品基线)的库,基于它的重要性,对它的修改将受到特别的控制。 产品基线是最初批准的产品配置标识。,配置管理(二),文档标识:主要分成三种,一是项目管理文档,主要包含立项说明书、配置计划、开发计划、测试计划、评审报告等。二是设计文档
3、,主要设计和编码阶段产生的文档,例如概要设计文档、详细设计文档、源码和可执行程序。三是客户文档,主要有用户操作手册、系统安装手册、系统维护手册。,架构的起源,架构的目的,可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。 安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。 可扩展性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。 可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整
4、。 可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费,软件需求分类,软件需求的例子,架构视图,什么是架构视图一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。,架构设计的视图,逻辑视图(一),软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等 当采用面向对象的设计方法时,逻辑视图即对象模型。 设计满足功能需求的架构 逻辑视图关注功能,不仅包括用户可见的功能,还包括为实现用户
5、功能而必须提供的“辅助功能模块“;它们可能是逻辑层、功能模块等,逻辑视图(二),开发视图(一),开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。 描述软件在开发环境下的静态组织 设计满足开发期质量属性的架构,开发视图(二),处理视图(一),处理视图关注进程、线程、对象等运行时概念,以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、
6、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题。 描述系统的并发和同步方面的设计。,处理视图(二),物理视图(一),物理视图。物理视图关注“目标程序及其依赖的运行库和系统软件”最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。 描述软件如何映射到硬件,反映系统在分布方面的设计。,物理视图(二),架构的评价要素(一),满足用户的需求。这是最重要的一点,一个软件如果不能够满足用户的需
7、要,设计的再好,采用的技术再先进,也没有任何的意义。所以这一点非常的朴实,但却是软件质量的第一个评判标准。 合理进度、成本、功能关系。软件开发中所有的管理都是围绕着这几个要素在做文章的,如何在特定的时间内,以特定的成本,开发出特定功能的软件。三者之间存在一种微妙的平衡。一个高质量的软件的开发过程中,项目成员一定能够客观的对待这三个因素,并通过有效的计划、管理、控制,使得三者之间达成一种平衡,保证产出的最大化。,架构的评价要素(二),具备扩展性和灵活性,能够适应一定程度的需求变化。当今的社会已经变成一种变化速度极快的设计了。变化就会对软件产生冲击,所以一个质量优秀的软件,应该能够在一定程度上适应这种变化,并保持软件的稳定。 能够可持续的发展。很少有软件组织只开发一个软件的,所以,一个优秀的软件在开发完成后,可以形成知识沉淀,为软件组织的长期发展贡献力量。这是一个优秀的软件应该要能够做到的。,设计原则,“开闭”原则(OCP) 里氏代换原则(LSP) 依赖倒转原则(DIP) 接口隔离原则(ISP) 组合/聚合复用原则(CARP) 迪米特法则(LoD),