敏捷开发

你掉进过“伪敏捷”的陷阱吗?

試著忘記壹切 提交于 2021-02-12 19:02:07
摘要: 任何工具或者流程如果让人们在自己的工作环境中感到举步维艰,那它就不能被称为敏捷,只能称之为“伪敏捷”。 《2020年敏捷状态报告》中显示,现今许多组织还在学习如何实施敏捷。受访者中也有大约50%的人表示,他们的团队中只有不到一半的人在使用敏捷,而其中仍有高达84%的人承认他们的组织没有达到高水平的能力。 一部分公司或团队在践行敏捷后取得了巨大的成功,让更多的人趋之若鹜,纷纷转型敏捷。但转型敏捷绝非易事,在这一过程中,最常见的问题就是团队并未真正理解敏捷原则及核心价值观,而是一味地照猫画虎。自然,照猫画虎最终还是失败了,这时候经过这一系列变动的团队或成员就开始大肆宣扬“ 敏捷无用论 ”:搞那么多虚头巴脑的招式,只会浪费更多的人力物力财力,增加时间成本,到头来没有什么实质性的用处。但是,真的是敏捷无用吗?还是你用错了敏捷? 敏捷宣言 的主要内容是: 个体和互动 高于流程和工具; 工作的软件 高于详尽的文档; 客户合作 高于合同谈判; 响应变化 高于遵循计划。 但在很多公司中,团队打着“敏捷”的旗号,实际行动却严重偏离敏捷宣言及价值观,最后往往“欲速则不达”。敏捷宣言合著者Robert C. Martin接受采访说, 任何工具或者流程如果让人们在自己的工作环境中感到举步维艰,那它就不能被称为敏捷 。因此,这些仅披着一层“敏捷”外壳的团队,只能称之为“伪敏捷”。 当团队或者公司踏入

2017-2018-2 20165234 实验三 《Java面向对象程序设计》实验报告

二次信任 提交于 2021-02-12 11:13:07
实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。 public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer

20165234 2017-2018-2《Java程序设计》课程总结

佐手、 提交于 2021-02-12 10:59:51
2017-2018-2《Java程序设计》课程总结 一、作业链接汇总 每周作业链接 预备作业一: 我期望的师生关系 预备作业二: 学习基础和C语言基础调查 预备作业三: Linux安装及学习 第一周作业: 初识JAVA,注册码云并配置Git 第二周作业: JAVA基本语法,标识符及关键字 第三周作业: JAVA对象与类及封装 第四周作业: JAVA继承与接口 第五周作业: 内部类与异常类、输入输出流 第六周作业: 常用实用类、泛型与集合框架 第七周作业: JDBC与MySQL数据库 第八周作业: JAVA多线程机制 第九周作业: JAVA网络编程 实验报告链接 实验一 《Java开发环境的熟悉》 :命令行下Java程序开发、IDEA调试程序、编写代码 实验二 《Java面向对象程序设计》 :在IDEA中使用JUnit进行单元测试,掌握TDD,熟悉SOLID 实验三 《敏捷开发与XP实践》 :研究Code菜单、结对学习重构、复数类、密码学 实验四 《实验四Android程序设计》 :AndroidStudio的下载和使用 实验五 《网络编程与安全》 :客户端和服务器之间的通信,密码学算法的应用 二、关于博客 1. 自认为写得最好一篇博客是?为什么。 《学习基础和C语言基础调查》 。当时是在假期,在完成这篇博客时我花费的时间较长,也较为用心。 2. 作业中阅读量最高的一篇博客是

微服务化的基石——持续集成

