软件工程
天忍哥哥
想搞技术
展开
-
消费者生产者源代码Java实现
以厨师和服务生为例:/** * 生产者与消费者问题 */public class Demo{ public static void main(String[] args) { Food f = new Food(); new cook(f).start(); new waiter(f).start(); }}/** * 厨师 */class cook extends Thread{ private Food f;原创 2021-06-26 18:11:09 · 82 阅读 · 0 评论 -
决策树-回归
决策树 – 回归解决问题实现基于特征范围的树状遍历的回归。解决方案通过寻找样本中最佳的特征以及特征值作为最佳分割点,构建一棵二叉树。选择最佳特征以及特征值的原理就是通过满足函数最小。其实选择的过程本质是对于训练样本的区间的分割,基于区间计算均值,最终区域的样本均值即为预测值。在预测的时候,将会根据提供的样本的特征,来遍历二叉树(确定区域的过程),其中叶子节点的值就是预测值。构建回归决策树,过程,其实可以理解对训练样本进行监督式聚类,每个分类都是有一组特征逻辑范围做描述;预测的时候,其实就是在匹配转载 2021-05-11 16:46:39 · 217 阅读 · 0 评论 -
软件测试过程的V model,W模型,H模型
软件测试过程的V model,W模型,H模型1.软件测试过程模型-V模型是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现 。2.软件测试过程模型-W模型在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题 。局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整 。转载 2021-04-21 15:37:30 · 58 阅读 · 0 评论 -
Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)
Why Software Development Methodologies Suck(为什么软件开发方法论让你觉得糟糕)围绕软件开发实践和方法论,总有很多教条式的口水仗。阶段式(phase-gate)方法能够有效管理软件开发过程的风险,还是说只是风险管理中的花哨噱头?TDD真的能够促生出高品质软件?结对编程是代码评审的有效替代抑或只是增加了商议沟通代价?我想说,虽然缺乏证据判断这些论调的谬处,但有两条常用的法则能够帮助我们选择好的实践,同时,提升我们所提供软件的价值:划小开发周期以及提升反馈效率。Mi原创 2021-04-10 14:12:57 · 42 阅读 · 0 评论 -
阅读和了解什么是形式化方法
阅读和了解什么是形式化方法在计算机科学和软件工程领域,形式化方法是基于 数学的特种技术,适合于软件和硬件系统的描述、开发和验证。将形式化方法用于软件和硬件设计,是期望能够像其它工程学科一样,使用适当的数学分析以提高设计的可靠性和 鲁棒性。但是,由于采用形式化方法的成本高意味着它们通常只用于开发注重安全性的高度整合的系统。分类:根据说明目标软件系统的方式,形式化方法可以分为两类:1)面向模型的形式化方法。面向模型的方法通过构造一个数学模型来说明系统的行为。2)面向属性的形式化方法。面向属性的方法原创 2021-04-10 14:07:08 · 55 阅读 · 0 评论 -
Java的反射机制
Java的反射机制反射 (Reflection) 是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。通俗的来讲就是:通过反射机制,可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。注意这里的重点是:运行时,而不是编译时。我们常规情况下写的对象类型都是在编译期就确定下来的。而Java反射机制可以动态地创建对象并调用其属性,这样创建对象的方式便异常灵活了。虽然通过反射可以动态的创建对象,增加了灵活性,但也不是什么地方都可用,还要考虑性能、编码量、安全原创 2021-04-10 14:01:24 · 60 阅读 · 0 评论 -
从瀑布到敏捷-漫画解读软件开发模式变迁史
从瀑布到敏捷-漫画解读软件开发模式变迁史读完这篇漫画图解和作者的解释后能够明显的感受到瀑布式和敏捷开发之间的区别,笔者对这方面理解也很透彻,和封闭的瀑布式开发相比敏捷开发显的更加灵活,敏捷型方法是“适应性”而非“预见性”适应性不仅是指在一个开发项目中如何频繁地修改软件以适应不断的需求变更,还有过程本身随着时间推移变化。这张图片从上向下,五个房间,分别是瀑布模型(waterfall),敏捷开发(agile),看板(KANBAN),SCRUM 和精益软件开发(lean)。瀑布模型这间小屋和其他小屋有着明原创 2021-03-27 14:34:35 · 288 阅读 · 0 评论 -
什么是分而治之?
什么是分而治之?分而治之,根据不同的成因,来选择不同的解决方案。分而治之打个比喻就是一个团队的整体实力比较强,那么就分而治之,把一个整体分成个体逐一攻击那么他们力量下小了就好对付了。谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解。...原创 2021-03-27 14:29:55 · 162 阅读 · 0 评论 -
什么是WBS?
什么是WBS?1. WBS(工作分解结构)是Work Breakdown Structure的英文缩写,是项目管理重要的专业术语之一。WBS的基本定义:是一种在项目全范围内分解和定义各层次工作包的方法。WBS最后构成一份层次清晰的结构,可以具体作为组织项目实施的工作依据。无论在项目管理实践中,还是在 PMP,IPMP考试中,工作分解结构(WBS)都是最重要的内容之一。WBS总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。WBS同时也是控制项目变更的重要基原创 2021-03-27 14:26:16 · 7074 阅读 · 0 评论 -
为什么软件开发周期总是预估的2-3倍?
为什么软件开发周期总是预估的2-3倍听过行百里者半九十吧。这句话在程序员的工作中同样适用,到底是为何呢?1.人员分配做一个项目或者一个工程,避免不了人员的分工,所以这个时候就需要一个很有经验的项目经理做领头人。如果人员分工不合理以及资源利用不到位都会影响到项目的完成。2.需求分析这个时候需要和客户进行交谈,初步确立需求,并且需要让客户了解本团队的实力以及技术能力。对开发公司有了简单了解后,告知开发公司项目情况,进入需求沟通阶段,双方对项目能够达到共识。达成共识之后,需要做出原型图给客户看,客户原创 2021-03-27 14:17:24 · 116 阅读 · 2 评论 -
有人负责,才有质量:写给在集市中迷失的一代的感悟
有人负责,才有质量:写给在集市中迷失的一代的感悟文章中说到随着互联网时代的到来,越来越多的人投身于互联网行业。学会计算机编程很容易,就像学会用钉子把两块木板钉到一起一样简单。但是想要再进一步学习,需要天分、实践和训练,然而大多人却无法坚持下来。文章地址: https://www.ituring.com.cn/article/9363.Brooks提出了很多有见地的观点,其中一个就是所谓质量,只有在某人对它负责时才有意义,而这个“某人”只能是一个人,不能是几个人——二重奏除外。学会计算机编程很容易,原创 2021-03-27 13:43:46 · 128 阅读 · 0 评论 -
软件工程方法论对我们开发软件有多大用处?
软件工程方法论对我们开发软件有多大用处?一.软件工程方法论概述软件工程方法论指的是,在软件开发的过程中,必须遵循的普遍行为和规则。软件工程方法论指导下的科研过程,分为如下五个步骤。1)选题。选题即问题定义,是科研的第一步,也是最关键的一一步,极大地体现出论文的新颖程度,在此阶段需要查阅大量资料,深入了解国内外研究现状。2)获取科学事实。对应于软件开发周期,我认为是可行性分析和总体设计阶段。对于我们数据挖掘方向的研究人员,应该包括收集数据集,以及对硬件环境,.比如考虑选择多大内存的电脑,是否需要集群并原创 2021-03-22 08:06:50 · 54 阅读 · 0 评论 -
软件工程是否是教不太会编程的人开发软件?
软件工程是否是教不太会编程的人开发软件?首先,我的观点为否,软件工程这门课虽然说的是一个软件开发的整体流程。但软件是复杂的,软件不仅包括了程序(系统程序、应用程序和用户自己编写的程序),还包括了程序的处理对象----数据,以及与程序开发、维护和使用有关的图文资料(文档)。在我看来,软件工程是让拥有编程能力以及计算机专业知识的程序员更加正确的运用自己所拥有的技术和知识进行软件开发。Roger S. Pressman对软件给出这样的定义:计算机软件是由计算机专业人员开发并长期维护的软件产品。完整的软件产品包原创 2021-03-13 16:57:42 · 211 阅读 · 1 评论