软件过程的发展的思考

软件项目开发可分为以目标为中心和以过程为中心。早期多以目标为中心,随项目变大,瀑布模型等使开发转向以过程为中心,但部分企业形似神不似。过程开发耗资源,人们开始思考结合两者,XP等新想法诞生,软件业正走向实用有序。

    从泛义上来说, 软件项目开发可以分成以目标为中心或以过程为中心。

以目标为中心的项目开发可以为达成目标而不择手段或者说不采用任何手段, 只要最后项目成功,项目人员可以使用任何办法。而以过程为中心则以过程为主要依据,要求过程步骤完美,最后结果如何都是成功的项目。按儒家的中庸说法, 两种观点看起来都是不正确的, 能够相互补充那时最好了。

    首先, 软件项目刚刚开始出现的时候,人们完全不知道需要如何对付它, 所以那时候是只能以目标为中心, 采取个人主义,仅仅需要一个人或者几个人就能完成一个伟大的项目, 当时其中的领导者一定是能力超强, 不仅技术令人折服,而且充满了人格魅力,管理能力也是必不可少的。这样可以说靠着他一个人的能力和意志带领着大家完成项目。就像很多传奇中的研发项目,就是靠着个人能力领导着整个团队。

    中国的很多中小企业就是这一阶段的以目标为中心, 虽然使用了一些先进的工具,但是思路还是没有脱离原始的状态。在这样的公司你往往能听到这样的话,“我头头说这个东西必须在这个星期完成”。 然后项目就在无序中进行,如果项目有一个杰出技术专家,可能会侥幸成功。但更多都是糊里糊涂的失败了,但是即使失败了,很多项目也会被公司当作成功项目,因为没人愿意承认失败。所以如果去找工作,如果一看要招一个XX高手这样的人,这个公司一定就是这一类型的公司,经历过很多次失败以后,它只能把希望寄托在一两个高手身上。

    慢慢的随着业界对软件的需求越来越大,项目也越来越大,开发人员也越来越多,这种模式再也无法承受使用了。仍采用这种模式的项目的失败率也越来越高。然后一些聪明人发明了瀑布模型,从本身看这并非是一个创举,它把一个大目标分割成几个小的目标步骤,一个一个次序完成。他们的一小步是人类的一大步,他们开创了一种可行的文化。这样随着目标越来越大,越来越细化,模式也从瀑布变成了增量,模型也从以目标为中心转变成了以过程为中心。理论上,只要把最简单的瀑布模型每一个步骤都严格完成,那么项目一定会成功。这个时候,软件业也从混沌转变到了有序的阶段。

    国内很多企业做的形似而神不似,项目虽然使用了一些过程,但是这些过程只是用来摆样子,全无实用价值。在过程中,对各个阶段的控制和审核是最主要的,不然就失去了分阶段的作用,其实就是退回到混沌的阶段。在很多的项目中,这一阶段虽然完成的不好,但是还是会往下面走,原因就是根本没有认识到为什么要采用过程方式。

    在过程为中心的开发中,一般来说采用一个适合的过程模型,然后适当的裁剪,我认为是成功系数很高的, 当然需要一个合适理解这个过程的项目经理,很多公司的失败是因为项目成员并不理解这个过程,只是为了拥有过程而过程。业界的过程模型已经经过长时间的检验,如果问题出现了,很大愿意是使用的人的对这个过程理解得不够。

    任何过程都会带来一个副面的影响:太耗费资源。大家应该深有感触,过程中的那些文档的确是让任何人都非常害怕,尤其是对这些文档的维护,更是恐怖。但是这是减少点对点交流的非常好的解决途径之一。对于这个问题,只有大量采用裁剪,毕竟实用才是大家追求的。人们开始对动不动就是资源消耗极大的过程开始反感,重新开始了对过程的思考。他们希望有特别针对与中小项目的适合的过程,即使是瀑布也太复杂。他们需要在保持一定过程的前提下,采用最为节省资源的做法。保证项目成功并不一定需要繁琐的步骤,在每一道关口设卡检查。完全有可能在主要的关口设卡,在内部如何方便通行就采用哪种路线,这样就能保证能最快最正确的通过。这就是以目标为中心和以过程为中心的结合体。于是XP等新的想法诞生了。

    像任何行业一样,软件业也从无序进入有序,有从有序进入了过度繁琐的有序,然后再从繁琐进入精简,进入了实用的有序。在反反复复后,我们会看到一个成熟的工业,像其他所有的行业一样,实用是最重要的。

