程序开发中源代码版本的管理
TortoiseSVN这个软件可以管理项目版本。
不过如果只是在学校的话,还是自己一个人开发,那就不用什么版本管理软件了,自己每次修改完后记得保存一下就行了。
版本管理软件也需要你将最新的代码发布到服务器上,所以如果你忘了发布,那这个软件就没有什么意义了。
所以建议你还是每次修改后都做个记录。
项目管理在软件开发中的应用有哪些?
如果用两个字概括当前社会的特点,那就是“变化”,而这种变化在信息产业中体现得尤为突出,技术创新速度越来越快,用户需求与市场不断变化,人员流动也大大加快。
在这种环境下,企业需要应对的变化以及由此带来的挑战大大增加,也给管理带来了很多问题和挑战。
软件行业是一个极具挑战性和创造性的新行业,管理上没有成熟的经验可供借鉴。
而项目管理应该说对于软件企业,尤其是那些以应用开发为主的软件企业,是行之有效的管理方法。
因此,项目管理在软件开发中的应用日益受到重视。
项目管理的两个问题 1、什么是项目管理? 项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。
2、为什么要有项目管理? 没有项目管理,项目也有可能成功。
但没有管理的项目,很难保证项目的利润空间,对公司来说,亏损的风险就大。
所以我们要有项目管理,以保证公司在总体上是盈利的,注意不是每一个项目都要盈利。
另外,有了项目管理,就有了管理改进的基础,无论刚开始的项目管理多么糟糕,只要有管理,就有了改进的可能性,至于能不能得到改进,以及改进的快慢,则取决于两个因素:一个是人,特别是各级管理者;另一个是利益。
关键是“利益”,准确的说是“利益的分配”,在权责利明确的前提下,人才能充分的发挥作用。
还需要指出的是“利益”是多元的,这里的多元不仅指利益的具体形式,而且指利益的受众是多元的,包括客户方相关人员个人的利益。
3、项目管理的发展与现状。
今天,项目管理作为一种现代化管理方式在国际上已获得了广泛的应用,从最初的国防、航天、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。
随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特点、应用对象也各不相同。
当前,越来越多的企业和组织在内部推广项目管理的理论方法及管理模式,如果都采用项目管理软件进行管理,效果就更加明显,可以节省大量的资源和财富。
国外90%以上的项目管理都采用软件进行,但我国在这方面的应用还不到10%.新世纪项目管理在中国的迅速兴起,给软件企业的发展带来了前所未有的发展机遇。
项目管理在软件开发中的应用的成因 随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。
各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。
从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。
同时,随着软件开发规模及开发队伍的逐渐增大,软件开发不再是向过去那样一二个开发人员即可解决的事情。
迫切需要一种开发规范来规范每个开发人员、测试人员与支持人员的工作,每个项目组成员按约定的规则准时完成自己的工作。
同时采用规范化管理,专业分工也可以降低对开发人员的要求,从而降低产品研发成本。
软件开发是一项复杂的系统工程,牵涉到各方面的因素,实际工作中,经常会出现各种各样的问题,甚至面临失败。
如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
早在20世纪60年代中期,人们就发现软件的生产出现了“问题”,主要表现在生产过程不规范,缺乏管理。
后来,人们在软件工程方法学中引入了工程的概念、原理、技术和方法,这种思想在一定程度上解决了软件生产过程中遇到的问题。
但是直至80年代还是没有提出一套管理软件开发的通用原则,软件管理不善的问题依旧在大范围内存在。
目前的软件开发正逐步趋向于复杂化、多元化,大多数开发团队中都会出现同时开发多个版本、开发/维护工作并存、多地点同时开发等情况,给软件开发管理带来了前所未有的困难。
如果管理不善,必将造成版本混乱,各个开发人员的工作相互交叉、干扰,整个开发团队的工作在一种无秩序的不良状况下运行,严重影响软件产品开发的进度和质量。
因此,随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。
而项目管理技术的发展与计算机技术的发展是密不可分的,随着计算机性能的迅速提高,大量的项目管理软件涌现出来。
它们可以用于各种商业活动,提供便于操作的图形界面,帮助用户制定任务、管理资源、进行成本预算、跟踪项目进度等。
软件项目管理常见问题及解决方案 对于软件开发项目中,经常出现两种极端情况,一...
什么叫版本控制工具
现在的软件项目开发中,必然涉及版本控制(Revision Control)工具。
没有使用版本控制工具的开发工作,有人形容就如同生活在“黑暗时代”。
版本控制工具是项目开发中必不可少的,以此进行的版本控制可以确保在软件项目开发中,不同的开发人员所涉及的同一文档都得到更新。
关于软件版本控制 如果在开发团队中没有使用版本控制,多个开发人员共同负责同一个软件文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。
版本控制的目的是实现开发团队并行开发、提高开发效率的基础。
其目的在于对软件开发进程中文件或目录的发展过程提供有效的追踪手段,保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访问和修改,达到有效保护企业软件资产和知识产权的目的。
版本控制的功能在于跟踪记录整个软件的开发过程,包括软件本身和相关文档,以便对不同阶段的软件及相关文档进行表示并进行差别分析,对软件代码进行可撤消的修改,便于汇总不同开发人员所做的修改,辅助协调和管理软件开发团队。
Linux下的版本控制版本控制在空间上可以保证完成集中统一管理,解决一致性和冗余问题。
在开发工作中,开发人员在提交软件代码的时候一般采用服务器/客户端方式,尽管开发人员可以在自己的本地留有备份,但最终唯一有效的只有服务器端的程序代码;在时间上全程跟踪记录工具将会自动记录开发过程中的每个更改细节,和不同时期的不同版本。
这在一定程度上可以解决冗余、事务性处理并发性问题。
项目管理人员可以通过版本控制对团队中的不同人员,实施操作权限的控制。
对于不同角色的开发人员,对软件的不同部分可以定义不同的访问权限。
这在一定程度可以解决软件安全性问题。
版本控制工具的使用,可以减轻开发人员的负担,节省时间,同时降低人为错误。
...
软件开发文档的分类
1. 《功能要求》 -- 来源于客户要求和市场调查,是软件开发中最早期的一个环节。
客户提出一个模糊的功能概念,或者要求解决一个实际问题,或者参照同类软件的一个功能。
有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。
这份文档是需求分析的基础。
2. 《投标方案》 -- 根据用户的功能要求,经过与招标方沟通和确认,技术人员开始书写《投标方案》,方案书一般包括以下几个重要的章节: 前言 -- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。
需求分析 -- 项目要求、软件结构、功能列表、功能描述、注意事项等。
技术方案 -- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。
项目管理 -- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。
技术支持 -- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。
系统报价 -- 软、硬件平台报价列表、软件开发费用、系统维护费用等。
项目进度 -- 整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。
3. 《需求分析》 -- 包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等。
以《功能要求》为基础,进行详细的功能分析 ( 包括客户提出的要求和根据开发经验建议的功能 ) ,列出本产品是什么,有什么特殊的概念,包括哪些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。
这里的功能描述跟以后的使用手册是一致的。
4. 《技术分析》 -- 包括技术选型、技术比较、开发人员、关键技术问题的解决、技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。
以《需求分析》为基础,进行详细的技术分析 ( 产品的性能和实现方法 ) ,列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决 ,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。
5. 《系统分析》 -- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、软件开发需要考虑的各种问题等。
以《需求分析》为基础,进行详细的系统分析 ( 产品的开发和实现方法 ) ,估计开发期间需要把什么问题说明白,程序员根据《系统分析》,开始在项目主管的带领下进行编码。
6. 《数据库文档》 -- 包括数据库名称、表名、字段名、字段类型、字段说明、备注、字段数值计算公式等。
以《系统分析》为基础,进行详细的数据库设计。
必要时可以用图表解说,特别是关系数据库。
7. 《功能函数文档》 -- 包括变量名、变量初值、功能,函数名,参数,如何调用、备注、注意事项等。
以《系统分析》为基础,进行详细的说明,列出哪个功能涉及多少个函数,以便以后程序员修改、接手和扩展。
8. 《界面文档》 -- 包括软件外观、界面素材、编辑工具、文件名、菜单、按钮和其它界面部件的要求,这里与软件完成后的运行界面是一致的。
9. 《编译手册》 -- 包括服务器编译环境、操作系统、编译工具、 GNU 的 C++ 编译器版本信息、目录说明、程序生成、源程序文件列表、 Makefile 配置及其相关程序的对应关系列表。
客户端的编译过程、编译结果、编译示例、编译环境、操作系统、编译工具、源文件列表和制作安装程序的过程。
10. 《 QA 文档》 -- 包括产品简介、产品原理、产品功能列表、功能描述、功能流程、执行结果、数据库结构、测试要求等,提供给软件测试人员使用。
11. 《项目总结》 -- 包括项目简介、项目参与人员和开发时间、项目风险管理过程、项目功能列表、项目结构特点、技术特点、对项目的升级建议、对以后的项目的建议、人员素质情况等。
1. 《产品简介》 -- 包括公司背景、产品概念、适用范围、产品功能、功能特点、运行要求和公司联系地址。
2. 《产品演示》 -- 包括公司简介、产品背景、产品描述、产品特点、产品作用、适用范围、使用分析、功能模块、解决问题、合作伙伴、成功案例等。
一般用 Power point 或者 VCD 录制软件实现。
3. 《疑问解答》 -- 列出用户关心的问题和处理方法。
用于解答软件的操作功能和解决用户的疑难问题。
4. 《功能介绍》 -- 以《需求分析》为书写基础,包括软件介绍、软件结构、功能列表、功能描述和公司联系地址。
5. 《技术白皮书》 -- 以《技术分析》为书写基础,包括功能实现、技术选型、关键技术问题的解决、技术方案特点、技术升级方向等。
6. 《评测报告》 -- 第三方权威评测报告。
包括评测目的、评测范围、评测环境、评测内容、实测数据、性能表现、结果分析和评测总结等。
7. 《安装手册》 -- 包括系统环境、运行平台、产品安装过程、初始环境设置、安装记录等。
8. 《使用手册》 -- 包括产品简介、功能列表、功能描述和解释、功能操作、客户服务和联系方式等。
9. 《维护手册》 -- 包括产品简介、系统须知、初始...
统一软件开发过程的核心工作
(Core Workflows)RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。
尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被访问。
9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。
分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。
分析设计的结果是一个设计模型和一个可选的分析模型。
设计模型是源代码的抽象,由设计类和一些描述组成。
设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能。
设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化,该视图中省略了一些细节,使重要的特点体现得更加清晰。
体系结构不仅仅是良好设计模型的承载媒介,而且在系统的开发中能提高被创建模型的质量。
4. 实现(Implementation) 实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现, 识别并确 认缺陷在软件部署之前被提出并处理。
RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。
测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。
6. 部署(Deployment) 部署工作流的目的是成功的生成版本并将软件分发给最终用户。
部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。
在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。
7. 配置和变更管理 (Configuration & Change Management)配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。
配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。
工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。
同时也阐述了对产品修改原因、时间、人员保持审计记录。
8. 项目管理(Project Management) 软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。
其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
9. 环境(Environment) 环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。
环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。
软件项目管理研究及在项目开发中的应用是什么?
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定、持续地发展。
软件项目管理的特殊性表现在:①软件产品是无形的。
软件项目管理者不能像其他项目管理者那样,能够从被开发的产品上看到进度、已经完工的部分是否与设计相符等,他们只能从其他人所提交的文档中来掌握相关的情况。
②没有标准的软件过程。
对软件过程的理解虽然已经取得了长足的进步,但是软件管理者还是不能确切地预见某一软件过程何时有可能出现问题。
③大型软件项目常常是“一次性的”。
由于软件项目与一个国家、地区的经济政策相联系,与用户的发展战略、经济实力、管理水平相适应,软件项目的开发过程中所采用的技术和管理方式与当时的计算机和通信技术有关,因此大型软件项目一般都不同于早先的项目,管理者纵使有在计划中降低不确定性的经验,也很难较准确地预见问题的出现,以前的经验教训也较难在新项目中发挥大的作用。
从目前国内外的软件企业来看,“软件危机”的阴影仍然存在,软件行业的项目实施情况一直很不乐观。
研究表明,软件项目失败的原因主要有两个:一是应用项目的复杂性;二是缺乏合格的软件项目管理人才。
实践证明,缺乏有效的项目管理是导致软件项目失控的直接原因。
软件项目管理的方法研究 从软件项目的管理角度来看,项目的直接责任人是软件项目经理。
也就是说,项目经理是项目整体管理的责任人,要在规定的时间范围内,在不超过经费的情况下,能够达到或超过项目干系人的愿望。
项目整体管理围绕项目计划进行,主要过程有计划制定、计划执行和计划变更控制。
项目经理在以下几个方面对软件项目进行全面的管理: (1)制定项目计划。
软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作的文件。
它体现了对客户需求的理解,是开展项目活动的基础,是软件项目跟踪与监控的依据。
项目计划主要由全局计划和下属计划两大部分组成。
在上级主管签发项目任务书后,项目经理立即和核心成员组成一个项目规划小组,对项目进行规划,得到项目的全局计划,主要内容有项目的目标与范围、人力资源计划、软件资源和硬件资源计划、财务计划、整体任务进度计划。
这一部分计划要上一级机构领导审批。
下属计划一般包括配置管理计划、质量管理计划、阶段开发计划和测试计划等,因为项目计划与项目执行应该是相互渗透的,因此在下属计划制定时,项目经理必须把握的原则是:某一部分的工作由谁负责,则该部分的计划就由谁来制定;下属计划部分一般由项目经理审批即可。
(2)制定开发过程。
软件开发的风险之所以大,是由于软件过程能力低,其中关键的问题在于软件开发组织不能很好地管理其软件过程,为此必须强调和加强软件开发过程的控制和管理。
软件项目的开发过程主要有系统调研、需求分析、概要设计、详细设计、编码、测试、实施与维护等,但对于不同的软件项目,虽然大体上过程相同,但不同的项目其每一个过程所包含的一系列具体的开发活动(子过程)千差万别,而且不同的项目组采用不同的开发技术、使用不同的技术路线,其开发过程的侧重点亦不一样。
因此项目经理在软件项目开发前,根据所开发的软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发是项目成功的基本保证。
软件开发过程要做到稳定、可控,真正对项目起到规范和约束作用,关键在于以下几个方面:①整个开发过程以流程的形式表示,过程简单、清楚。
②重要的过程以子流程表示,对总体流程进行细化和补充。
③定义总体流程和各子流程进入的必备条件和结束条件。
④明确流程结束时需要考核的内 容。
⑤所有前面四项通过评审和批准。
考试大提供 (3)加强过程控制。
软件项目的开发和实施往往都是在“变化”中进行的。
可以毫不夸张地说,软件项目的变化是持续的、永恒的,找不到不会变化的软件项目。
需求会变,技术会变,系统架构会变,代码会变,甚至连环境都会变;项目经理在完成相应的项目计划和准备后,其主要任务就是进行过程控制。
软件项目的过程控制包括过程管理和变更控制。
过程管理主要是依据项目计划对软件项目进行监控,能顺利进行过程管理的关键是项目管理制度化。
制度化的主要内容有:①对项目组成员的工作定期检查。
②要求所有的开发过程以文档形式表示。
③制定各种文档的模板,并要求在项目的整体开发过程中,以统一的模板来撰写文档。
④项目组成员在开发过程中严格按照规定的流程进行,若更改过程,必须按变更管理的规程进行。
如何在受控的方式下引入变更、监控变更的执行、检验变更的结果、最终确认并固化变更,并使变更具有追溯性,这一系列问题直接影响项目的成败。
为此,变更的控制关键要从以下两点人手:...
转载请注明出处51数据库 » 软件开发中的版本管理