两个人以上的项目,就需要有管理。为什么这么说呢?因为有两个人,就需要交流;有交流,就必然会有合作;有合作,就需要有分工;有分工,就需要有协调;有所有这些,就需要有管理。但此刻的管理,我们说,杀鸡用牛刀,高射炮打蚊子,都是不智的。但还是需要管理。
然而一个人的项目是否不需要管理?当然不是,因为有文档,有代码,有灵感,有经验,等等都需要管理。只是此刻的管理是自己完成的,可以更简单一点。我们已经有过一遍又一遍的调试以前已经fix过的bug体验,也有过一遍又一遍的查找以前自己实现过的技术的经历。软件工程的理论,在开发过程中的作用,就是指导如何做好管理,以取得软件的可用性、正确性和合理性。如果我们清楚知道这是它的目标,就可以抛开一些对自己不适用的枝节。
那么它是如何做到这一点的?
我认为软件工程中最重要的,最有实际意义的,是它界定了工作职能,从而也确定了责任归属。什么意思?说白了,就是什么人做什么事,出了问题谁负责。那么它是怎么界定工作职能的?是通过对软件开发流程的划分来实现的。软件工程把软件的开发划分成很多个相对独立的阶段,每一个阶段都有相关的人员来实现,也就有相关的人员来负责。分工不清,责权不明,是导致管理混乱的最主要的因素。所以即使是两个人的项目,也是需要软件工程来指导的,因为通过它,可以更好的知道如何可以合理分工,划分工作职权以取得最终的成果。当然,走教条主义的道路是非常愚蠢的。
那么软件工程到底是什么?
软件工程是针对“软件危机”提出来的。它是一种工程,把经验和理论应用到实践中来,解决软件开发中出现的各种问题。
这是什么意思?就是说,软件工程是用来解决实际问题的。如果软件开发中没有遇到管理问题,软件工程就不需要管理的内容;如果软件开发中没有遭遇文档混乱,软件工程就不需要文档的部分。但是如果很幸运的遭遇到了这些,那么这一切都是不可或缺的。软件工程不是一个固定的呆板的框框,而是一个有弹性的概念。所以,如果不是要去申请iso或是cmm认证,完全不必要一板一眼的按照iso或是cmm的规范去做。所谓“有企业特色的软件工程”,完全可以从吸收现有的模式和规范中完善起来。
但这并不是说所有在开发过程中出现的都是软件工程,只有那些能引导开发走向成功的才是真正有意义的软件工程。其他的,最多只是失败的尝试。
那么应该什么时候开始实施软件工程?
软件工程一定要在一个项目开始之前开始吗?一定要贯穿整个项目吗?为什么?
不是的,软件工程可以在项目进行中的任何时候开始,也可以在任何不再需要的时候结束。因为软件工程把开发流程划分成不同的阶段,所谓“生命周期”,在不同的生命周期,软件工程提供了不同的模式可以参考。
那么软件公司如何实施软件工程?
首先要知道软件工程,理解软件工程;然后要了解现有的软件工程的模式和规范。ISO、CMM或是Agility,都定义了一套规范。这些规范是经验与技术,以及理论的积累。它们存在很多合理的、可行的模式,可以引用和参考;但银弹是没有的。当然,我们可以重头再来,造他们造过的轮子,摔他们摔过的跤;但很明显,这是不必要的。
实施的最好方法,也是最可行的方法,成本最小的方法,是根据开发的客观的因素,修改那些规范,以符合我们的开发过程;但是最主要的,是修改我们的主观认识,以符合那些规范;而最重要的,是在实施中发现那些规范不合理的地方,并改正它。
那是否会变得无法适从,从而陷入混乱?
是的,有这可能,所以任何的修正都应该是谨慎的。所有的修改提议都应该是自上而下的,而决定都是自下而上的。
软件工程对项目的规模有要求吗?
我们担心过小的项目应用软件工程是否会陷入官僚主义,从而加重项目的负担?
我们再来看什么是软件工程?软件工程并没有定义什么才是软件工程!也没有定义软件工程自身的规模。软件工程的意义在于对开发阶段的划分,以及分工和责任归属。这与项目的规模没有什么冲突。相反,越是小的项目越是需要软件工程的管理。软件开发的一个共识,是把一个大的项目划分成一些小的模块,再把小的模块划分成更小的模块。如果这些小模块是独立的(或者原来就是一个独立的项目),那么软件工程至少可以提高它的重用性。
对于一个软件工程观念不深的团队,不要期望他们在接手大的项目的时候可以使用软件工程,如果他们在小项目中不愿使用的话。前者的复杂度不是他们可以想象和承受的。
应用软件工程会增加工作量吗?
是的,但只是针对那些在不使用软件工程管理的项目中很轻松的人而言的。软件工程会使他们要么失业,要么负起责任来。相对工程师而言,他们会从混乱的毫无头绪的状态中解放出来,他们的工作会变得有效率。损失的是以前尸位素餐的人将暴露出来——这可能是它的唯一的缺陷,同时也是它受到很多企业/个人抵制的可能原因之一。
我们应该怎么做?
学习!如果我们不想重头发明一个轮子的话。
尝试!如果我们希望改变的话。
分享到:
相关推荐
综上所述,软件工程的质量管理是一套系统性的方法论,它覆盖了从质量定义、质量属性到质量控制、软件测试及软件测试周期、分类和实施的全过程。有效的质量管理不仅需要技术上的专业性,还需要管理上的策略性思考,以...
在现代软件开发领域,软件工程作为一门学科,不仅仅关注编程技能,更强调项目的整体规划、分析、设计、实施、测试和维护等阶段的工程化方法。《软件工程实验指导书》的出版,正是为了帮助学习者们深入理解和实践软件...
北邮软件工程空调系统的设计与实施,旨在创造一个适合编程、软件开发、项目管理等教学活动的环境。这种环境需要考虑到以下几个方面: 1. 温度控制:空调系统应能保持恒定的室内温度,一般在18-24℃之间,以降低...
《软件工程——理论、方法与实践》是一门深入探讨软件开发过程、方法和技术的核心课程,对于计算机科学与技术专业的学生来说至关重要。课后习题是检验学习效果、巩固理论知识和提升实践技能的重要环节。本资源集合了...
【大连理工大学2021年春季《软件工程》课程大作业】主要涵盖了软件工程的基本概念、系统开发流程以及一个具体的超市员工管理系统的设计。这个大作业旨在让学生深入理解软件工程的理论与实践,同时通过实际项目锻炼...
9. **风险管理与变更管理**:软件工程中不可避免地会遇到各种风险和变更,作者教导如何识别潜在风险,建立应对策略,并有效管理项目的变更。 10. **职业道德与社会责任**:作为软件工程师,不仅需要技术技能,还...
软件工程师试用期转正工作总结PPT.pptx
面向未来,软件行业需要持续学习和适应新的软件工程理念和技术,这对于保持软件行业的健康发展至关重要。 软件工程学科的成立,为软件开发提供了新的视角和方法论。在软件定义阶段,需求分析和系统规划成为关键,这...
《软件工程》作业及答案详解 1. 软件危机是计算机软件开发与维护过程中面临的严重问题,表现为预测成本和进度的不准确性、用户满意度低、软件质量问题、缺乏文档、软件成本占比增加以及开发效率无法跟上需求增长。...
为了更好地完成实习,学生可以参考一系列专业教材,如张权范的《软件工程》,吕林霞等人的《数据库原理及应用》,萨师煊和王珊的《数据库系统概论》等。这些教材将为学生提供坚实的理论基础和技术指导,是他们完成...
- **启发性**: 林锐的独特见解和深入分析能够激发读者对于软件工程更深层次的理解和思考。 综上所述,《软件工程思想》不仅是一本关于软件工程的理论书籍,更是一部集实用性、启发性和趣味性于一体的佳作。无论是...
### 初学软件工程思想总结 #### 软件工程思想概述 ...软件工程不仅仅是一门技术学科,它还涉及到了管理和组织等多个方面,因此对于那些希望在这个领域有所作为的人来说,全面的学习和思考是必不可少的。
这份资料包含了历年来的考试题目及相关的学习参考资料,为学生提供了全面复习和深入理解软件工程概念的宝贵资料。 1. **软件工程概述**:软件工程是一门研究大规模软件开发过程、方法、工具和管理的学科,旨在通过...
计算机四级软件工程师考试是中国计算机技术职业资格认证体系中的一项高级别考试,主要针对具备一定软件工程理论基础和实践经验的专业人士。这个级别的考试旨在评估考生在软件设计、开发、测试、维护等方面的能力。...
### 软件工程基础知识点详解 #### 一、软件工程基本概念 ##### 1.1 软件定义与特点 **软件定义**: 软件是指计算机系统中与硬件相辅相成的另一部分,它包含了程序、数据及相关文档的完整集合。 - **程序**: 是...