研发项目的管理流程

研发项目的管理流程,第1张

研发项目计划是研发项目组织根据研发项目目标,对研发项目实施工作所进行的各项活动做出周密安排。我整理的研发项目的管理流程,供参考!

研发项目的管理流程 篇1

1目的

根据公司新的组织结构,明确公司产品开发流程,建立、银喊信健全公司项目管理机制,明确项目经理、项目组成员、辅助部门职责。

本流程强调过程控制、文档先行、明晰责任,使产品开发逐渐形成程序化、制度化的运作,即由程序决定个人在每个步骤中的权威,“人人尊重程序”。使产品能够按照预定的成本、进度、质量完成。

2适用范围

本程序适用于公司所有项目。

3职责划分

3.1 项目经理职责

1)负责项目的整体规划、协调和控制,项目团队的组建和管理,客户事宜的协调处理等,保证项目按时、按质完成,提高客户满意度。

2)项目经理直接对项目的成败负责。

3.2 项目工程师职责

1)负责引导项目组按公司相关流程对项目进行开发。

2)负责项目的日常事务的协调处理,包括内部外部信息反馈、项目文件的处理等。

3)负责辅助项目经理对项目进行管理。

4)负责对项目的状态进行客观记录,作为项目组的考评依据。

5)负责对项目的风险进行预警,提请项目经理进行处理。

3.3 项目小组成员职责

负责按时、按质完成开发阶段相关工作,并进行有效的沟通和反馈。

4项目的过程控制与管理

项目过程控制的唯一目的是按时、按预算开发高质量的产品,保证项目不陷入混乱状态,明确项目的开发阶段、开发规则、开发进度和资源配置等管理方法,提高产品设计的成熟度。

4.1 项目开发阶段管理活动

4.1.1组建项目团队

1)项目立项后,由项目经理根据产品设计定义提出人力资源需求,和硬件、软件、结构、采购、品质等职能部门申请人员,组建项目小组。

2)项目小组成立后由项目工程师汇总,发布正式邮件通知项目小组成员及相关部门,并召开项目启动会议。

4.1.2项目进度管理

1)项目正式启动后,由项目经理及项目工程师根据立项通知中的时间制作项目关键路径和项目总体计划,和项目小组成员讨论后正式发布。渗芦(对于衍生机型可以仅做项目关键路径)

2)在项目进行过程中,若出现任务延迟,责任工程师需提前通知项目经理和项目工程师,并同时提交延迟原因及延迟时间,项目经理和项目工程师需根据情况对项目进度及计划进行调整,并需对延迟做适当记录,作为项目小组考核依据。

3)项目计划为动态计划,在项目开展过程中,需根据项目实际进程情况及时调整,以正确的反应项目情况。较大范围的时间调整,需提交公司审批。

4.1.3项目任务分配

1)在项目立项初期,项目经理根据产品的设计需求对项目小组成员进行主要责任模块工作分配。

2)在项目进行锋轮中,项目工程师根据项目进展情况按阶段提醒项目小组成员。

4.1.4项目会议召集

1)在项目进行过程中,项目经理或项目工程师应按阶段召开项目会议,定期审核项目进程。

2)对于突发事件,项目小组成员均可临时召开紧急会议进行商讨。会议参与人员可根据项目实际情况确定。

3)项目工程师应记录每次会议内容,以会议纪要形式或邮件形式通知与会人员。

4.1.5项目周报、总结编制

1)为保证公司相关部门人员和项目小组成员及时了解项目进展情况,以便更好的协调配合,项目工程师每周根据项目进展情况编制项目周报,由项目部汇总发放公司内部。

2)为更好的积累项目经验,项目量产前项目经理应调动项目小组成员参与编制项目总结,对项目过程中成功和失败的事项做汇总。

4.1.6项目文档整理归档

1)项目组成员应及时提交项目文档给项目工程师和项目经理,对于需签字审核的资料由项目工程师协助处理,项目工程师根据公司项目文档密级程度及时安排将文件发放给内部相关人员或客户。

2)项目阶段资料及发放范围请参考《项目文件密级发放范围清单》。

4.1.7项目小组信息沟通协调组织

项目组应定期组织协调活动,增加小组成员内部沟通,保证信息传递的流畅性,加强项目小组向心力和凝聚力,确保项目按时、按质完成。

4.1.8项目阶段评审

