# 软件维护需求描述

## 1.1 开源软件维护新增功能描述

为了改善开源软件中现有功能/性能的不足，并结合实际问题，构思的开源软件新功能描述如表1-1所示。

表1-1 软件新增功能描述表

| **功能名称** | **功能描述**                                                 |
| ------------ | ------------------------------------------------------------ |
| 回收站       | 用户删除某条便签后，便签自动移入回收站；用户可进入回收站还原误删除的便签（按删除的时间排序）；可以设置回收站的定时清理的时间间隔（默认是30天）；回收站最多存放50条被删除的便签。 |
|              |                                                              |
|              |                                                              |

## 1.2 开源软件维护需求

### 1.2.1 用例图

 

 

### 1.2.2 用例描述

**（1）****用例****1****：回收站**

******用例名称：**回收站管理功能

******功能：**用户访问垃圾桶界面并浏览已删除的便签列表。

**执行者：**用户、系统

**触发条件：**用户进入主界面的“回收站”。

**前置条件：**

1. 用户已登录。
2. 垃圾桶中存在至少1条已删除的便签。

**基本交互动作过程：** 
 1.用户选择"查看垃圾内容"

2.系统显示垃圾桶中所有待处理便签列表

2.a用户执行"彻底删除便签"（物理删除）

2.b用户执行"恢复便签到主页"（还原到原始位置）

3.用户设置"定时清理时间间隔"

4.系统自动执行周期性检查：
 4.a当检测到符合设置的清理条件时,自动执行"系统自动清理过期便签"
 4.b生成清理日志（包含清理时间、被清理便签数量）

。

******扩展交互动作过程：**

​    1.a垃圾桶为空时，系统显示“暂无已删除内容”提示。

​    2.b.a当用户尝试恢复已被系统自动清理的便签时,系统提示"该便签已永久删除，无法恢复"

​    3.a当用户设置非法时间间隔（如0或负数）,系统拒绝接受参数并提示有效时间范围

**后置条件：**

1. 成功操作后更新垃圾桶状态
2. 彻底删除的便签不可恢复
3. 恢复的便签重新出现在主页指定位置
4. 系统清理操作生成操作记录

**业务规则：**

1. 垃圾内容默认保留周期为30天（可配置）
2. 定时清理仅作用于标记为"过期"的便签
3. 恢复操作需保留便签原始属性和内容
4. 自动清理操作需在系统空闲时段执行

**********非功能需求：**

1. 敏感操作需二次确认（弹出确认对话框）
2. 提供最近7天清理记录的查询功能
3. 支持批量操作（多选便签处理）

****

# 二、   软件维护需求分析

# 2.1 用例顺序图

**（1）****用例****1****：**

 

 

## 2.2 分析类图

 

 

 

# 三、   维护设计和实现方案

## 3.1 开源软件体系结构的设计及调整

<描述对开源软件体系结构做了哪些方面的改进和调整，以支持维护需求的实现。说明：需要绘体系结构逻辑视图，并说明逻辑视图图中的哪些方面做了调整。>

原来小米便签的体系结构逻辑视图：

 

新增回收站功能的体系结构逻辑视图：

 

## 3.2 界面设计

 

 

## 3.3 详细设计

​    <说明：通过用例设计和类设计完成新增需求的详细设计。绘制每个新增用例的顺序图，详细说明各项维护需求是如何通过各个类对象之间的交互来完成的。描述新增或者调整类中的各个属性及方法>

### **一、回收站维护需求实现机制**

1.回收站内容查看

·交互流程：

用户 → TrashListActivity.显示回收站列表() 

→ TrashManager.查看垃圾内容() 

→ NotesProvider.query(附加条件：deleted_time IS NOT NULL)

→ WorkingNote.loadNote(包含过滤条件) 

→ 返回Note对象集合

·类调整：

TrashListActivity 新增：

private void loadTrashItems() { /* 调用TrashManager */ }

NotesProvider 新增查询条件：

WHERE delete_time BETWEEN ? AND ? AND expired_status=0

2.便签恢复操作

·交互流程：

用户 → TrashListActivity.恢复便签() 

→ TrashManager.执行恢复操作(noteId)

→ WorkingNote.restoreFromTrash()

→ NotesProvider.update(status=0, delete_time=null)

→ Note.标记为过期(false)

·类新增方法：

WorkingNote 新增：

Public int restoreFromTrash() {

​         return NotesProvider.update(Note.COLUMN_STATUS, Note.STATUS_NORMA  L);

}

3.彻底删除操作

·交互流程：

用户 → TrashListActivity.彻底删除便签()

→ TrashManager.执行永久删除(noteId)

→ NotesProvider.delete(物理删除)

→ CleanupScheduler.提交操作日志()

·关键验证：

TrashManager 中实现存在性检查：

if(NotesProvider.query(noteId) == null) throw new NoteNotFoundException();

**二、自动清理机制实现**

1.周期设置与验证

·交互流程：

用户 → 系统设置界面 

→ TrashManager.设置清理间隔(天数)

→ if(天数 < 1) 触发参数验证规则异常

→ CleanupScheduler.启动定时任务(天数*86400000)

·类结构变更：

TrashManager 新增验证方法：

private boolean validateInterval(int days) {

​     return days > 0 && days <= 365;

}

2.自动清理执行

·定时任务流程：

CleanupScheduler.执行自动清理() 

→ NotesProvider.查询待清理数据() 

→ WHERE delete_time < (NOW() - 30天)

→ 批量调用NotesProvider.delete() 

→ 更新Note.过期状态=true

·数据库优化：

NotesProvider 新增索引：

CREATE INDEX idx_delete_time ON notes(delete_time);

 

| **类名**          | **新增属性/方法**                   | **交互关系变化**               |
| ----------------- | ----------------------------------- | ------------------------------ |
| TrashManager      | - 保留周期属性   - 参数验证规则     | 新增→CleanupScheduler调度依赖  |
| CleanupScheduler  | - 时间间隔属性   - 执行自动清理()   | 新增←→NotesProvider数据通道    |
| NotesProvider     | - 标记软删除()   - 查询待清理数据() | 扩展←→Note实体状态管理         |
| Note              | - 删除时间   - 过期状态             | 新增←→TrashManager状态同步     |
| TrashListActivity | - 显示回收站列表()   - 批量操作控件 | 新增←→NotesListAdapter数据绑定 |

 

### 3.3.1 用例设计

**1.** **访问回收站**

点击应用主界面的「回收站」入口

**2.** **设置自动清理策略**

在回收站设置页输入「清理间隔天数」（如30天）

点击「保存设置」按钮

**3.** **删除单个便签**

在便签列表长按目标项

选择弹出菜单中的「永久删除」选项

**4.** **恢复误删内容**

勾选要恢复的便签项

点击工具栏的「恢复」按钮

（若原路径失效）在弹出的对话框选择新存储位置

 

 

 

### 3.3.2 类设计

 