懵懂的女人 提交于 2021-02-12 09:59:56
点击上方“ 程序员小灰 ”,选择“置顶公众号” 有趣有内涵的文章第一时间送达! 本文转载自公众号 刘超的通俗云计算 一、持续集成对于微服务的意义:拆之前要先解决合的问题 在很多微服务化的文章中,很少会把持续集成放在第一篇,因为大多数的文章都会将如何拆的问题,例如拆的粒度,拆的时机,拆的方式。 为什么需要拆呢?因为这是人类处理问题的本质方式:将一个大的复杂问题,变成很多个小问题解决。 所以当一个系统复杂到一定程度,当维护一个系统的人数多到一定程度,解决问题的难度和沟通成本大大提高,因而需要拆成很多个工程,拆成很多个团队,分而治之。 然而当每个子团队将子问题解决了,整个系统的问题就解决了么?你可以想象你将一辆整车拆成零件,然后再组装起来的过程,你就可以想象拆虽然不容易,合则更难,需要各种标准,各种流水线,才能将零件组装称为车。 我们先来回顾一下拆的过程。 最初的应用大多数是一个单体应用 一个Java后端,后面跟一个数据库,基本上就搞定了。 随着系统复杂度的增加,首先Java程序需要做的是纵向的拆分。 首先最外面是一个负载均衡,接着是接入的nginx,做不同服务的路由。 不同的服务拆成独立的进程,独立部署,每个服务使用自己的数据库和缓存,解决数据库和缓存的单点瓶颈。 数据库使用一主多从的模式,进行读写分离,主要针对读多写少的场景。 为了承载更多的请求,设置缓存层

20165339《Java程序设计》课程总结

烈酒焚心 提交于 2021-02-10 10:01:13
#课程总结 ##一.每周作业链接汇总 我期望的师生关系 :谈论了一些对未来师生关系的期望 学习基础和c语言基础调查 :在阅读《 优秀的教学方法---做教练与做中学 》后的一些想法,以及对于c语言的复习 Linux安装及学习 :尝试安装虚拟机,并且对Linux进行了初步的了解 第一周学习总结 :java的入门,从安装jdk到在本机上配置path值,了解一些关于java的知识 第二周学习总结 :了解java标识符,基本数据类型和数组,各种运算符以及语句 第三周学习总结 :开始学习java中重要的 类 以及关于 类 的一些操作 第四周学习总结 :学习java中子类和继承以及接口与实现 第五周学习总结 :在第7章中学习内部类和异常类,而第10章中讲了file类和输入输出流 第六周学习总结 :学习常用的实用类,以及泛型与集合框架。 第七周学习总结 :了解使用MySQL数据库 第八周学习总结 :学习线程 第九周学习总结 :学习Java的网络编程 ##二.博客 ###1. 自认为写得最好一篇博客是?为什么? * 第一周学习总结 *因为是初次接触到java自己反复探索了许多次,走了许多的弯路,虽然最后的结局有点差强人意,但终归在自己学习的路上走出了重要的一步,同时也为日后的学习打下了基础。 ###2. 作业中阅读量最高的一篇博客是?谈谈经验。 * 使用JDB调试Java程序

带你认识互联网架构的演变过程

六眼飞鱼酱① 提交于 2021-02-09 13:53:04
单体架构(all in one) 所有模块都在一起,技术也不分层。 在单机上部署所有的应用程序和软件。 所有的代码都写在JSP里面,所有代码都写在一起,这种方式称为all in one。 特点: 1.不具备代码的可维护性。 2.容错性差。(容错性是指软件检测应用程序所运行的软件和硬件中发生的错误并从错误中恢复的能力,可以从系统的可靠性,可用性,可测性等几个方面衡量) 因为所有代码都写在JSP页面里,当因为用户或某些原因发生异常时:用户可以直接看到异常错误信息;异常会导致服务器宕机。 单体地狱: 只需一个应用,将所有功能部署在一起,以减少部署节点和成本。 解决方案 1.分层开发:解决单体架构容错性差的问题,同时提高了代码的维护性。 2.MVC架构(Web应用程序的设计模式) 3.服务器的部署分离。 特点: 1.MVC分层开发:解决容错性问题。 2.数据库和项目部署分离。 <font color=red>问题</font>: 1.高并发:随着用户访问量的持续增加,单台服务器无法满足用户访问需求。 解决方案: 1.集群 集群操作可能遇到的问题 高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。 如何保证高可用:避免单点。 高并发 高并发

MySQL 性能优化神器 Explain 使用分析

