热词分析系统可修改性战术分析

Posted mawangwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了热词分析系统可修改性战术分析相关的知识,希望对你有一定的参考价值。

  可修改性描述了程序能够被正确修改的难易程度。

  可修改性主要关注两个问题:一,可以修改什么,可以修改系统的任何方面,最常见的就是系统计算的功能、系统存在的平台(硬件、操作系统和中间件等)、系统运行的环境(它必须与之互操作的系统,它用于与其他部分进行通信的协议,等等)、系统所展示的质量属性(其性能、可靠性、战至包括将来的可修改性)以及其容量(所支持的用户数量、同时发生的操作的数量,等等)。系统的某些部分(如用户界面或平台)可以分离出来,它们很容易发生变化.我们将对其进行单独讨论。平台种类的变化还被称为可移植性。这些变化可能是增加、删除或修改这些方而中的任何一个;二,何时进行变更以及由谁进行变更,过去最常见的是修改源代码。也就是说.开发人员必须修改代码,对修改后的代码进行测试,然后将其部署在新版本中。然而,现在不仅仅足何时变更的问题,而且还有由谁进行变更的问题。最终用户改变屏保很明显就是改变了系统的一个方面。同样明显的是,它与改变系统并不属于同一类,因此可以通过 Web 而非在一台机器上使用它。可以在编译期间(使川编译时切换)、构建期间(通过选择库)、配置设置期间(通过一系列手段,包括参数设置)或执行期间(通过参数设置)改变实现(通过修改源代码)。变更还可以由开发人员、最终用户或系统管理员进行。

                                                                            --软件架构实践原文

  说的通俗易懂一点,可修改性战术就是运用一些方法使得软件在一定时间和预算内完成、测试和部署变更,绝对不能出现牵一发而动全身或蝴蝶效应之类的情形,也就是防止连锁反应。

  下面,我将以我自己开发的热词分析系统为原型,阐述可修改性战术策略:分层处理,降低系统的耦合性。

  Web网页请求数据库中储存的热词过程:

  1.数据库连接类,DBUtil.java

 1 package com.wang.util;
 2 
 3 import java.sql.*;
 4  
 5 public class DBUtil {
 6     private static String driver;    
 7     private static String url;    
 8     private static String username;    
 9     private static String password;
10     
11     static {        
12         driver = "com.mysql.jdbc.Driver";        
13         url = "jdbc:mysql://127.0.0.1:3306/wang?useSSL=false&characterEncoding=utf8";        
14         username = "root";        
15         password = "123456";        
16         try {            
17             Class.forName(driver);        
18         } catch (ClassNotFoundException e) {            
19             e.printStackTrace();        
20         }     
21     }     
22     
23     public static Connection getConn() throws SQLException {        
24         return DriverManager.getConnection(url, username, password);    
25         }     
26     
27     public static void close(Connection conn, Statement st, ResultSet rs) {        
28         try {            
29             if (conn != null) {                
30                 conn.close();            
31                 }            
32             if (st != null) {                
33                 st.close();           
34                 }            
35             if (rs != null) {               
36                 rs.close();            
37                 }        
38             } catch (SQLException e) {   
39                 e.printStackTrace();       
40             }   
41     }
42 }

  2.Service层

 1 package com.wang.service;
 2 
 3 import com.wang.service.TopSearchService;
 4 import com.wang.util.DBUtil; 
 5 import java.sql.Connection;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.sql.Statement;
 9 import java.util.ArrayList;
10 import java.util.List;
11 
12 public class TopSearchService{
13     private Connection connection = null;    
14     private Statement statement = null;    
15     private ResultSet resultSet = null;     
16     
17     @Override    
18     public List<String> list() {        
19         String sql = "select title from info order by clickCount desc";        
20         List<String> list = new ArrayList<>(10);        
21         try {            
22             connection = DBUtil.getConn();           
23             statement = connection.createStatement();           
24             resultSet = statement.executeQuery(sql);          
25             while (resultSet.next()) {       
26                 list.add(resultSet.getString("title"));     
27                 }      
28             } catch (SQLException e) {       
29                 e.printStackTrace();      
30             } finally {       
31                 DBUtil.close(connection, statement, resultSet);     
32             }       
33         return list;  
34     }
35     
36 
37 }

  3.Servlet层

 1 package com.wang.servlet;
 2 
 3 
 4 import com.wang.service.TopSearchService;
 5 import com.wang.service.TopSearchServiceImpl;
 6 
 7 import java.io.IOException;
 8 import java.io.PrintWriter;
 9 
