浅谈软件工程的管理活动

浅谈软件工程的管理活动

  管理是我们生活中很普通的一个概念,意思是在做某件事的时候事前有详细周密的规划,过程中有切实的监管,根据实际情况调整策略,以达到最优化的效果。有道是“凡事预则立,不预则废”,任何活动只有计划周详,管理得当,才能收获想要的结果。在软件工程领域更是如此。软件工程中的项目管理是为了使软件项目能够按照预定的成本、进度以及质量顺利完成,而对人员产品和资源进行的分配和调整过程,我们要做到的就是使得整个软件工程始终处于管理者的控制之下,以预定时间顺利交付给用户高质量的产品。和生活中的其他活动略有不同的是,软件开发是一个知识性的活动,过程中的问题不易预料,创新点的出现无法预期,技术突破具有很大的偶然性,而且用户的需求也会随时改变,因此软件工程要求管理者具有良好的素养以及开发人员具有很强的执行力。有过开发经验的人很容易理解软件工程管理的重要性,我们以本学期的编译原理实验为例,虽然是一个人的项目,不涉及到人员管理,仅仅是时间管理和工作量估计,但实际上我们做得并不好,首先是对工作量的估计不够,往往是在实际写代码的过程中才发现陷入了时间黑洞,工作量远超计划,这是其一。其二是时间分配,我们习惯了将任务推到截止日期之前再完成,这样的破釜沉舟确实会节省一些时间,使得我们在截止日期之前能够有较高的效率,但一旦出现意外情况,很容易错过时间无法完成任务,而且,这样孤注一掷的计划也导致项目完成的质量不高。当然,这只是我们在学校完成一项课程作业的情况,和实际的软件开发过程不同,这样的类比也稍欠妥当,但大致意思如此。本学期的另一门课程是数据库课程设计,由于是两个人合作完成一个网站的开发工作,这就和实际的软件开发过程较为一致了,过程中也涉及到了项目规划,实际开发,文档撰写等环节,可以给我们很多启发。两个人的工作就要涉及到工作任务的分配,这也是软件工程管理中最重要的部分。软件开发工作分出不同的模块,这就要求相应的工作人员具有很强的技术专业性,各有侧重,因此我们需要对开发人员的能力有一个全面的了解,才能做出合理高效的分工。我们组在网站开发的过程中就遇到了分工不明确的问题,导致后期做了很多重复的工作,大大降低了开发效率。

  通过以上的举例我们可以看到,在我们初期小规模的软件开发过程中软件开发管理工作已近占据了重要的位置,那么在企业级的大型软件开发工作中,管理的重要性更是不言而喻。下面我们就针对典型的软件开发过程看一下如何做好管理工作。

  首先,明确需求。软件需求是软件开发的根本所在,整个开发工作都是为需求而生的,所以一定要详细了解客户的需求,以免在后续的工作中找不到重点反复修改。确定需求的过程中,开发和设计人员一定要详细地听取用户的意见,不能想当然地把自己的观点加到用户的需求中,最后汇总出所有有关人员都一致同意的、详细的、完整的、可以实现的、可以测试的软件需求说明书,后续的设计和开发工作就是把这份需求说明书从纸面变成代码。

  其次,项目计划。凡事预则立不预则废,事前对整个开发工作有一个详细的计划将会起到事半功倍的效果。这里的计划不仅仅包括软件本身的设计工作,还包括人员分工,制定时间表,资源分配,确定时间节点,风险预估等工作。人员分工要求项目主持者对每一位开发人员的能力和强项都有全面的了解,使得人尽其才,各司其职;资源分配和人员分工一样重要,我们知道著名的二八法则,如何准确地把主要资源分配给核心的20%的工作,使得物尽其用,是项目组长需要认真考虑的问题;制定时间表是为了督促项目团队提高效率,把大任务拆分成一个个小任务可以提高开发人员的积极性,每过一个时间节点都是对开发人员的一个激励,制定时间节点一定要本着切实可行的原则,不能认为“计划赶不上变化”而随意设置。

  第三,在项目的实际开发过程中,做好监管,做好软件质量保证和配置管理的工作。如果在项目的开发过程中随意修改计划内容,或者常常不嫩完成计划汇总规定的工作,那么制定计划的意义将不复存在。做好监管的手段包括软件质量保证和软件配置管理。

  软件质量保证是建立一套有计划有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目采用。软件质量保证的目的是使软件开发过程对于管理人员来说是可见的。通过对软件产品和活动进行评审和审计来验证软件是否是合乎标准的。

  软件配置管理(Software Configuration Management,SCM)是一标识、组织和控制修改的技术。在软件开发过程中,变更是不可避免的,而每一次变更都会导致开发者之间的混乱,因此必须建立一套控制和记录系统一系列变化的体系。通过一系列的技术和手段维护产品的历史,标识和定位产品独有的版本,并在产品的开发和发布的阶段控制版本变化。用一系列的有序管理来减少项目人员之间重复的工作,这样保证了生产的效率和质量。对软件系统的每一个结构版本以及每一个独立部件,都给出独一无二的可访问的标识,这样做的目的是使得问题可追溯,实现对软件的全程跟踪。

  第四,人员管理。这是软件开发管理工作中的重点,因为开发工作是由人完成的,而且人是有情感的,所以往往工作的分配并不是看似分配合理即可,还要切实结合每一个开发人员的特点。软件产品开发组的范型有以下四种可以参考的目前较为常见的范型。

  1) 封闭式范型。这种方式是按照传统的权利层次来组织分组,每个人的分工和权利都有非常明确的约束,因此开发人员的执行力非常好,这种范型比较适合于做常规的或以往开发过的项目,不需要开发人员的创造力。

  2) 松散式范型。这种方式即是以一种非常松散的方式组织分组,对每一个开发人员的权利和责任都没有明确的约束,每个人都有很大的发挥空间。因此这种方式比较适合于开发一些要求创造力的项目,并且对于时间没有严格的要求。

  3) 开放式范型。这种方式结合了以上两种方式的特点,既有封闭式范型中严格的层次区分,对每一个开发人员都有有效的控制,又具有松散式模型中的创新性。工作的执行结合了大量的通信和基于小组一致意见的决策。因其兼具了封闭式范型和松散式范型的特点,所以比较适合于完成较为复杂的任务,但是效率较低。

  4) 同步式范型。这种方式是根据问题的特点,给每一个开发人员分配独立的模块进行开发,彼此之间没有沟通的必要,最后每个人的工作组合到一起就完成了整个工程的开发。

  随着计算机技术的不断发展,我们对于软件的依赖必定不断增强,而软件规模和复杂性也会随之提高,在面对大型软件开发的时候,软件工程管理将会起到越来越重要的作用,届时软件项目的管理将会决定软件项目的成败。

