盒式结构开发

盒式结构开发

未经允许,严禁转载本栏目内容

本文经许可转载自软件工程专家网www.21cmm.com

未经CSDN许可,请勿随便转载,谢谢合作

  "净室软件规范"描述了对系统或程序的两个功能性的观点。第一个基于外部行为(黑盒),第二个基于状态机(状态盒)。以下将描述第三个观点--用于实现状态盒并展示特定的外部行为的过程或算法(明盒)。

  自顶向下的循环过程必须做出许多设计决定。通过此过程,一个复杂系统的最高层规范转变为在计算机上执行的代码体。盒式结构方法本身不做出设计决定,但设计者最好考虑整个解空间。解空间包括了所有可能的实现--好的、坏的、拙劣的,也有快速的和慢速的解,易于修正和维护的和难以维护的解,在一个情况下可被接受但在另一种情况下不可行的方案。所以设计决定必须考虑很多经常发生冲突的情况。

  对行为的高层黑盒描述在特定需求下应惟一。在黑盒和反映行为的状态盒之间存在着一对多的关系。这里既有控制状态信息也有数据信息,在这两者之间还常常存在平衡。最小的控制状态信息可能可能使性能无法接受,最终导致设计含有过多的控制信息。同样,在表中存储的数据和按需求重新计算的数值之间也存在着平衡。

  下图显示了一般的解空间,其中有一个惟一的黑盒和几个可能的状态盒,所有这些状态盒都反映了黑盒的行为。盒式结构强调了这样的关系,并且提醒设计者考虑那些与所设计的所有特性相关的状态盒。赞扬特定的状态盒会(暂时地)排除许多解和限制,但不会完全确定明盒选项。


  在一个给定的状态盒和许多实现其功能的明盒或算法之间存在一对多的关系。同样,对明盒的选择会限制但不完全决定最终的解。如文中所述,明盒总是被定义为结构化的程序,其中可以包含更底层的黑盒。如果给定一个必须满足的清晰的规范,明盒中的每个黑盒就是惟一的了。这个逐步细化的过程产生了一个盒结构的分层结构图,如下图。

  在一个设计过程中始终保持修正和评估的开放性是很重要的。设计者不应该忽视这样一个事实:他要考虑的是整个解空间,以及选择一个从最高层黑盒到最终解的路径。更好的思路冬天冬天在设计过程中出现,很少有例外。最开始的方案几乎不可能是最好的,因此与其让一个差的设计进行下去,不如在对差的设计做再分析后找出更好的方法。设计的过程可被看作是分析与选择--要做出一系列的选择,估计并可能重新考虑。

  对选择的控制在很大程度上取决于结构。如果存在生产线结构,那么就会在解决方案中使用一些功能、状态和算法。设计者也应尽可能采取重新使用已有结构而不是重新开发盒式结构方法本身不创建结构和作出设计决定;这些任务应由设计者完成。然而了解整个解空间后,盒式结构有利于提高结构质量,在分析和决策后找出其他的可供选择的结构。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p> <span style="font-size:14px;color:#337FE5;">【为什么学爬虫?】</span> </p> <p> <span style="font-size:14px;">       1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到!</span> </p> <p> <span style="font-size:14px;">       2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站</span> </p> <p> <br /> </p> <span style="font-size:14px;color:#337FE5;">【课程设计】</span> <p class="ql-long-10663260"> <span> </span> </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 网络请求:模拟浏览器的行为从网上抓取数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 </li> <li class="" style="font-size:11pt;color:#494949;"> 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: </p> <ol> <li class="" style="font-size:11pt;color:#494949;"> 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 </li> <li class="" style="font-size:11pt;color:#494949;"> Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 </li> </ol> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 </p> <p style="font-size:11pt;color:#494949;">   </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! </p> <p class="ql-long-26664262" style="font-size:11pt;color:#494949;"> <br /> </p> <p> <br /> </p> <p> <span style="font-size:14px;background-color:#FFFFFF;color:#337FE5;">【课程服务】</span> </p> <p> <span style="font-size:14px;">专属付费社群+定期答疑</span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"><br /> </span> </p> <p> <br /> </p> <p class="ql-long-24357476"> <span style="font-size:16px;"></span> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值