首页 > 其他分享 >浅谈敏捷设计

浅谈敏捷设计

时间:2022-11-04 23:14:30浏览次数:75  
标签:改动 浅谈 粘滞性 软件设计 软件 敏捷 设计

https://www.cnblogs.com/imyalost/p/7689920.html

在软件开发过程中,都避免不了进行概要设计、详细设计等过程,这和软件测试过程中进行测试计划测试方案设计很类似。

这篇博客,就说说敏捷设计的一些内容,以及拙劣设计对软件应用的严重影响。

 

我们日常接触到的软件项目是一个抽象的概念,它和程序包括形状、结构以及每一个模块、类和方法都有关。可以通过很多媒介和语言去描述它,但它最终体现为源代码——源代码就是设计。

应该知道的一件事是:软件都是有生命周期的。当出现以下任何一点时,就表明软件正在步入声明晚期。

一、拙劣设计的表现

1、僵化性(Rigidity)

僵化性指的是难以对软件进行改动,即使是简单的改动。单一的改动可能会导致有依赖关系的模块出现不可预知的变化,可以将其称之为:业务和技术的屏障!最常见的具体表现为:需求变更!

2、脆弱性(Fragility)

脆弱性指的是进行一个改动时,程序的许多地方可能会出问题。常见的表现是出问题的地方与改动的地方并没有概念上的关联,修正这些问题就会引起更多的问题,这样会导致技术负债不断变大!

3、牢固性(Immobility)

牢固性是指设计难以重用。比如设计中包含了对其他系统有用的部分,要将其从系统中剥离出来所需要的努力和风险太大。

PS:这也是这几年微服务和DevOps越来越流行的原因。

4、粘滞性(Viscosity)

粘滞性有2中表现形式:

①软件的粘滞性:对软件进行改动有很多方法,有些可以保持设计,有些会破坏设计。当可以保持系统设计的方法比生硬方法更难以使用时,就表明系统具有较高的粘滞性。

  敏捷设计的目标是:软件设计应该可以容易的进行那些保持设计的变动。

②环境的粘滞性:开发环境的迟钝、低效,就会产生环境的粘滞性。比如编译花费时间长,比如代码管理需要花费几个小时去check in仅仅几个文件,这样都很难保持项目中的软件设计。

  敏捷设计目标是:创建易于保持系统设计的软件环境。

5、复杂性(Complexity)

复杂性则指的是设计中包含了当前没有用的组成部分。它还有不必要的复杂性。我们在进行软件设计时经常为了保持代码的灵活性和扩展性,而设置本次迭代并不会用到的结构设计,这样会使得

软件变得复杂,并且难以理解。

6、重复性(Repetition)

滥用重复的代码,这是软件设计重复性表现最频繁的方式。代码设计应该是抽象、简洁的。当系统中重复的代码较多时,会使得系统难以改动,且难以阅读,出现问题时也需要对其进行一一修正。

但每个重复体之间都有细微的差别,所以修正的方式也不同,这样会导致大量重复的工作,降低了工作效率。应该努力做正确的、产生更多价值的事情,而不是造轮子

7、晦涩性(Opacity)

晦涩性指的是模块难以理解。如果模块代码难以理解阅读,随着时间变化而代码进行演化,会变得越来越难以理解。所以,编程是一门艺术,代码应该是优雅、易读的

 

二、为什么设计会变得拙劣?

需要知道的一点:需求是项目中最不稳定的因素。如果我们的软件设计由于持续的、大量的需求变更而变得拙劣,那就表明我们的设计和实践本身是具有缺陷的。

 

三、保持尽可能好的设计

敏捷开发人员应致力于保持设计尽可能的适当、干净。不断优化设计,不是几周甚至几个月才进行一次的事情,而应该贯穿与软件的整个项目周期,经常性的去优化。

源代码是设计最重要的指表示,所以它同样要保持干净。这也是一种职业素养

 

四、什么是敏捷设计

敏捷设计时一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结果和可读性的过程。它致力于保持系统设计在任何时间都尽可能的简单、干净以及富有表现力!

 

标签:改动,浅谈,粘滞性,软件设计,软件,敏捷,设计
From: https://www.cnblogs.com/ceshi2016/p/16859388.html

相关文章

  • C++《面向对象程序设计课程设计》
    C++《面向对象程序设计课程设计》《面向对象程序设计课程设计》课程说明适用专业:计算机科学与技术课程周数:5周一、根据计算机科学与技术专业人才培养方案制订。(一)课程......
  • 敏捷开发的宣言和原则
    https://www.cnblogs.com/imyalost/p/7653574.html一、敏捷软件开发宣言个体和互动高于流程和工具工作的软件高于详尽的文档--注重产品本身,而不是形式和流程,文档应简洁......
  • 软件设计__ 软件体系结构设计
    难度:★★★概述定义程序或计算机系统的软件体系结构(SoftwareArchitecture)是指:系统的一个或者多个结构,它包括软件构件、构件的外部可见属性以及它们之间的相互关系。--......
  • 浅谈持续集成
    转载:https://www.cnblogs.com/imyalost/p/9326779.html参考资料:《京东系统质量保障技术实战》其他资料:《jenkins入门指南》、《持续集成:软件质量改进和风险降低之道......
  • 数字n代表生成括号的对数,设计一个函数,用于能够生成所有可能的并且有效的括号组合 回溯
    题目描述:数字n代表生成括号的对数,设计一个函数,用于能够生成所有可能的并且有效的括号组合如  n=2 则输出//['(())','()()']  n=3则输出//['((()))','(()()......
  • 项目设计
    技术使用1.1、平台软件本次关于软件方面的设计,选择使用IDEA,微信开发者工具、VsCode作为我们的软件开发平台SSM框架(SpringSpringMVCMybatis)SpringBoot、Mybatis-Plus,......
  • 毕业设计养老院管理系统
    @目录养老管理系统1.管理员信息模块2.康护管理模块2.1健康管理2.2护理管理2.3康娱管理3.服务管理模块3.1餐饮管理3.2接待管理4.人事管理模块4.1后勤管理4.2老人Echar......
  • 数据库设计心得——千朵玫瑰带来的黎明
    数据库设计心得——千朵玫瑰带来的黎明1.项目简介与背景随着中国工业化的高速发展,公路总里程已经达到525万公里,大桥数量已经超过100万座。因此,如何针对路面和桥梁的缺陷......
  • 基于微信小程序的电子病历系统设计与实现-计算机毕业设计源码+LW文档
    摘 要网络的广泛应用给生活带来了十分的便利。所以把电子病历管理与现在网络相结合,利用java技术建设电子病历系统,实现电子病历的信息化。则对于进一步提高电子病历管理发......
  • 基于微信小程序的签到系统设计与实现-计算机毕业设计源码+LW文档
    摘要随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理签到系统app的最新形式。本论文是......