参考资料:

1)   http://wenku.baidu.com/link?url=E0ne6HXqRTE9nZC0ixNf5Z3zzI_4k4MpUYsvZHEkVsWOQa7HtIIOl1_PoJnQZfeoe41CfiyF-BJM1hVfytVcvy6Vtr_9BkcFL_NW7AQWMPq

2)   《软件项目管理的思考》——河南大学 朱利娜、周宁

时间: 2024-10-10 00:53:52

浅谈软件工程的管理活动的相关文章

浅谈软件工程

借鉴<构造之法>--浅谈软件工程 源程序就是代码,建立在数据结构之上,对数据进行操作.数据分为静态数据和动态数据. 软件构建不仅仅是cc和link命令,一个复杂的软件具有合理的软件架构.软件设计,实现等等.软件团队要从需求分析开始,把合适需求梳理出来,然后展开后续工作,如软件架构设计,写数据结构和算法,测试到最后发布软件. 由“软件=程序+软件工程”扩展出“软件企业=软件+商业模式” 程序是基本功,软件工程决定了软件的质量,商业模式决定了一个软件企业的成败,软件从业人员的道德操守会极大的影响软

锡盟酒店浅谈酒店的管理

在众多中,小编认为西灵酒店是很正规化的,对于这一点,必然离不开它的管理,今年来随着管理专业的火热,酒店管理的岗位应征也愈发的紧张,只有好的管理人员才会有更多优势,那么我们要看看如何管理酒店才会更成功. 锡盟酒店网站小编认为,首要是做好客源猜测作业.酒店经过猜测才敢思考接下来的推广步调,猜测需从多方面着手:现在的行业动态需要关注酒店行业的最新动态.市场需要关注行情.只有好的前提,才能让酒店生意更成功. 1.从前同期客源状况的剖析.推广人员应该细分和研讨去年同期节假期每天客房租借状况,如:每日租借房

