软件体系结构描述语言:C2 学校教务系统中教师补课子系统有如下一些基本假设: 本系统中有三个基本对象:教师、学生和教务员。 补课基本流程如下: 教师(teacher)分别向学生(student)与教务员(dean)发出补课请求makeupClassRequest()、并提供一个教师期望的补课时间与地点的集合preferSetTeacher(time, address),提出一个教师不期望的补课时间与地点集合excludeSetTeacher(time, address)供学生选择。同时,教师向学生与教务员发出请求获取学生与教务员期望的补课时间地点集合getPerferSet(),获取不喜欢的时间地点集合getExcludeSet(),获取教师所提供的期望补课时间地点集合之外的时间地点集合addPreferSet(), 学生与教务员收到教师的补课请求以及相应的参数后,根据自身的情况以及学校课室的使用情况,结合教师所提供的preferSetTeacher(time, address)、excludeSetTeacher(time, address),①从preferSetTeacher(time, address)集合中选取出合适的元组组成学生自己所期望的补课时间与地点集合preferSet(time,address)。②增加不在excludeSetTeacher(time, address)的时间与地点集合excludeSet(time, address)。最后将preferSet(time,address)与excludeSet(time, address)发回给教师。 教师接收到学生与教务员返回的集合excludeSet(time, address)后,与excludeSet(time, address)进行“并”(or)计算。接收到preferRes(time, address)后,与原有的preferSet(time, address)进行“交”(and)计算,然后再与excludeSet(time, address)进行差(subtraction)运算。 教师最后从preferSetTeacher(time, address)集合中选择一个元组作为补课的时间与地点,并通知学生与教务处。 ### C2语言描述知识点 #### 一、C2语言简介及背景 C2是一种软件体系结构描述语言,它主要用于描述软件系统的结构和行为。通过C2语言,开发人员能够清晰地定义系统的各个组成部分及其交互方式,这对于理解复杂系统的架构特别有用。在本案例中,我们将运用C2语言来描述一个学校教务系统的补课子系统。 #### 二、系统基本假设与对象 在学校的教务系统中,补课子系统主要包括以下三个基本对象: 1. **教师(Teacher)**:负责发起补课请求,提供或调整补课时间和地点。 2. **学生(Student)**:响应教师的补课请求,给出自己期望的补课时间和地点。 3. **教务员(Dean)**:协助管理补课过程,处理教师和学生的请求。 #### 三、补课基本流程 补课的基本流程可以分为以下几个步骤: 1. **教师发起补课请求**:教师分别向学生和教务员发送补课请求,并提供两个集合——期望的补课时间与地点集合`preferSetTeacher(time, address)`和不期望的补课时间与地点集合`excludeSetTeacher(time, address)`。 2. **学生与教务员响应**:学生和教务员在收到请求后,根据自身情况和学校课室使用情况,从教师提供的`preferSetTeacher`中选取合适的时间地点组成自己的`preferSet(time, address)`,并增加不在教师排除列表内的地点和时间到自己的`excludeSet(time, address)`中。之后,将这两个集合反馈给教师。 3. **教师处理反馈信息**:教师接收到来自学生和教务员的`excludeSet(time, address)`后,进行“并”操作;接着对`preferRes(time, address)`进行“交”操作,然后与`excludeSet(time, address)`进行差运算。 4. **确定补课时间和地点**:教师从最终的`preferSetTeacher`中选择一个时间地点组合,通知学生和教务员。 #### 四、C2语言描述 接下来,我们使用C2语言具体描述上述补课子系统的教师和学生构件。 ##### 教师构件 ```c2 component teacher is interface top_domain is out preferSetTeacher(time, address); excludeSetTeacher(time, address); makeupClassRequest(); in getPreferSet(); getExcludeSet(); addPreferSet(); behavior start_up always_generate makeupClassRequest(), preferSetTeacher(time, address), excludeSetTeacher(time, address); received_message getPreferSet() may_generate preferSetTeacher(time, address); received_message getExcludeSet() may_generate excludeSetTeacher(time, address); received_message addPreferSet() may_generate preferSetTeacher(time, address); end_up may_generate (excludeSet(time, address) or excludeSetTeacher(time, address)), ((preferSet(time, address) and preferSetTeacher(time, address)) - excludeSet(time, address)); end teacher; ``` ##### 学生构件 ```c2 component student is interface bottom_domain is out preferSet(time, address); excludeSet(time, address); in preferSetTeacher(time, address); excludeSetTeacher(time, address); behavior start_up always_generate // 学生开始时无需生成任何消息 received_message preferSetTeacher(time, address) may_generate preferSet(time, address); // 选择时间地点 received_message excludeSetTeacher(time, address) may_generate excludeSet(time, address); // 增加排除的时间地点 end student; ``` #### 五、连接件设计 连接件用于描述不同构件之间的交互方式,包括数据传递和控制流。在这个例子中,可以设计一个简单的连接件来描述教师与学生之间的通信机制。 #### 六、实例设计 假设教师名为张三,学生为a、b、c三人,教务员为李四。可以通过C2语言构建具体的实例场景来更好地理解和实现该补课子系统。 通过上述C2语言描述,我们可以清晰地看到教务系统补课子系统的结构和工作流程,这有助于开发者更有效地理解和实现该系统。
- Liang-ZHANG2013-07-25正好在学习软件工程,下载下来看看,还不错。
- 粉丝: 0
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助