对产品开发各阶段关键工作实行评审,以便对研发过程实行更有效地计划和管理,提高各阶段工作的有效性,集思广益,保证设计出的产品满足客户需求,符合有关标准。

研发项目的管理流程 篇2

随着国家综合国力的不断增强,为推动科技创新、增强各行业的研发实力,国家拨款资助企业进行研究开发和科技创新,以推动科技成果产业化发展;许多大中小型企业单位也承担了大量的科研课题,因此,企业科研经费的核算及管理也尤为重要。

企业的项目研发经费核算主要包括国家拨入经费的核算及企业研发经费的核算两方面。

一、国家拨入经费的核算

国家拨给企业的科研经费,属于政府补助,按照新的《企业会计准则第16号——政府补助》中规定的会计处理方法进行核算。政府补助有两种会计处理方法:收益法与资本法。收益法是将政府补助计入当期收益或递延收益;资本法是将政府补助计入所有者权益。

企业取得的、用于购建或以其他方式形成长期资产的政府补助属于与资产相关的政府补助,应当确认为递延收益,并在相关资产使用寿命内平均分配,计入当期损益。但是,按照名义金额计量的政府补助,直接计入当期损益。国家拨的除与资产相关的政府补助之外的政府补助,属于与收益相关的政府补助,其相关规定如下:

(一)用于补偿企业以后期间的相关费用或损失的,确认为递延收益,并在确认相关费用的期间,计入当期损益。

(二)用于补偿企业已发生的相关费用或损失的,直接计入当期损益。

二、企业研发经费归集与核算

企业研发经费主要是指项目在研究与开发过程中所发生的.所有直接费用和间接费用。一般包括:人员费、设备费、能源材料费、试验外协费、技术引进费、差旅费、会议费、知识产权保护费、管理费和其他相关费用。

实际中,企业研发经费在归集与核算上存在一定的困难及问题,根据具体情况及经验,对科研经费核算及管理提出方法及建议进行探讨。

(一)研发经费归集与核算存在的问题

对于科技型企业,既从事生产经营活动,又从事科研活动,在费用划分上会存在一定的困难,主要有如下问题:

1、研发经费的范围难以界定

由于缺少一定的沟通,企业科技研发部门的人员与财务人员对研发经费范围的认识未能统一,财务人员对经费开支范围的认识会有一定限度,未能按照研项目预算书中研发经费的明细进行明细科目的设置;此外,企业科研经费缺乏规范统一的管理,科技研发部门与财务部门勾通脱节,都会影响研发经费的范围的划分。

2、生产成本与科研成本难以划分

对于企业的一些部门既从事研发活动,又进行产品的中试制生产活动,这就为企业的生产成本与科研成本的划分带来了一定的困难。

根据国家及各省市的项目经费管理办法,企业承担的大量科研课题,需要配比一定的自筹经费,特别是如果承担的是国家产业化项目或重大支撑项目,国家下拨的科研经费数额较大,而自筹经费的比例也较大,为满足课题审查的要求,科研成本会挤占生产成本,造成生产成本与科研成本划分不实,或带来高额利润及较高的所得税收,且企业也会有人为调整利润之嫌。

3、承担多个科研课题费用难以划分

根据国家科研项目经费管理的相关规定,国家拨入的科研经费应专款专用,科研项目应单独建账,各项目的科研经费及研发支出单独核算。企业的一个研发部门或一个研发人员如同时承担多个科研课题,发生的人员费、设备费、能源材料费用在各课题之间难以划分。

(二)企业项目经费核算及财务管理的探讨

对于既从事生产经营活动,又从事科研活动的科技型企业,在项目经费核算及财务管理中的一些建议及方法。

1、制定企业自身的规范统一的科研经费管理办法

参照国家及省有关的科研经费管理办法,结合企业自身的实际情况,制定规范统一的科研经费管理办法,以制度对承担项目的部门和进行经费核算的财务部门及相关人员加以规范和约束。在管理办法中不仅可以界定经费的范围,还可对经费的预、决算、使用等进行相关规定。

2、不断完善科研经费核算的财务体系

进一步完善科研项目预算、决算的财务核算体系,财务部进行科研经费核算,应按项目预算书中科研经费的预算明细进行研发支出科目及明细科目设置,运用金蝶或用友等财务软件的项目辅助核算功能,对企业承担的各项目进行单独核算;也可通过账表建立项目的辅助明细账,对各科研项目单独核算。科研成本项目结题后,进行项目经费决算。在项目执行期对项目经费应进行审查监督,加强经费开支的监督与经费成本的控制。