喜夏-厌秋 提交于 2021-02-09 07:57:30
文章首发于公众号 松花皮蛋的黑板报 作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解 简介 MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 SELECT 语句前加上 Explain 就可以了, 例如: EXPLAIN SELECT * from user_info WHERE id < 300; 准备 为了接下来方便演示 EXPLAIN 的使用, 首先我们需要建立两个测试用的表, 并添加相应的数据: CREATE TABLE `user_info` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '', `age` INT(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_index` (`name`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8 INSERT INTO user_info (name, age) VALUES ( 'xys', 20); INSERT INTO user_info (name, age)

通过SignalR技术整合即时通讯(IM)在.NET敏捷开发框架中落地

泪湿孤枕 提交于 2021-02-07 18:48:04
1、引言 **即时通讯(IM)**是RDIFramework.NET敏捷开发框架全新提供的一个基于Web的即时通讯、内部聊天沟通的工具。界面美观大方对于框架内部进行消息的沟通非常方便。基于RDIFramework.NET敏捷开发框架的即时通讯IM支持常规的用户对用户(点对点)聊天、工作流程流转的提醒、服务端消息的推送等。消息到达还有类似QQ的声音提醒,同时对消息进行了持久化处理,即时离线的用户,上线后也会收到消息,不会造成消息的丢失。还提供了很多扩展接口供用户实际扩展使用,非常的强大,方便。 通过“企业内部聊天IM”我们可以扩展很多应用出来。这儿特别说明的是我们的IM使用的是SignalR技术。.NET SignalR 是为.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知消息及调用方法,当然这是实时操作的。SignalR提供了非常简单易用的高阶API,使服务器端可以单个或批量调用客户端上的JavaScript函数,并且非常方便地进行连接管理,例如客户端连接到服务器端,或断开连接,客户端分组,以及客户端授权,使用SignalR都非常

大话敏捷测试

泄露秘密 提交于 2021-02-02 12:59:57
前言: 大家好,我是一菲,今天我们来谈谈敏捷测试的相关内容。 敏捷这个话题似乎热了好多年,随之也就自然地有了敏捷测试这个术语。说到敏捷,大家一定听过不少相关的演讲,看到不少相关的书籍,不过不管有什么新的技术,新的流程,归根结底都是遵循着敏捷宣言并以敏捷原则作为根本。就像Scrum开拓了一套敏捷项目管理的框架,XP指导着敏捷开发中的工程实践一样,敏捷测试也就是一组指引测试工作在敏捷团队中的一些最佳实践。    正文: 首先,敏捷测试非常强调和多方的合作。在瀑布开发模式下,测试人员一般是根据需求文档和设计文档来设计测试用例,然后等功能开发完成,软件交付到测试人员手上才开始正式的测试工作,这样对于测试的所有输入就都是文档。而敏捷测试让测试人员在软件开发的最初就加入团队,为的就是使测试人员更加地靠近产品本身,对于产品经理的需求和开发人员的设计有深入的理解,甚至能和后续的部署和运维团队尽早地接触,了解到产品的全方位。    再次,尽早地使产品可以测试起来,越早越好。测试工作不再是软件开发中的某一个环节,而是时时刻刻贯穿于软件开发中。实现这一点的基础就是软件的可测性,而可测性又包括至少两点    有较为明确的需求指标(这里使用了“较为”两个字是因为有些非功能上的指标前期可能的确不太明了,但是随着产品开发的进行,最终还是会慢慢清晰的),这样才能对测试结果进行判定    有适合测试的接口

构建SaaS应用的12个要素

倖福魔咒の 提交于 2021-02-01 12:53:47
如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。 这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。 中文地址: https://12factor.net/zh_cn/ I. 基准代码 一份基准代码,多份部署 II. 依赖 显式声明依赖关系 III. 配置 在环境中存储配置 IV. 后端服务 把后端服务当作附加资源 V. 构建,发布,运行 严格分离构建和运行 VI. 进程 以一个或多个无状态进程运行应用 VII. 端口绑定 通过端口绑定提供服务 VIII. 并发 通过进程模型进行扩展 IX. 易处理 快速启动和优雅终止可最大化健壮性 X. 开发环境与线上环境等价 尽可能的保持开发,预发布,线上环境相同 XI. 日志 把日志当作事件流 XII. 管理进程 后台管理任务当作一次性进程运行 来源: oschina 链接: https:/