Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
I
inspect
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
912协同工作系统
项目监控管理工具
inspect
Commits
bc13bf89
提交
bc13bf89
authored
3月 06, 2020
作者:
wyl
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
工作量工具类
上级
def86cbd
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
302 行增加
和
66 行删除
+302
-66
BrowserDifficulty.java
src/main/java/com/zjty/inspect/entity/BrowserDifficulty.java
+38
-1
WorkLoadUtil.java
src/main/java/com/zjty/inspect/utils/WorkLoadUtil.java
+264
-65
没有找到文件。
src/main/java/com/zjty/inspect/entity/BrowserDifficulty.java
浏览文件 @
bc13bf89
...
...
@@ -47,7 +47,44 @@ public class BrowserDifficulty {
/**
* 用户额外需求
*/
private
String
demand
=
"*********"
;
/**
* 地理信息系统 int 1:是 2:否
*/
private
Integer
geography
;
/**
* 调用外设
*/
private
Integer
peripheral
;
/**
*动画
*/
private
Integer
animation
;
/**
* 3d展示
*/
private
Integer
threeD
;
/**
* 公文显现与编辑
*/
private
Integer
document
;
/**
* 多媒体
*/
private
Integer
media
;
/**
* Flash
*/
private
Integer
flash
;
/**
* 其他
*/
private
Integer
otherDemand
;
}
src/main/java/com/zjty/inspect/utils/WorkLoadUtil.java
浏览文件 @
bc13bf89
package
com
.
zjty
.
inspect
.
utils
;
import
com.alibaba.fastjson.JSON
;
import
com.zjty.inspect.entity.*
;
import
com.zjty.inspect.enums.CompatibleBrowser
;
import
com.zjty.inspect.enums.DatabaseType
;
import
com.zjty.inspect.enums.Framework
;
import
com.zjty.inspect.enums.MiddlewareEnum
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.util.List
;
...
...
@@ -13,164 +17,359 @@ import java.util.List;
* @Date 2020-03-6 14:20
*/
public
class
WorkLoadUtil
{
public
double
calculate
(
Reform
reform
){
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
private
double
calculate
(
Reform
reform
){
logger
.
info
(
"分值计算,输入:"
+
JSON
.
toJSON
(
reform
));
double
score
=
0
;
/**
* 系统部署架构,其他需求,分布式、负载均衡、容灾每个+10
*/
SystemStructure
systemStructure
=
reform
.
getSystemStructure
();
if
(
systemStructure
!=
null
)
{
//分布式
if
(
systemStructure
.
getDistributed
()==
1
){
score
+=
10
;
if
(
systemStructure
.
getDistributed
()
!=
null
&&
systemStructure
.
getDistributed
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"分布式+10:"
+
score
);
}
//负载均衡
if
(
systemStructure
.
getLoadBalance
()==
1
){
score
+=
10
;
if
(
systemStructure
.
getLoadBalance
()
!=
null
&&
systemStructure
.
getLoadBalance
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"负载均衡+10:"
+
score
);
}
//容灾
if
(
systemStructure
.
getDisaster
()==
1
){
score
+=
10
;
if
(
systemStructure
.
getDisaster
()
!=
null
&&
systemStructure
.
getDisaster
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"容灾+10:"
+
score
);
}
}
/**
* 前端浏览器相关
*/
Browser
browser
=
reform
.
getBrowser
();
if
(
browser
!=
null
)
{
//如果原浏览器包含IE,+10
if
(
browser
.
getCompatibleBrowsers
().
contains
(
CompatibleBrowser
.
IETRIDENT
)){
score
+=
10
;
if
(
browser
.
getCompatibleBrowsers
().
contains
(
CompatibleBrowser
.
IETRIDENT
))
{
score
+=
10
;
logger
.
info
(
"包含IE+10:"
+
score
);
}
/*更多需求,每个+1*/
//地理信息系统
if
(
browser
.
getGeography
()==
1
){
score
+=
1
;
if
(
browser
.
getGeography
()!=
null
&&
browser
.
getGeography
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-地理信息系统+1:"
+
score
);
}
//调用外设
if
(
browser
.
getPeripheral
()==
1
){
score
+=
1
;
if
(
browser
.
getPeripheral
()!=
null
&&
browser
.
getPeripheral
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-调用外设+1:"
+
score
);
}
//动画
if
(
browser
.
getAnimation
()==
1
){
score
+=
1
;
if
(
browser
.
getAnimation
()!=
null
&&
browser
.
getAnimation
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-动画+1:"
+
score
);
}
//3D展示
if
(
browser
.
getThreeD
()==
1
){
score
+=
1
;
if
(
browser
.
getThreeD
()!=
null
&&
browser
.
getThreeD
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-3D展示+1:"
+
score
);
}
//公文实现与编辑
if
(
browser
.
getDocument
()==
1
){
score
+=
1
;
if
(
browser
.
getDocument
()!=
null
&&
browser
.
getDocument
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-公文编辑+1:"
+
score
);
}
//多媒体
if
(
browser
.
getMedia
()==
1
){
score
+=
1
;
if
(
browser
.
getMedia
()!=
null
&&
browser
.
getMedia
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-多媒体+1:"
+
score
);
}
//flash
if
(
browser
.
getFlash
()==
1
){
score
+=
1
;
if
(
browser
.
getFlash
()!=
null
&&
browser
.
getFlash
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-flash+1:"
+
score
);
}
//其他
if
(
browser
.
getOtherDemand
()==
1
){
score
+=
1
;
if
(
browser
.
getOtherDemand
()!=
null
&&
browser
.
getOtherDemand
()
==
1
)
{
score
+=
1
;
logger
.
info
(
"浏览器-其他+1:"
+
score
);
}
}
/**
* 中间件,除Tomcat外每个+5;更多需求,每个+10
*/
Middleware
middleware
=
reform
.
getMiddleware
();
if
(
middleware
!=
null
)
{
List
<
MiddlewareEnum
>
middlewareEnums
=
middleware
.
getMiddlewareEnums
();
int
effectMidNum
=
middlewareEnums
.
size
();
if
(
middlewareEnums
.
contains
(
MiddlewareEnum
.
TOMCAT
))
{
if
(
middlewareEnums
.
contains
(
MiddlewareEnum
.
TOMCAT
))
{
effectMidNum
--;
}
if
(
middleware
.
getOtherMiddleware
()!=
null
&&!
middleware
.
getOtherMiddleware
().
trim
().
equals
(
""
))
{
if
(
middleware
.
getOtherMiddleware
()
!=
null
&&
!
middleware
.
getOtherMiddleware
().
trim
().
equals
(
""
))
{
effectMidNum
++;
}
score
+=
effectMidNum
*
5
;
score
+=
effectMidNum
*
5
;
logger
.
info
(
"中间件-数量*5:"
+
effectMidNum
+
"\t"
+
score
);
/*更多需求*/
//Web集群
if
(
middleware
.
getWeb
()==
1
){
score
+=
10
;
if
(
middleware
.
getWeb
()!=
null
&&
middleware
.
getWeb
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"中间件-Web集群+10:"
+
score
);
}
//Jndi集群
if
(
middleware
.
getJndi
()==
1
){
score
+=
10
;
if
(
middleware
.
getJndi
()!=
null
&&
middleware
.
getJndi
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"中间件-Jndi集群+10:"
+
score
);
}
//Jms集群
if
(
middleware
.
getJms
()==
1
){
score
+=
10
;
if
(
middleware
.
getJms
()!=
null
&&
middleware
.
getJms
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"中间件-Jms集群+10:"
+
score
);
}
//消息路由
if
(
middleware
.
getRoute
()==
1
){
score
+=
10
;
if
(
middleware
.
getRoute
()!=
null
&&
middleware
.
getRoute
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"中间件-消息路由+10:"
+
score
);
}
}
/**
* 数据库相关,除mysql每个+10;小需求每个+2;更多需求每个+10
*/
Database
database
=
reform
.
getDatabase
();
if
(
database
!=
null
)
{
List
<
DatabaseType
>
databaseType
=
database
.
getDatabaseType
();
int
effectDatabaseNum
=
databaseType
.
size
();
if
(
databaseType
.
contains
(
DatabaseType
.
MYSQL
))
{
if
(
databaseType
.
contains
(
DatabaseType
.
MYSQL
))
{
effectDatabaseNum
--;
}
if
(
database
.
getOtherType
()!=
null
&&!
database
.
getOtherType
().
trim
().
equals
(
""
))
{
if
(
database
.
getOtherType
()
!=
null
&&
!
database
.
getOtherType
().
trim
().
equals
(
""
))
{
effectDatabaseNum
++;
}
score
+=
effectDatabaseNum
*
10
;
score
+=
effectDatabaseNum
*
10
;
logger
.
info
(
"数据库-数量*10:"
+
effectDatabaseNum
+
"\t"
+
score
);
/*小需求,每个+2*/
//视图
if
(
database
.
getView
()==
1
){
score
+=
2
;
if
(
database
.
getView
()!=
null
&&
database
.
getView
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-视图+2:"
+
score
);
}
//存储过程
if
(
database
.
getStorage
()==
1
){
score
+=
2
;
if
(
database
.
getStorage
()!=
null
&&
database
.
getStorage
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-存储过程+2:"
+
score
);
}
//函数
if
(
database
.
getFunction
()==
1
){
score
+=
2
;
if
(
database
.
getFunction
()!=
null
&&
database
.
getFunction
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-函数+2:"
+
score
);
}
//DbLink
if
(
database
.
getDbLink
()==
1
){
score
+=
2
;
if
(
database
.
getDbLink
()!=
null
&&
database
.
getDbLink
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-DBLink+2:"
+
score
);
}
//定时任务
if
(
database
.
getTimeTask
()==
1
){
score
+=
2
;
if
(
database
.
getTimeTask
()!=
null
&&
database
.
getTimeTask
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-定时任务+2:"
+
score
);
}
//序列
if
(
database
.
getSequence
()==
1
){
score
+=
2
;
if
(
database
.
getSequence
()!=
null
&&
database
.
getSequence
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-序列+2:"
+
score
);
}
//触发器
if
(
database
.
getTrigger
()==
1
){
score
+=
2
;
if
(
database
.
getTrigger
()!=
null
&&
database
.
getTrigger
()
==
1
)
{
score
+=
2
;
logger
.
info
(
"数据库-触发器+2:"
+
score
);
}
/*更多需求*/
//容灾:2主备3分布式
if
(
database
.
getDisasterTolerance
()==
2
||
database
.
getDisasterTolerance
()==
3
){
score
+=
10
;
if
(
database
.
getDisasterTolerance
()!=
null
&&(
database
.
getDisasterTolerance
()
==
2
||
database
.
getDisasterTolerance
()
==
3
))
{
score
+=
10
;
logger
.
info
(
"数据库-容灾-主备/分布式+10:"
+
score
);
}
//安全
if
(
database
.
getSafe
()==
1
){
score
+=
10
;
if
(
database
.
getSafe
()!=
null
&&
database
.
getSafe
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"数据库-安全+10:"
+
score
);
}
//读写分离
if
(
database
.
getSeparate
()==
1
){
score
+=
10
;
if
(
database
.
getSeparate
()!=
null
&&
database
.
getSeparate
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"数据库-读写分离+10:"
+
score
);
}
//更高性能
if
(
database
.
getPerformance
()==
1
){
score
+=
10
;
if
(
database
.
getPerformance
()!=
null
&&
database
.
getPerformance
()
==
1
)
{
score
+=
10
;
logger
.
info
(
"数据库-更高性能+10:"
+
score
);
}
//其他
if
(
database
.
getOtherContent
()!=
null
&&!
database
.
getOtherContent
().
trim
().
equals
((
""
))){
score
+=
10
;
if
(
database
.
getOtherContent
()
!=
null
&&
!
database
.
getOtherContent
().
trim
().
equals
((
""
)))
{
score
+=
10
;
logger
.
info
(
"数据库-其他+10:"
+
score
);
}
}
/*迁移策略:平滑过渡+50%;短暂停顿+20%*/
if
(
reform
.
getStrategy
()==
1
){
if
(
reform
.
getStrategy
()
!=
null
&&
reform
.
getStrategy
()
==
1
){
score
+=
score
/
2
;
}
else
if
(
reform
.
getStrategy
()==
2
){
logger
.
info
(
"迁移策略-平滑过渡+50%:"
+
score
);
}
else
if
(
reform
.
getStrategy
()!=
null
&&
reform
.
getStrategy
()==
2
){
score
+=
score
/
5
;
logger
.
info
(
"迁移策略-短暂停顿+20%:"
+
score
);
}
return
score
;
}
//f:工作量(马)
//r:人工费
public
void
result
(
Reform
reform
,
AssessmentReport
report
,
double
f
,
double
r
){
logger
.
info
(
"计算工作量,输入:"
+
JSON
.
toJSONString
(
report
));
//总计J = F(马) * 人工费
double
j
=
f
/
r
;
logger
.
info
(
"总计J:"
+
j
);
/*
计算以下三项,拼接字符串,完成关键技术及替换策略建议:
*/
//关键技术xx个
//本地程序开发项xx个
//中间件依赖修改项xx个
String
string
=
"本系统通过源代码评估适配关键技术"
+
report
.
getTechnologyList
().
getTechnologyReports
().
size
()+
"项,"
+
"其中本地程序开发修改项"
+
report
.
getDifficultyAssessment
().
getProgramDifficulty
().
getDependOnNum
().
size
()+
"项,"
+
"中间件依赖修改项"
+
report
.
getDifficultyAssessment
().
getMiddlewareDifficulty
().
getDependOnNum
().
size
()+
"个...."
;
/*
先计算难度,再算基础工作量
*/
FrameDifficulty
frameDifficulty
=
report
.
getDifficultyAssessment
().
getFrameDifficulty
();
//系统部署架构难度P(混合:1.1 前后分离:1)即系统评估
double
pFramework
=
(
frameDifficulty
.
getDetails
()==
1
)?
1.1
:
1
;
logger
.
info
(
"系统部署架构难度-评估:"
+
pFramework
);
frameDifficulty
.
setSystemEvaluation
(
pFramework
);
//系统部署架构难度e(分布式 0.2 负载均衡 0.1 容灾0.1 其他0.1) e = 1.2*1.1*1.1*1.1 即用户额外信息
double
eFramework
=
1
*
frameDifficulty
.
getDistributed
()==
1
?
1.2
:
1
*
frameDifficulty
.
getLoadBalance
()==
1
?
1.1
:
1
*
frameDifficulty
.
getDisaster
()==
1
?
1.1
:
1
;
logger
.
info
(
"系统部署架构难度-用户额外:"
+
eFramework
);
frameDifficulty
.
setMessage
(
eFramework
);
//系统部署架构综合难度 p*e
double
multipleFramework
=
pFramework
*
eFramework
;
logger
.
info
(
"系统部署架构难度-综合:"
+
multipleFramework
);
frameDifficulty
.
setDifficulty
(
multipleFramework
);
//工作量2*j*(z-1)
double
frameworkWorkload
=
2
*
j
*(
multipleFramework
-
1
);
logger
.
info
(
"系统部署工作量:"
+
frameworkWorkload
);
BrowserDifficulty
browserDifficulty
=
report
.
getDifficultyAssessment
().
getBrowserDifficulty
();
//浏览器难度P(0.001*样式数量+0.01*API数量+0.01*插件数量+1) max=1.3
double
pBrowser
=
0.001
*
browserDifficulty
.
getStyle
()+
0.01
*
browserDifficulty
.
getApi
()+
0.01
*
browserDifficulty
.
getPlugInUnit
()+
1
;
pBrowser
=
pBrowser
>
1.3
?
1.3
:
pBrowser
;
logger
.
info
(
"浏览器难度-评估:"
+
pBrowser
);
browserDifficulty
.
setSystemEvaluation
(
pBrowser
);
//浏览器难度e(1+需求分数/100)*(1+需求分数/100) max=1.3
double
eBrowser
=
(
1
+(
browserDifficulty
.
getGeography
()!=
null
&&
browserDifficulty
.
getGeography
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getPeripheral
()!=
null
&&
browserDifficulty
.
getPeripheral
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getAnimation
()!=
null
&&
browserDifficulty
.
getAnimation
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getThreeD
()!=
null
&&
browserDifficulty
.
getThreeD
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getDocument
()!=
null
&&
browserDifficulty
.
getDocument
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getMedia
()!=
null
&&
browserDifficulty
.
getMedia
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getFlash
()!=
null
&&
browserDifficulty
.
getFlash
()==
1
?
1
:
0
)/
100
)*
(
1
+(
browserDifficulty
.
getOtherDemand
()!=
null
&&
browserDifficulty
.
getOtherDemand
()==
1
?
1
:
0
)/
100
);
eBrowser
=
eBrowser
>
1.3
?
1.3
:
eBrowser
;
logger
.
info
(
"浏览器难度-用户额外:"
+
eBrowser
);
browserDifficulty
.
setMessage
(
eBrowser
);
//浏览器综合难度 p*e开根号
double
multipleBrowser
=
Math
.
sqrt
(
pBrowser
*
eBrowser
);
logger
.
info
(
"浏览器难度-综合:"
+
multipleBrowser
);
browserDifficulty
.
setDifficulty
(
multipleBrowser
);
//工作量2*j*(z-1)
double
browserWorkload
=
2
*
j
*(
1
-
multipleBrowser
);
logger
.
info
(
"系统部署工作量:"
+
browserWorkload
);
MiddlewareDifficulty
middlewareDifficulty
=
report
.
getDifficultyAssessment
().
getMiddlewareDifficulty
();
//中间件系统评估P (1+0.001*依赖数量)*(1+0.001*依赖数量)
double
pMiddle
=
1
;
for
(
DependOnNum
dependOnNum:
middlewareDifficulty
.
getDependOnNum
()){
pMiddle
*=(
1
+
0.001
*
dependOnNum
.
getNum
());
}
pMiddle
=
pMiddle
>
1.3
?
1.3
:
pMiddle
;
logger
.
info
(
"中间件难度-评估:"
+
pMiddle
);
middlewareDifficulty
.
setSystemEvaluation
(
pMiddle
);
//中间件系统评估e (1+需求分数/100)*(1+需求分数/100) max=1.3
double
emiddle
=
(
1
+(
middlewareDifficulty
.
getWeb
()==
1
?
1
:
0
)/
100
)*
(
1
+(
middlewareDifficulty
.
getJms
()==
1
?
1
:
0
)/
100
)*
(
1
+(
middlewareDifficulty
.
getJndi
()==
1
?
1
:
0
)/
100
)*
(
1
+(
middlewareDifficulty
.
getRoute
()==
1
?
1
:
0
)/
100
);
emiddle
=
emiddle
>
1.3
?
1.3
:
emiddle
;
logger
.
info
(
"中间件难度-用户额外:"
+
emiddle
);
middlewareDifficulty
.
setMessage
(
emiddle
);
//中间件综合难度 p*e开根号
double
multipleMiddle
=
Math
.
sqrt
(
pMiddle
*
emiddle
);
logger
.
info
(
"中间件难度-综合:"
+
multipleMiddle
);
middlewareDifficulty
.
setDifficulty
(
multipleMiddle
);
//工作量2*j*(z-1)
double
middleWorkload
=
2
*
j
*(
multipleMiddle
-
1
);
logger
.
info
(
"中间件工作量:"
+
middleWorkload
);
DatabaseDifficulty
databaseDifficulty
=
report
.
getDifficultyAssessment
().
getDatabaseDifficulty
();
//数据库e (1+需求/100)*...*(1+需求/100)
double
eDatabase
=
1
;
for
(
DependOnNum
dependOnNum:
databaseDifficulty
.
getDependOnNum
()){
eDatabase
*=
(
1
+
1
/
100
);
}
eDatabase
*=
(
1
+(
databaseDifficulty
.
getSafe
()==
1
?
1
:
0
)/
100
)*
(
1
+(
databaseDifficulty
.
getSeparate
()==
1
?
1
:
0
)/
100
)*
(
1
+(
databaseDifficulty
.
getPerformance
()==
1
?
1
:
0
)/
100
)*
(
1
+(
databaseDifficulty
.
getOtherContent
()==
1
?
1
:
0
)/
100
);
logger
.
info
(
"数据库难度:"
+
eDatabase
);
databaseDifficulty
.
setDifficulty
(
eDatabase
);
//工作量2*j*(z-1)
double
databaseWorkload
=
2
*
j
*(
eDatabase
-
1
);
logger
.
info
(
"系统部署工作量:"
+
databaseWorkload
);
//本地程序e (1+0.2)数量次幂 max=1.5
ProgramDifficulty
programDifficulty
=
report
.
getDifficultyAssessment
().
getProgramDifficulty
();
double
eProgram
=
Math
.
pow
(
1.2
,
programDifficulty
.
getDependOnNum
().
size
());
eProgram
=
eProgram
>
1.5
?
1.5
:
eProgram
;
logger
.
info
(
"本地程序难度:"
+
eProgram
);
programDifficulty
.
setDifficulty
(
eProgram
);
//工作量2*j*(z-1)
double
programWorkload
=
2
*
j
*(
eProgram
-
1
);
logger
.
info
(
"系统部署工作量:"
+
programWorkload
);
/*
基础工作量评估
*/
//开发修正系数 (本地难度系数-1)+(浏览器难度系数-1)
double
developmentCorrectionFactor
=
eProgram
-
1
+
multipleBrowser
-
1
;
logger
.
info
(
"开发修正系数 (本地难度系数-1)+(浏览器难度系数-1):"
+
developmentCorrectionFactor
);
//测试修正系数 (系统部署难度-1)+(浏览器-1)
double
testCorrectionFactor
=
multipleFramework
-
1
+
multipleBrowser
-
1
;
logger
.
info
(
"测试修正系数 (系统部署难度-1)+(浏览器-1):"
+
testCorrectionFactor
);
//部署修正系数 (迁移)/100+(系统部署-1)+中间件部署-1+数据库部署-1
double
deploymentCorrectionFactor
=
calculate
(
reform
)/
100
+
multipleFramework
-
1
+
multipleMiddle
-
1
+
eDatabase
-
1
;
logger
.
info
(
"部署修正系数 (迁移)/100+(系统部署-1)+中间件部署-1+数据库部署-1:"
+
deploymentCorrectionFactor
);
//开发的开发量 J*(开发修正系数+0.4)
double
developmentWorkload
=
j
*(
developmentCorrectionFactor
+
0.4
);
logger
.
info
(
"开发的开发量 J*(开发修正系数+0.4):"
+
developmentWorkload
);
//测试的开发量 J*(测试修正系数+0.3)
double
testWorkload
=
j
*(
testCorrectionFactor
+
0.3
);
logger
.
info
(
"测试的开发量 J*(测试修正系数+0.3):"
+
testWorkload
);
//部署的开发量 J*(部署修正系数+0.3)
double
deploymentWorkload
=
j
*(
deploymentCorrectionFactor
+
0.3
);
logger
.
info
(
"部署的开发量 J*(部署修正系数+0.3):"
+
deploymentWorkload
);
//合计的开发量 总数
double
totalWorkload
=
developmentWorkload
+
testWorkload
+
deploymentWorkload
;
logger
.
info
(
"合计的开发量 总数:"
+
totalWorkload
);
report
.
getWorkload
().
getDevelopment
().
setDevelopmentVolume
(
developmentWorkload
);
report
.
getWorkload
().
getDevelopment
().
setCorrectionFactor
(
developmentCorrectionFactor
);
report
.
getWorkload
().
getTest
().
setDevelopmentVolume
(
testWorkload
);
report
.
getWorkload
().
getTest
().
setCorrectionFactor
(
testCorrectionFactor
);
report
.
getWorkload
().
getDeploy
().
setDevelopmentVolume
(
deploymentWorkload
);
report
.
getWorkload
().
getDeploy
().
setCorrectionFactor
(
deploymentCorrectionFactor
);
report
.
getWorkload
().
getTotal
().
setDevelopmentVolume
(
totalWorkload
);
}
public
static
void
main
(
String
[]
args
)
{
WorkLoadUtil
workLoadUtil
=
new
WorkLoadUtil
();
workLoadUtil
.
result
(
new
Reform
(),
new
AssessmentReport
(),
1
,
1
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论