3、加强财务部与科技部间的勾通与协作

企业的财务部与科技部应分工协作,相互配合,科技部对企业研发部门承担的各个科研项目进行管理,财务部对国家拨款及企业的研发经费进行核算;由于科技部专业技术性强,应及时提供财务部项目的相关信息,如项目的类别、性质、项目执行期、项目的承担人及项目预算书中经费开支明细等,还对各个项目的经费开支是否合理进行监督和审批;财务部可依据科技部提供的相关信息,按项目建立各明细辅助账进行经费核算,对研发部门报销的原始单据进行财务方面地审核、记账。

4、企业项目经费核算的一些方法

企业研发经费包括直接费用和间接费用,应按照科研经费范围进行归集核算,具体方法如下:

(1)按照受益对象进行分配

企业按“谁受益谁分摊”的原则,对成本费用按受益对象进行分配,如耗用原材料,根据领料单上领用的部门,生产部门领用的记人“生产成本”,研发部门领用的记人“科研成本”,同时科研领用已进项抵扣原材料应作进项税额转出。企业承担的科研项目单独建账核算,财务应按受益对象将费用归集到各研发部门承担的各个科研项目的明细科目中。

(2)按一定合理比例进行分配

企业的一些生产及研发费用在实际中难以划分的,可按一定合理比例进行分配,如企业生产部门与研发部门以及研发部门承担的各项目共同耗用水电费,难以划分,可按一定合理比例进行分摊,但分摊方法一经确定不得随意变更。

企业的一个研发部门或一个研发人员如同时承担多个科研课题,设备使用费,可按一定合理比例进行分摊;承担多个课题人员费可按工时即人员从事科研活动的时间来进行分摊。

(3)间接费用可按相关性原则进行分摊

企业科研活动发生的间接费用,如管理费、房屋占用费等,可按经费收入或研发支出的一定比例进行分摊。

为了保护关键代码被逆向分析,一般放在应用程序初始化过程中,如init_array,或jni_onload函数里进行检查代码执行。

1.调试检测

对调试器的检测(ida,gdb,strace, ltrace等调蠢宴搏试工具)

a.父进程检测

b.当前运行进程检测

例如对android_server进程检测。针对这种检测只需将android_server改名就可绕过

[objc] view plain copy

pid_t GetPidByName(const charchar *as_name) {

DIR *pdir = NULL

struct dirent *pde = NULL

FILEFILE *pf = NULL

char buff[128]

pid_t pid

char szName[128]

// 遍历/proc目录下所有pid目录

pdir = opendir("/proc")

if (!pdir) {

perror("open /proc fail.\n")

return -1

}

while ((pde = readdir(pdir))) {

if ((pde->d_name[0] <'0') || (pde->d_name[0] >'9')) {

continue

}

sprintf(buff, "/proc/%s/status", pde->d_name)

pf = fopen(buff, "r")

if (pf) {

fgets(buff, sizeof(buff), pf)

fclose(pf)

sscanf(buff, "%*s %s", szName)

pid = atoi(pde->d_name)

if (strcmp(szName, as_name) == 0) {

closedir(pdir)

return pid

}

}

}

closedir(pdir)

return 0

}

c.读取进程状态(/proc/pid/status)

State属性值T 表示带祥调试状态,TracerPid 属性值正在调试此进程的pid,在非调试情况下State为S或R, TracerPid等于0

d.读取 /proc/%d/wchan

下图中第一个祥清红色框值为非调试状态值,第二个红色框值为调试状态:

[objc] view plain copy

static void get_process_status(pid_t pid,const char* info,charchar *outline)

{

FILEFILE *fp

char filename

char line = {0}

snprintf( filename, sizeof(filename), "/proc/%d/status", pid )

fp = fopen( filename, "r" )

if ( fp != NULL )

{

while ( fgets( line, sizeof(line), fp ) )

{

if ( strstr( line, info ) )

strcpy(outline,line)

}

fclose( fp )

}

return

}

static int getProcessStatus(int pid)

{

char readline = {0}

int result = STATUS_ELSE

get_process_status(pid,"State",readline)

if(strstr(readline,"R"))

result = STATUS_RUNNING

else if(strstr(readline,"S"))

result = STATUS_SLEEPING

else if(strstr(readline,"T"))

result = STATUS_TRACING

return result

}

