资源描述
软件缺陷按严重程度可以分为三个等级、分别是什么?软件缺陷按严重程度可以分为三个等级、分别是什么?生成生成TreeView菜单可以按哪两个过程来实现?菜单可以按哪两个过程来实现?用户控件文件的后缀是什么?用户控件文件的后缀是什么?回顾回顾回顾回顾回顾回顾预习检查预习检查预习检查预习检查预习检查预习检查项目验收时还有哪些工作要做?项目验收时还有哪些工作要做?如何实例化用户控件?如何实例化用户控件?如何从如何从.aspx页面向页面向.ascx页面传递参数?页面传递参数?本章任务本章任务本章任务本章任务本章任务本章任务给角色分配权限给角色分配权限本章目标本章目标本章目标本章目标本章目标本章目标了解项目验收的常见流程了解项目验收的常见流程了解项目维护的日常事项了解项目维护的日常事项了解过程改进的概念及实践了解过程改进的概念及实践会给角色分配权限会给角色分配权限项目接近尾声项目接近尾声.在开发阶段接近尾声的时候,是项目组战斗气氛最浓郁的时候在开发阶段接近尾声的时候,是项目组战斗气氛最浓郁的时候!不时有电话打过来,声音急促不时有电话打过来,声音急促有力,有力,“需要支援!测试组需要需要支援!测试组需要再加一个人手!返测任务重,再加一个人手!返测任务重,用户手册又要改用户手册又要改!工区内人们走来走去,都是匆工区内人们走来走去,都是匆忙的脚步。项目组长高呼一声忙的脚步。项目组长高呼一声“还有还有10个个紧急紧急BUG,今天一,今天一定要改完!定要改完!”。我们满怀信心和希望,项目组我们满怀信心和希望,项目组聚餐会有的聚餐会有的!公费集体出游会有的公费集体出游会有的!项目调休和项目奖金也一定会项目调休和项目奖金也一定会兑现的!兑现的!项目验收交付时,还有最后项目验收交付时,还有最后三项三项工作等着我们:工作等着我们:实施实施、培训培训、验收验收!项目实施项目实施什么是项目实施?什么是项目实施?定义:实施是指将软件系统部署到客户方的计算机上,协助客户定义:实施是指将软件系统部署到客户方的计算机上,协助客户准备基础数据,使软件系统顺利上线运行。准备基础数据,使软件系统顺利上线运行。项目实施时的准备项目实施时的准备保证软件符合需求,质量过关保证软件符合需求,质量过关全面做好测试工作(集成测试、系统测试、性能测试)全面做好测试工作(集成测试、系统测试、性能测试)制定实施计划制定实施计划要发布的代码版本、数据库创建方式、基础数据准备方式要发布的代码版本、数据库创建方式、基础数据准备方式准备好程序代码和相关文档准备好程序代码和相关文档用户手册、测试用例文档用户手册、测试用例文档在开发接近尾声的时候就要开始准备实施了在开发接近尾声的时候就要开始准备实施了!客户培训客户培训培训人员的选择培训人员的选择行业积累雄厚,对客户方业务很了解,对我们的系统很了解行业积累雄厚,对客户方业务很了解,对我们的系统很了解培训时注意事项培训时注意事项准备好培训内容准备好培训内容不可临时抱佛脚,丢了面子不可临时抱佛脚,丢了面子制定好培训计划制定好培训计划了解客户时间,做好沟通,协调好,安排好了解客户时间,做好沟通,协调好,安排好 系统装好了,基础数据也已准备齐全。接下来就是组织客户系统装好了,基础数据也已准备齐全。接下来就是组织客户培训了,教他们怎么使用我们的系统。培训了,教他们怎么使用我们的系统。项目验收项目验收项目验收项目验收客户对系统的客户对系统的“接收测试接收测试”对系统进行范围核实(看看需求是否全部实现)和质量核实对系统进行范围核实(看看需求是否全部实现)和质量核实最后,客户在验收报告上签字,一切尘埃落定,每个人都长出一最后,客户在验收报告上签字,一切尘埃落定,每个人都长出一口气,心想口气,心想“这些琐琐碎碎的单据、报表与我再无瓜葛了这些琐琐碎碎的单据、报表与我再无瓜葛了”!大中!大中型的项目会有一个签字验收仪式。型的项目会有一个签字验收仪式。然后我们的项目正式进入然后我们的项目正式进入“维护阶段维护阶段”!小结小结1项目验收交付时,还有哪三项工作要做?项目验收交付时,还有哪三项工作要做?项目实施时,有哪些注意事项?项目实施时,有哪些注意事项?(列举出一、两点即可列举出一、两点即可)为什么需要为什么需要“维护阶段维护阶段”?可能的原因包括可能的原因包括软件的原有功能和性能可能不再适应用户的要求软件的原有功能和性能可能不再适应用户的要求例:例:企业业务流程调整企业业务流程调整软件的工作环境改变了软件的工作环境改变了例:国家对某些单据的打印规格的规定调整了例:国家对某些单据的打印规格的规定调整了软件运行中发现错误,需要修改软件运行中发现错误,需要修改例:单据编号发现重号例:单据编号发现重号用户操作不方便,影响效率。用户操作不方便,影响效率。这些问题都需要在项目的这些问题都需要在项目的“维护阶段维护阶段”来解决!来解决!系统上线了,项目验收了,客户使用软件的过程中可能会系统上线了,项目验收了,客户使用软件的过程中可能会遇到一些问题遇到一些问题!“维护阶段维护阶段”做什么?做什么?“维护阶段维护阶段”做什么?做什么?校正性维护校正性维护诊断、校正软件错误的过程诊断、校正软件错误的过程适应性维护适应性维护为适应环境的变更(计算机设备更新)而修改软件的维护活动为适应环境的变更(计算机设备更新)而修改软件的维护活动完善性维护完善性维护为满足用户提出的新功能、性能要求而进行的维护为满足用户提出的新功能、性能要求而进行的维护预防性维护预防性维护为进一步改进可维护性、可靠性而进行的维护活动为进一步改进可维护性、可靠性而进行的维护活动如何做项目维护如何做项目维护(1)项目交付项目交付项目结束时,开发团队将项目交付到维护团队手中项目结束时,开发团队将项目交付到维护团队手中客户已经签字验收客户已经签字验收维护团队对项目检验通过维护团队对项目检验通过维护团队要迅速熟悉项目的业务、技术和客户维护团队要迅速熟悉项目的业务、技术和客户维护流程维护流程1、客户提出维护申请、客户提出维护申请2、对确实需要修改系统解决的问题进行业务上和技术上的论证、对确实需要修改系统解决的问题进行业务上和技术上的论证3、对修改方案论证和审批通过后,报给客户修改和发布的计划、对修改方案论证和审批通过后,报给客户修改和发布的计划 如何做项目维护如何做项目维护(2)范围管理范围管理严格定义系统的边界,明确什么需要给客户做,什么不需要做严格定义系统的边界,明确什么需要给客户做,什么不需要做 软件需求变更和膨胀是项目的杀手软件需求变更和膨胀是项目的杀手功能性膨胀功能性膨胀例:客户业务流程(例:客户业务流程(CRM和和HR系统要集成)变化所需系统做调整系统要集成)变化所需系统做调整非功能性膨胀非功能性膨胀例:培训要求、文档要求、性能要求例:培训要求、文档要求、性能要求保持一致性保持一致性系统中一个小小的调整,导致牵一发而动全身系统中一个小小的调整,导致牵一发而动全身“大力大力”的案例(一)的案例(一)如何做项目维护如何做项目维护(3)维护记录维护记录做维护时,需记录维护的记录,以利于在维护过程中发现问题、做维护时,需记录维护的记录,以利于在维护过程中发现问题、解决问题解决问题维护报告维护报告对维护工作做总结,归纳问题以便改进今后工作对维护工作做总结,归纳问题以便改进今后工作“大力大力”的案例(二)的案例(二)小结小结2为何在项目维护时,为何在项目维护时,“保持一致性保持一致性”很重要?很重要?“维护流程维护流程”有哪三步流程?有哪三步流程?为什么要做过程管理?为什么要做过程管理?某个项目进行的非常成功,还是原班人马,承担的下一个某个项目进行的非常成功,还是原班人马,承担的下一个项目居然失败了。项目居然失败了。同等规模的项目,乙部门总是比甲部门周期长,成本高,同等规模的项目,乙部门总是比甲部门周期长,成本高,而且容易风险发生的频率高。而且容易风险发生的频率高。同类的错误反复重犯。要么是需求没有控制好,要么是项同类的错误反复重犯。要么是需求没有控制好,要么是项目压力大人员纷纷离职。项目组似乎对错误目压力大人员纷纷离职。项目组似乎对错误“没有记性没有记性”。很多软件企业的软件开发过程中,都存在着这样那样的问题:很多软件企业的软件开发过程中,都存在着这样那样的问题:犯错误不可怕,可怕的是没犯错误不可怕,可怕的是没“记性记性”,相同的错,相同的错误再犯。我们需要误再犯。我们需要过程管理过程管理!过程定义过程定义菜谱里只写了做菜的原料和关键步骤。你买了菜谱并不会菜谱里只写了做菜的原料和关键步骤。你买了菜谱并不会有个人去帮你做菜,那为什么菜谱还那么好卖?有个人去帮你做菜,那为什么菜谱还那么好卖?因为菜谱定义了一个做菜的标准因为菜谱定义了一个做菜的标准过程过程:什么时候放油,放多少,:什么时候放油,放多少,下一步炒什么,炒多久下一步炒什么,炒多久.同样,同样,CMM(菜谱菜谱)帮助我们帮助我们定义软件开发过程定义软件开发过程(做菜步骤做菜步骤)。能力成熟度模型能力成熟度模型(CMM)什么是什么是CMMCMM(Capability Maturity Model),意思是软件成熟度模型,意思是软件成熟度模型CMM通过审查一个组织开发软件的过程的规范程度,来评价这个通过审查一个组织开发软件的过程的规范程度,来评价这个组织的软件开发能力组织的软件开发能力 CMM的五个等级的五个等级第一级:初始级第一级:初始级第二级:可重复级第二级:可重复级第三级:以定义级第三级:以定义级第四级:已控制级第四级:已控制级第五级:优化级第五级:优化级小结小结3CMMCMM分为哪五个等级?分为哪五个等级?飞行员驾驶飞机的时候,其操作步骤要遵循事先严格定义飞行员驾驶飞机的时候,其操作步骤要遵循事先严格定义好的过程。请问这样做的好处在哪里?好的过程。请问这样做的好处在哪里?角色分配权限角色分配权限(1)实现这个功能主要是通过一个用户对应一实现这个功能主要是通过一个用户对应一个角色,一个角色对应多个权限控制的。个角色,一个角色对应多个权限控制的。系统管理员登录系统管理员登录后看到的菜单后看到的菜单普通用户登录普通用户登录后看到的菜单后看到的菜单通过通过RoleRight中的中的NodeId从从SysFun表查找对应的菜单信息表查找对应的菜单信息如何给不同的角色分配不同的权限如何给不同的角色分配不同的权限角色分配权限角色分配权限(2)下面我们来看一下整个权限分配的处理过程下面我们来看一下整个权限分配的处理过程从角色管理页面点从角色管理页面点“权限分配权限分配”超连接超连接RoleRight表中已经存在的菜单默认被选中表中已经存在的菜单默认被选中菜单分类显示菜单分类显示角色分配权限角色分配权限(3)选择父菜单时,其对应选择父菜单时,其对应的所有子菜单全被选中的所有子菜单全被选中选择子菜单时,选择子菜单时,父菜单也被选中父菜单也被选中角色分配权限角色分配权限(4)使用母版页,在使用母版页,在SysManage文件夹文件夹下新建页面下新建页面“DistributeRole.aspx”分配角色权限分配角色权限权限分配权限分配(选定后保存选定后保存)当前角色当前角色->用于装载所有的权限菜单用于装载所有的权限菜单关键关键HTML代码代码角色分配权限角色分配权限(5)由多个父子由多个父子菜单组成菜单组成把一个父子菜单的组合做成用户控件把一个父子菜单的组合做成用户控件Hidden1:用:用来存放父菜单来存放父菜单IdHidden2:用:用来存放角色来存放角色IdCheckBox:用来显示父菜单用来显示父菜单CheckBoxList:用来显示子菜单用来显示子菜单新建新建“RoleUserControl.ascx”选择父节点时,选中选择父节点时,选中其对应的全部子节点其对应的全部子节点选择任何一个子节点时,选择任何一个子节点时,其对应的父菜单也被选中其对应的父菜单也被选中用户控件页面对应用户控件页面对应的关键的关键HTML代码代码显示所有的父子菜单显示所有的父子菜单(1)下面编写代码实现:展示所有的父子菜单下面编写代码实现:展示所有的父子菜单使用用户控件时,需要把使用用户控件时,需要把“RoleUserControl.ascx”拖到权限管理页面上,注册一下拖到权限管理页面上,注册一下父子菜单父子菜单归类显示归类显示实现思路:实现思路:首先获得所有的父节点信息,首先获得所有的父节点信息,对每一个父节点查找它的所有子节点,对每一个父节点查找它的所有子节点,把父子节点一起生成一个用户控件,把父子节点一起生成一个用户控件,然后放入然后放入PlaceHolder容器容器protected void Page_Load(object sender,EventArgs e)DisplayRoleRightInfo();protected void DisplayRoleRightInfo()IList sysFuns=SysFunManager.GetAllParentNodeInfo();foreach(SysFun sysFun in sysFuns)string nodeId=sysFun.NodeId.ToString();string displayName=sysFun.DisplayName;RoleUserControl roleCotrol=(RoleUserControl)LoadControl(RoleUserControl.ascx);HtmlInputHidden hidParentMenu=(HtmlInputHidden)roleCotrol.FindControl(hidParentMenu);hidParentMenu.Value=nodeId;CheckBox chkParentMenu=(CheckBox)roleCotrol.FindControl(chkParentMenu);chkParentMenu.Text=displayName;phRoleDistribute.Controls.Add(roleCotrol);实例化隐藏域实例化隐藏域,用以存储父节点用以存储父节点Id实例化用户控件实例化用户控件得到所有父级节点信息得到所有父级节点信息实例化用户控件中的实例化用户控件中的CheckBox,以显示父菜单名称以显示父菜单名称 权限分配主页面权限分配主页面DistributeRole.aspx对应的后台关键代码对应的后台关键代码显示所有的父子菜单显示所有的父子菜单(2)protected void Page_Load(object sender,EventArgs e)if(!Page.IsPostBack)DisplayRoleRightMenu();protected void DisplayRoleRightMenu()int nodeId=int.Parse(hidParentMenu.Value);IList sysFuns=SysFunManager.GetSysFunByParentNodeId(nodeId);foreach(SysFun sysFun in sysFuns)ListItem li=new ListItem();li.Value=sysFun.NodeId.ToString();li.Text=sysFun.DisplayName;chklstChildMenu.Items.Add(li);得到父节点得到父节点Id根据父节点根据父节点Id得到对应的所有子节点信息得到对应的所有子节点信息将子节点循环追加到将子节点循环追加到CheckBoxList控件中控件中用户控件页面用户控件页面RoleUserControl.ascx关键后台代码关键后台代码运行程序,即可实现系统菜单归类显示运行程序,即可实现系统菜单归类显示选中当前角色已经拥有的权限选中当前角色已经拥有的权限(1)Id 为为“1”的普通用的普通用户对应的角色权限户对应的角色权限数据库中已经拥有数据库中已经拥有的节点默认被选中的节点默认被选中选中当前角色已经拥有的权限选中当前角色已经拥有的权限(2)实现这个功能,我们只要在原来的基础上进行修改即可实现这个功能,我们只要在原来的基础上进行修改即可查看修改后的关键代码查看修改后的关键代码IList currentRoleParentNodes=RoleRightManager.GetParentNodesByRoleId(roleId);ArrayList arrRoleParentNodes=new ArrayList();foreach(RoleRight roleRight in currentRoleParentNodes)arrRoleParentNodes.Add(roleRight.SysFun.NodeId.ToString();根据角色根据角色Id获得当前获得当前角色拥有的权限信息角色拥有的权限信息 循环将该角色拥有的父节循环将该角色拥有的父节点添加到角色权限数组中点添加到角色权限数组中if(arrRoleParentNodes.Contains(nodeId)chkParentMenu.Checked=true;判断生成的父节点判断生成的父节点是否已经在数组中是否已经在数组中 实现父子菜单之间的互选关系实现父子菜单之间的互选关系 function CheckAll(paramId)var items=document.getElementsByTagName(input);for(i=0;iitems.length;i+)var e=itemsi;var eId=e.id;var m=eId.indexOf(_chk);var n=paramId.indexOf(_chk);if(eId.substring(0,m)=paramId.substring(0,n)&e.type=checkbox)e.checked=document.getElementById(paramId).checked;查看全部查看全部JavaScript方法方法获得当前控件元素的获得当前控件元素的Id判断控件类型是否是判断控件类型是否是checkbox,父子节点客户端父子节点客户端Id是否匹配是否匹配,以控制只选中该父节点对应的子节点以控制只选中该父节点对应的子节点保存角色权限保存角色权限(1)初始普通用户的权限情况初始普通用户的权限情况给普通用户重新分配权限给普通用户重新分配权限保存角色权限的思路是:保存角色权限的思路是:查找当前角色拥有的节点查找当前角色拥有的节点Id放进一个数组,放进一个数组,“提交提交”时循环判断:时循环判断:若选中的节点不在数组中,则添加到数据库,否则不执行操作;若选中的节点不在数组中,则添加到数据库,否则不执行操作;若不选的节点在数据库中存在,则从数据库删除。若不选的节点在数据库中存在,则从数据库删除。保存角色权限保存角色权限(2)查看保存角色权限的关键代码查看保存角色权限的关键代码“提交提交”后的普通用户权限信息后的普通用户权限信息小结小结4请简单描述一下用户表、角色表、系统功能表和角色权限请简单描述一下用户表、角色表、系统功能表和角色权限表之间的业务关系。说一下实现角色权限分配的思路?表之间的业务关系。说一下实现角色权限分配的思路?Thank you
展开阅读全文