浅谈 项目群管理

项目群的关键里程碑必须是每个子项目的关键里程碑,每个子项目的里程碑务必不要都设置为和项目整体里程碑同一个时间点,能够提前的尽量提前,这样对于子项目里程碑能够提前的就已经具备了一定的关键链中的缓冲时间.对于最后一个子项目的里程碑到达时间,往往还需要留一定的缓冲余量,没有任何缓存的项目群里程碑往往都是不可完成的任务. 子项目的关键里程碑达成的困难往往并不是取决于子项目本身,而是取决于外在的多个其它子项目的前置依赖,前置依赖越多,子项目里程碑达成的风险越大.子项目的前置依赖本身往往还可能存在对其它子项

浅谈软件工程个人规划

一. (1)选择软件工程的理由:第一点IT领域具有很好的发展前景,是一个朝气蓬勃的行业,前20多年互联网带动了世界各个行业的发展,近几年人工智能.大数据等更是在火热发展中,当然还将会有更好的发展前景,第二点是IT行业对程序开发者的思维能力有较高的要求,通过算法的编写与阅读可以锻炼自己的思维能力,让自己的大脑得到充分的锻炼,第三点就说的接地气点吧,IT行业的薪资是比较高的,对于大多数人来说当然是选择薪资待遇高的行业了.对于我个人条件而言,自我感觉应该是没问题吧,总之一句话,多学点东西多敲点代码多思

浅谈javascript性能-管理内存

上次说到,javascript脚本到底应该放在哪里?用什么用处? 以下2点: 在Html.Body部分中的JS会在页面加载的时候执行.即-用户触发一个事件的时候执行的脚本.eg:onload事件... 在Html.Head部分中的JS会在被调用的时候执行.即-常被用来生成页面的内容. 总而言之:将Javascript标识放置<head>...</head>在头部中间,此时,*.js文件的提前调用:也就是说代码放在<head>区域载入的时候,就同时载入了代码,你再<

浅谈IT员工管理

本人虽然还不是管理人员,但也管理过学弟们(不是同校,只是工作中同事,为了好称呼叫学弟),也被管理着,工作也好多年了,今天又感而发,想来谈谈如果管理好员工(在此声明,我只是发表个人意见哦,不要喷,哈哈,反正浏览量不是很大),管理层要管理好下属,但是我觉得在IT界,作为经理(组长)管理程序猿们,第一,经理还是不要太把心思放在技术上,应该给以组员们在技术上如何实现上更多自由,我认为关键还是在任务制定之前给以更多参与,这样可以发挥组员们主观能动性.不然,比如:经理了解了老板那里或客户提供的业务需求,而组

浅谈Linux内存管理机制

经常遇到一些刚接触Linux的新手会问内存占用怎么那么多? 在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然.这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理.主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能.而Windows是只在需要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间.换句话说,每增加一

浅谈iOS内存管理机制

iOS内存管理机制的原理是引用计数,引用计数简单来说就是统计一块内存的所有权,当这块内存被创建出来的时候,它的引用计数从0增加到1,表示有一个对象或指针持有这块内存,拥有这块内存的所有权,如果这时候有另外一个对象或指针指向这块内存,那么为了表示这个后来的对象或指针对这块内存的所有权,引用计数加1变为2,之后若有一个对象或指针不再指向这块内存时,引用计数减1,表示这个对象或指针不再拥有这块内存的所有权,当一块内存的引用计数变为0,表示没有任何对象或指针持有这块内存,系统便会立刻释放掉这块内存. 其

浅谈OC内存管理

MRC(手动管理内存): 1.如果使用了alloc.new.copy.retain必须使用release.autorelease来释放这个内存 2.alloc产生一个新对象,把新对象的引用计数器设置为1,retain保留对象,使对象的引用计数器+1,release使对象的引用计数器-1 3.当对象的引用计数器变成0,就会调用dealloc函数,对象释放内存 4.对象创建的时候计数器=1,retain,计数器+1,release,计数器-1,加入数组计数器+1,数组删除对象引用计数器-1 5.pr