下载方式:https://pan.quark.cn/s/a4b39357ea24 布线问题(分支限界算法)是计算机科学和电子工程领域中一个广为人知的议题,它主要探讨如何在印刷电路板上定位两个节点间最短的连接路径。 在这一议题中,电路板被构建为一个包含 n×m 个方格的矩阵,每个方格能够被界定为可通行或不可通行,其核心任务是定位从初始点到最终点的最短路径。 分支限界算法是处理布线问题的一种常用策略。 该算法与回溯法有相似之处,但存在差异,分支限界法仅需获取满足约束条件的一个最优路径,并按照广度优先或最小成本优先的原则来探索解空间树。 树 T 被构建为子集树或排列树,在探索过程中,每个节点仅被赋予一次成为扩展节点的机会,且会一次性生成其全部子节点。 针对布线问题的解决,队列式分支限界法可以被采用。 从起始位置 a 出发,将其设定为首个扩展节点,并将与该扩展节点相邻且可通行的方格加入至活跃节点队列中,将这些方格标记为 1,即从起始方格 a 到这些方格的距离为 1。 随后,从活跃节点队列中提取队首节点作为下一个扩展节点,并将与当前扩展节点相邻且未标记的方格标记为 2,随后将这些方格存入活跃节点队列。 这一过程将持续进行,直至算法探测到目标方格 b 或活跃节点队列为空。 在实现上述算法时,必须定义一个类 Position 来表征电路板上方格的位置,其成员 row 和 col 分别指示方格所在的行和列。 在方格位置上,布线能够沿右、下、左、上四个方向展开。 这四个方向的移动分别被记为 0、1、2、3。 下述表格中,offset[i].row 和 offset[i].col(i=0,1,2,3)分别提供了沿这四个方向前进 1 步相对于当前方格的相对位移。 在 Java 编程语言中,可以使用二维数组...
源码来自:https://pan.quark.cn/s/a4b39357ea24 在VC++开发过程中,对话框(CDialog)作为典型的用户界面组件,承担着与用户进行信息交互的重要角色。 在VS2008SP1的开发环境中,常常需要满足为对话框配置个性化背景图片的需求,以此来优化用户的操作体验。 本案例将系统性地阐述在CDialog框架下如何达成这一功能。 首先,需要在资源设计工具中构建一个新的对话框资源。 具体操作是在Visual Studio平台中,进入资源视图(Resource View)界面,定位到对话框(Dialog)分支,通过右键选择“插入对话框”(Insert Dialog)选项。 完成对话框内控件的布局设计后,对对话框资源进行保存。 随后,将着手进行背景图片的载入工作。 通常有两种主要的技术路径:1. **运用位图控件(CStatic)**:在对话框界面中嵌入一个CStatic控件,并将其属性设置为BST_OWNERDRAW,从而具备自主控制绘制过程的权限。 在对话框的类定义中,需要重写OnPaint()函数,负责调用图片资源并借助CDC对象将其渲染到对话框表面。 此外,必须合理处理WM_CTLCOLORSTATIC消息,确保背景图片的展示不会受到其他界面元素的干扰。 ```cppvoid CMyDialog::OnPaint(){ CPaintDC dc(this); // 生成设备上下文对象 CBitmap bitmap; bitmap.LoadBitmap(IDC_BITMAP_BACKGROUND); // 获取背景图片资源 CDC memDC; memDC.CreateCompatibleDC(&dc); CBitmap* pOldBitmap = m...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值