static int getTracerPid(int pid)

{

char readline = {0}

int result = INVALID_PID

get_process_status(pid,"TracerPid",readline)

charchar *pidnum = strstr(readline,":")

result = atoi(pidnum + 1)

return result

}

static int getWchanStatus(int pid)

{

FILEFILE *fp= NULL

char filename

char wchaninfo = {0}

int result = WCHAN_ELSE

char cmd = {0}

sprintf(cmd,"cat /proc/%d/wchan",pid)

LOGANTI("cmd= %s",cmd)

FILEFILE *ptrif((ptr=popen(cmd, "r")) != NULL)

{

if(fgets(wchaninfo, 128, ptr) != NULL)

{

LOGANTI("wchaninfo= %s",wchaninfo)

}

}

if(strncasecmp(wchaninfo,"sys_epoll\0",strlen("sys_epoll\0")) == 0)

result = WCHAN_RUNNING

else if(strncasecmp(wchaninfo,"ptrace_stop\0",strlen("ptrace_stop\0")) == 0)

result = WCHAN_TRACING

return result

}

e. ptrace 自身或者fork子进程相互ptrace

[objc] view plain copy

ptrace me

if (ptrace(PTRACE_TRACEME, 0, 1, 0) <0) {

printf("DEBUGGING... Bye\n")

return 1

}

void anti_ptrace(void)

{

pid_t child

child = fork()

if (child)

wait(NULL)

else {

pid_t parent = getppid()

if (ptrace(PTRACE_ATTACH, parent, 0, 0) <0)

while(1)

sleep(1)

ptrace(PTRACE_DETACH, parent, 0, 0)

exit(0)

}

}

f. 防止dump

利用Inotify机制,对/proc/pid/mem和/proc/pid/pagemap文件进行监视。inotify API提供了监视文件系统的事件机制,可用于监视个体文件,或者监控目录。具体原理可参考:http://man7.org/linux/man- pages/man7/inotify.7.html

伪代码:

[objc] view plain copy

void __fastcall anitInotify(int flag)

{

MemorPagemap = flag

charchar *pagemap = "/proc/%d/pagemap"

charchar *mem = "/proc/%d/mem"

pagemap_addr = (charchar *)malloc(0x100u)

mem_addr = (charchar *)malloc(0x100u)

ret = sprintf(pagemap_addr, &pagemap, pid_)

ret = sprintf(mem_addr, &mem, pid_)

if ( !MemorPagemap )

{

ret = pthread_create(&th, 0, (voidvoid *(*)(voidvoid *)) inotity_func, mem_addr)

if ( ret >= 0 )

ret = pthread_detach(th)

}

if ( MemorPagemap == 1 )

{

ret = pthread_create(&newthread, 0, (voidvoid *(*)(voidvoid *)) inotity_func, pagemap_addr)

if(ret >0)

ret = pthread_detach(th)

}

}

void __fastcall __noreturn inotity_func(const charchar *inotity_file)

{

const charchar *name// r4@1

signed int fd// r8@1

bool flag// zf@3

bool ret// nf@3

ssize_t length// r10@3

ssize_t i// r9@7

fd_set readfds// @2

char event// @1

name = inotity_file

memset(buffer, 0, 0x400u)

fd = inotify_init()

inotify_add_watch(fd, name, 0xFFFu)

while ( 1 )

{

do

{

memset(&readfds, 0, 0x80u)

}

while ( select(fd + 1, &readfds, 0, 0, 0) <= 0 )

length = read(fd, event, 0x400u)

flag = length == 0

ret = length <0

if ( length >= 0 )

{

if ( !ret &&!flag )

{

i = 0

do

{

inotity_kill((int)&event)

i += *(_DWORD *)&event + 16

}

while ( length >i )

}

}

else

{

while ( *(_DWORD *)_errno() == 4 )

{

length = read(fd, buffer, 0x400u)

flag = length == 0

ret = length <0

if ( length >= 0 )

}

}

}

}

g. 对read做hook

因为一般的内存dump都会调用到read函数,所以对read做内存hook,检测read数据是否在自己需要保护的空间来阻止dump

h. 设置单步调试陷阱

[objc] view plain copy

int handler()

{

return bsd_signal(5, 0)

}

int set_SIGTRAP()

{

int result

bsd_signal(5, (int)handler)

result = raise(5)

return result

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12361540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存