10 import javax.servlet.ServletException;
11 import javax.servlet.annotation.WebServlet;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import java.util.List;
16 /**
17  * Servlet implementation class TopSearchServlet
18  */
19 @WebServlet("/TopSearchServlet")
20 public class TopSearchServlet extends HttpServlet {
21     private static final long serialVersionUID = 1L;
22     TopSearchService topSearchService=new TopSearchService();   
23     /**
24      * @see HttpServlet#HttpServlet()
25      */
26     public TopSearchServlet() {
27         super();
28         // TODO Auto-generated constructor stub
29     }
30 
31     /**
32      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
33      */
34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35         //设置跨域请求        
36         response.setHeader("Access-Control-Allow-Origin","*");        
37         //处理中文乱码       
38         response.setContentType("text/html;charset=utf-8");        
39         //获取热搜列表       
40         List<String> lists=topSearchService.list();        
41         PrintWriter out=response.getWriter();        
42         if (lists.size() > 0) {            
43             out.println(toJson(lists));        
44         }    
45     }
46     
47     public static String toJson(List<String> list) {        
48         String data = "";        
49         int count=1;        
50         for (String str : list) {            
51             // "1":"title1","2":"title2",            
52             data+="""+count+"":""+str+"",";            
53             count++;        
54         }        
55         data+=""length":"+count;        
56         return "{"+data+"}";    
57     }
58         
59     
60     /**
61      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
62      */
63     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
64         // TODO Auto-generated method stub
65         doGet(request, response);
66     }
67 
68 }

  4.ajax技术,请求servlet页面获取数据,传到index页面

 1 $(function () {
 2     $.ajax({
 3         url: "http://localhost:8080/HotCi/TopSearchServlet",
 4         success: function (data) {
 5             //存放热搜列表
 6             var json = JSON.parse(data);
 7             var li;
 8             for (var i = 1; i < json.length; i++) {
 9                 if(i<=20){
10                     li = "<li><span>"+i+"</span><span>" + json[i] + "</span></li>";
11                     $("#list1").append($(li));
12                 }else if(i<=40){
13                     li = "<li><span>"+i+"</span><span>" + json[i] + "</span></li>";
14                     $("#list2").append($(li));
15                 }else{
16                     li = "<li><span>"+i+"</span><span>" + json[i] + "</span></li>";
17                     $("#list3").append($(li));
18                 }
19             }
20         }
21     });
22 });

  5.index页面

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>信息领域热词</title>
 6     <script src="js/jquery-3.4.1.min.js"></script>
 7     <style type="text/css">
 8         h2{text-align:center;}
 9         ul{list-style:none;font-size:25px;padding-left:200px;}
10         span{margin-right:30px;}
11         a{font-size:20px;}
12         small{margin-left:35px;}
13     </style>
14 </head>
15 <body>
16     <h2>2019信息领域热词排行榜<small><a href="echarts_word.html">热词字符云图</a></small><small><a href="guanxi.html">热词关系图</a></small></h2>        
17     <div>
18         <div style="float:left;"><ul id="list1"></ul></div>
19         <div style="float:left;"><ul id="list2"></ul></div>
20         <div style="float:left;"><ul id="list3"></ul></div>
21         <script src="js/search.js"></script>
22     </div>      
23 </body>
24 </html>

  通过这样一层一层,实现了前端页面访问数据库的操作。可修改的体现:

  1.数据库更换,修改DBUtill.java文件即可。

  2.数据表更换,修改持久层中表名即可。

  3.添加功能,在service中定义新的函数。  

  下面是字符云图和关系图,调用第三方插件echarts实现,这其中蕴含可修改性的地方便是传递数据。数据不同,最后形成的图形自然也不一样。

  技术图片

 

  技术图片

 

  热词分析系统:http://114.116.254.76:8080/HotCi/guanxi.html

 

以上是关于热词分析系统可修改性战术分析的主要内容,如果未能解决你的问题,请参考以下文章

信息领域热词分析

可修改性战术分析

可测试性战术分析

《河北省重大技术需求征集系统》可用性及可修改性战术分析

《信息领域热词分析》系统安全性战术分析

简要分析《XXX需求征集系统》采用的可用性和可修改性战术