4 假设某公司人力资源管理系统中有如下一段代码。根据代码,回答下列问题。
(1)画出GetResult函数对应算法的判定树。
(2)计算GetResult函数的环形复杂度。
(3)根据(2)的结果,指出该函数存在的问题。
(4)根据模块独立性的内聚度划分,该函数的内聚度属于哪种?
(5)如何修改该函数,以达到较好的内聚度并解决(3)中的问题?
(6)根据上述问题的结论试叙述模块内聚度与单元测试工作量之间的关系。
void GetResult(Manager m, Request r)
{
if (m.ManagerLevel == “经理”) {
if (r.RequestType == “请假” && r.Number <= 2) {
cout << m.Name << “:” << r.RequestContent
<< “ 被批准”;
} else {
cout << m.Name << “:” << r.RequestContent
<< “ 我无权处理”;
}
}
else if (m.ManagerLevel == “总监”) {
if (r.RequestType == “请假” && r.Number <= 5) {
cout << m.Name << “:” << r.RequestContent
<< “ 被批准”;
} else {
cout << m.Name << “:” << r.RequestContent
<< “ 我无权处理”;
}
}
else if (m.ManagerLevel == “总经理”) {
if (r.RequestType == “请假”) {
cout << m.Name << “:” << r.RequestContent
<< “ 被批准”;
} else if (r.RequestType == “加薪” && r.Number <=
500) {
cout << m.Name << “:” << r.RequestContent
<< “ 被批准”;
} else if (r.RequestType == “加薪” && r.Number > 500)
{
cout << m.Name << “:” << r.RequestContent
<< “ 再说吧”;
}
}
}