`

对于软件工程含义及其实施和管理的一些思考

阅读更多

两个人以上的项目,就需要有管理。为什么这么说呢?因为有两个人,就需要交流;有交流,就必然会有合作;有合作,就需要有分工;有分工,就需要有协调;有所有这些,就需要有管理。但此刻的管理,我们说,杀鸡用牛刀,高射炮打蚊子,都是不智的。但还是需要管理。

然而一个人的项目是否不需要管理?当然不是,因为有文档,有代码,有灵感,有经验,等等都需要管理。只是此刻的管理是自己完成的,可以更简单一点。我们已经有过一遍又一遍的调试以前已经fix过的bug体验,也有过一遍又一遍的查找以前自己实现过的技术的经历。软件工程的理论,在开发过程中的作用,就是指导如何做好管理,以取得软件的可用性、正确性和合理性。如果我们清楚知道这是它的目标,就可以抛开一些对自己不适用的枝节。

那么它是如何做到这一点的?

我认为软件工程中最重要的,最有实际意义的,是它界定了工作职能,从而也确定了责任归属。什么意思?说白了,就是什么人做什么事,出了问题谁负责。那么它是怎么界定工作职能的?是通过对软件开发流程的划分来实现的。软件工程把软件的开发划分成很多个相对独立的阶段,每一个阶段都有相关的人员来实现,也就有相关的人员来负责。分工不清,责权不明,是导致管理混乱的最主要的因素。所以即使是两个人的项目,也是需要软件工程来指导的,因为通过它,可以更好的知道如何可以合理分工,划分工作职权以取得最终的成果。当然,走教条主义的道路是非常愚蠢的。

那么软件工程到底是什么?

软件工程是针对“软件危机”提出来的。它是一种工程,把经验和理论应用到实践中来,解决软件开发中出现的各种问题。

这是什么意思?就是说,软件工程是用来解决实际问题的。如果软件开发中没有遇到管理问题,软件工程就不需要管理的内容;如果软件开发中没有遭遇文档混乱,软件工程就不需要文档的部分。但是如果很幸运的遭遇到了这些,那么这一切都是不可或缺的。软件工程不是一个固定的呆板的框框,而是一个有弹性的概念。所以,如果不是要去申请iso或是cmm认证,完全不必要一板一眼的按照iso或是cmm的规范去做。所谓“有企业特色的软件工程”,完全可以从吸收现有的模式和规范中完善起来。

但这并不是说所有在开发过程中出现的都是软件工程,只有那些能引导开发走向成功的才是真正有意义的软件工程。其他的,最多只是失败的尝试。

那么应该什么时候开始实施软件工程?

软件工程一定要在一个项目开始之前开始吗?一定要贯穿整个项目吗?为什么?

不是的,软件工程可以在项目进行中的任何时候开始,也可以在任何不再需要的时候结束。因为软件工程把开发流程划分成不同的阶段,所谓“生命周期”,在不同的生命周期,软件工程提供了不同的模式可以参考。

那么软件公司如何实施软件工程?

首先要知道软件工程,理解软件工程;然后要了解现有的软件工程的模式和规范。ISO、CMM或是Agility,都定义了一套规范。这些规范是经验与技术,以及理论的积累。它们存在很多合理的、可行的模式,可以引用和参考;但银弹是没有的。当然,我们可以重头再来,造他们造过的轮子,摔他们摔过的跤;但很明显,这是不必要的。

实施的最好方法,也是最可行的方法,成本最小的方法,是根据开发的客观的因素,修改那些规范,以符合我们的开发过程;但是最主要的,是修改我们的主观认识,以符合那些规范;而最重要的,是在实施中发现那些规范不合理的地方,并改正它。

那是否会变得无法适从,从而陷入混乱?

是的,有这可能,所以任何的修正都应该是谨慎的。所有的修改提议都应该是自上而下的,而决定都是自下而上的。

软件工程对项目的规模有要求吗?

我们担心过小的项目应用软件工程是否会陷入官僚主义,从而加重项目的负担?

我们再来看什么是软件工程?软件工程并没有定义什么才是软件工程!也没有定义软件工程自身的规模。软件工程的意义在于对开发阶段的划分,以及分工和责任归属。这与项目的规模没有什么冲突。相反,越是小的项目越是需要软件工程的管理。软件开发的一个共识,是把一个大的项目划分成一些小的模块,再把小的模块划分成更小的模块。如果这些小模块是独立的(或者原来就是一个独立的项目),那么软件工程至少可以提高它的重用性。

对于一个软件工程观念不深的团队,不要期望他们在接手大的项目的时候可以使用软件工程,如果他们在小项目中不愿使用的话。前者的复杂度不是他们可以想象和承受的。

应用软件工程会增加工作量吗?

是的,但只是针对那些在不使用软件工程管理的项目中很轻松的人而言的。软件工程会使他们要么失业,要么负起责任来。相对工程师而言,他们会从混乱的毫无头绪的状态中解放出来,他们的工作会变得有效率。损失的是以前尸位素餐的人将暴露出来——这可能是它的唯一的缺陷,同时也是它受到很多企业/个人抵制的可能原因之一。

我们应该怎么做?

学习!如果我们不想重头发明一个轮子的话。

尝试!如果我们希望改变的话。

分享到:
评论

相关推荐

    软件工程实验指导书 new.doc

    加深对软件工程课程基础理论,基本知识的理解,提高分析和解决问题能力,培养学生严谨的工作作风和实事求是的科学态度,使学生熟悉软件工程的规范,项目管理和团队协作开发,为后继的毕业设计和未来的科学研究及软件...

    信息系统项目管理师 论文 信息系统项目管理师范文

    防止软件工程项目范围蔓延的七个步骤 384 某企业IT项目范围管理综述 386 如何做好范围管理? 387 项目范围管理 388 项目范围管理是项目成败的关键 389 项目范围是项目成败的关键 392 糟糕的范围管理导致项目失败 394...

    软件项目管理师大全(大纲+论文格式+经典案例)

    防止软件工程项目范围蔓延的七个步骤 384 某企业IT项目范围管理综述 386 如何做好范围管理? 387 项目范围管理 388 项目范围管理是项目成败的关键 389 项目范围是项目成败的关键 392 糟糕的范围管理导致项目失败 394...

    全程软件测试(朱少民)

    本书还系统地介绍了测试管理的各个层次及其细节,,包括测试策略制定、风险控制、缺陷跟踪和分析、测试管理系统的应用等。最后,本书呈现了软件测试成熟度模型和对软件测试的总结和思考,帮助读者了解软件测试所面对...

    上海轨道交通新技术发展与思考(顾总)终稿.pdf

    针对于中铁二院的应用需求和实施架构,Bentley公司提供的基于BIM技术的轨道交通工程行业解决方案,无论是从主体架构、系统总体逻辑架构已经具体的软件功能模块划分,都符合中铁二院BIM系统的总体规划。 BIM解决方案...

    全程软件测试

    本书还系统地介绍了测试管理的各个层次及其细节,包括测试策略制定、风险控制、缺陷跟踪和分析、测试管理系统的应用等。最后,本书呈现了软件测试成熟度模型和对软件测试的总结和思考,帮助读者了解软件测试所面对的...

    软件测试技术基础 图片版

    软件测试技术基础 图片版 本书从软件测试的基础知识入手,涵盖软件测试的理论知识和实践环节内容。... 本书适合高校计算书及软件工程专业本科生或研究生作为教材使用,也可作为软件测试人员的技术参考书.

    数据库课设-停车场管理系统.docx

    学 号: 课 程 设 计 课程名称 数据库系统概论 学 院 计算机科学与技术学院 专 业 软件工程专业 班 级 姓 名 指导教师 2013——2014学年 第2学期 数据库课设-停车场管理系统全文共20页,当前为第2页。数据库课设-...

    XX钢管公司业务流程重组与ERP应用理念培训(PPT 16页)

    进行软件平台及数据库管理。 维护数据安全,防止并杀灭外来病毒。 实施数据备份,管理不间断电源,进行数据灾难恢复等。 进行软件升级管理。 实施版本管理,维护数据一致性。系统应用人员基本要求是系统实施与正常...

    《大象 Thinking In UML》pdf版(带书签)卷3/3

    同时将结合软件工程,传达基于对象的思考方法、分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》...

    《大象 Thinking In UML》pdf版(带书签)卷1/3

    同时将结合软件工程,传达基于对象的思考方法、分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》...

    《大象 Thinking In UML》pdf版(带书签)卷2/3

    同时将结合软件工程,传达基于对象的思考方法、分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》...

    《大象-Thinking_in_UML(第二版)》高清带书签

    本书以UML为载体,将面向对象的分析设计... 本书可供正在学习编程、软件工程等知识,准备将来从事IT行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。

    大象--Thinking in UML(1/2)

    本书以uml为载体,将面向对象的分析设计... 本书可供正在学习编程、软件工程等知识,准备将来从事it行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。

    大象--Thinking in UML (2/2)

    本书以uml为载体,将面向对象的分析设计... 本书可供正在学习编程、软件工程等知识,准备将来从事it行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。

    大象-Thinking in URL

    本书以uml为载体,将面向对象的分析设计... 本书可供正在学习编程、软件工程等知识,准备将来从事it行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。

    《Java基础》实验题和课程设计补充题.doc

    《Java基础》实验题和课程设计补充题 《Java基础》课程实验题 专业:计算机科学与技术、软件工程、网络工程(XX年级起)教材:《Java程序设计实用教 程(第4版)》 第6章图形用户界面 实验目的、要求和题意详见教材实验6。...

    大象—Thinking in UML

     《大象——Thinking in UML》适用于正在学习编程、软件工程等知识,准备将来从事IT行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。

    计算机及应用专业课程设置.doc

    系统集成工程项目市场人员、技 术支 持人员、工程实施人员;软硬件产品的售前、售后客户服务工作;软硬件产品技术咨询 工作;用户初级技术培训、操作培训工作。 制造业技术工人 计算机及其相关产品制造企业中的销售...

Global site tag (gtag.js) - Google Analytics