学习MSF

微软解决方案框架(Microsoft Solution Framework,MSF)

MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则 
1. 推动信息共享与沟通(Foster open communications)

  • 第一个原则,就是所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人。当然,对牵涉到技术机密、安全性等信息要采取必要的保护措施
  • 看不到所有的信息,那么项目进度以及项目中存在的各种问题就不能及时让所有人知道,这样MSF中其他的原则也就不能实行了。没有开放的信息,也就谈不上“授权”,或者“建立清晰的责任和共同的职责”,以及“保持敏捷,预测并适应变化”。这也是为什么“推动信息共享与沟通”是第一个基本原则。MSF团队模型和MSF过程模型也是建立在“信息共享与沟通”原则上的


2. 为共同的远景而工作(Work toward a shared vision)

“共同的远景”是指产品的远景。我们做一个产品,不管是应用软件、行业软件,还是通用软件,要明确项目的目标是什么。

  • 这个目标必须是明确的,没有二义性;
  • 这个目标不是当前就能达到,必须是通过努力才能达到的;
  • 这个目标不是空泛的,它应该对项目成员每天的工作都有指导作用。每天你来上班,如果发现你做的事情对项目的远景没有帮助,你应该跟老板提出来

远景一般是由“有远见的人”提出,然后公开讨论,在讨论的过程中,可以消除误解,凝聚共识。这是一个项目的关键,是项目第一阶段要达到的主要目标



3. 充分授权和信任(Empower team members)

这一点的关键是“授权”这个词,授权(Empower)有两个意思:

  • 给某人权力和权威
  • 给予某人更多自信和自尊

在一个高效的团队中,所有的成员都应该能得到充分的授权,他们有权在职权范围内按照自己的承诺完成任务,同时,他们也充分信任其他同事能实现各自的承诺。类似地,团队的顾客(包括内部和外部的顾客)也认为团队能兑现承诺,并进行相应的规划

充分授权的管理方式是MSF的核心观念之一。MSF团队模型就是建立在以下两个原则上的:

  • 平等协作—成员之间、团队之间是平等协作的关系
  • 充分授权给团队和成员

这就是为什么MSF团队模型是网状,而不是层次结构。这样做有什么好处?好处有两点:

  • 被授权的人会承担起自己对项目的责任,同时也期望同事们也同样对项目负责
  • MSF提倡自下而上的计划,每个人有充分的权力估计并决定自己的任务需要多长时间,而不是上级交给的时间,这意味着让真正做这件事的人按照自己的估计去完成任务。这样做的结果是啥?是人人都会支持项目的计划和时间表,因为这个时间表是每个人自下而上订出来的

组员充分授权,到头来发现事情都没做完,咋办?

  • 这要靠工具的支持,在VSTS系统中,由于所有工作的进展都记录在案,任何延迟都会被及时发现
  • 这样组长(或其他层次的领导)就不用把力花在“询问”,而花在“帮助解决”上,在最关键的时候提供指导和帮助
  • 领导在项目中的角色是“支持成员完成任务”,而不是“控制成员,迫使他们完成任务”
  • 充分授权在MSF团队模型的另一个含义是:信任,鼓励团队成员成长,每人都可以在某一时段、某一领域当领导


4. 各司其职,对项目共同负责(Establish clear accountability and shared responsibility)

关键质量目标 MSF小组角色 出口条件
按约束条件交付产品 程序管理 我们的项目是在时间/资源的条件内交付的么
按产品规格说明交付产品 开发 我们是否按照功能说明完成了各项功能
保证所有问题都得到处理 测试 我们发现了所有的问题,而且都有处理方案吗
产品部署和后续管理 发布管理 客户能否快速方便地部署产品和进行后续管理
让产品更好用 用户体验 产品是否适应用户的使用习惯?易学易用
让客户满意 产品管理 客户是否(总体上)满意我们的项目

在项目进展的过程中,对于每一项任务,每个人都要明确以下几点。

  • Who:谁负责
  • What:做什么,具体的执行方案,什么叫做“做好了”
  • When:什么时候开始,什么时候结束
  • Why:为什么是这样安排(和项目的远景是否吻合),在什么情况下可以变更?

与“信息共享与沟通”原则相呼应,这样的安排能让所有人都明确自己的职责,同时有“大局观”—知道别人在做什么,为什么,以及整个项目的目标



5. 交付增量的价值(Deliver incremental value) 
现在的软件产业,特别是和互联网相关的产业,变化非常快,用户希望产品团队经常提供更新,以适应新的需求。我们要保证在两个方面保证客户的利益:

  • 我们提供的新版本对用户真的有价值
  • 和客户商讨一个最优的新版本的发布频率 
    最优的频率会因为产品的特点(企业产品,消费者产品)和发布平台(办公电脑、家用电脑、互联网、智能手机及平板电脑)的不同而大不相同

在MSF团队模型中,“用户体验”这个角色代表了用户的利益,保证产品能真正易于使用;“产品管理”这个角色代表了客户的利益,保证了我们的产品能为顾客提供商业价值。搞技术的,要尊重这两个角色,因为他们代表的是我们的衣食父母



6. 保持敏捷,预期和适应变化(Stay agile, expect and adapt change) 
软件工程,唯一不变的是变化。所以干脆别幻想客户的需求会在第一时刻很明确,然后保持不会变。要注意,我们是预期变化,不是期望变化

除开外部原因,团队内部也在变化,我们对技术的掌握每天都在提高,原来认为不可能的事可能变得容易。我们对客观世界和软件系统的了解每天都在深化,原来觉得没问题的小细节忽然成了大问题。甚至原来一起打拼的同事忽然要离开……这些都要求我们团队保持敏捷的身段



7. 投资质量(Invest in quality)

对质量的重视,引起对质量的投资,引起对人、过程和工具的投资。

  • 投资要讲效率 
    软件开发过程大部分时间花在了解/设计/变更/再了解/再设计的过程中。我们要重视质量,但并不是要不惜一切代价达到最高的质量标准(有人倒吸了一口凉气),因为提高人/过程/工具的质量是要花成本的!我们不是为提高质量而提高质量。我们要讲投资的效率。比如,在做快速原型的过程中,有些部分可以做得粗糙一点
  • 投资要讲时机 
    比如说对于某项技术的培训,最好的做法是在即将需要的时候进行培训。太超前或滞后都不灵
  • 投资是长期的 
    和投资股票/不动产一样,真正的投资者看重的是长线的收益;人的成长、团队的成熟都需要时间,不可能短期内立竿见影。那些“短平快”的东西,叫投机,不叫投资


8. 学习所有的经验(Learn from all experiences) 
在学习过去的经验的同时,也要避免让过去的经验妨碍解决现在的问题 
这一原则有两个含义——

  • 把经验总结出来
  • 分享经验

为什么要坚持总结和分享?是为了——

  • 让团队成员从别人的成果和失败的例子中学到东西
  • 帮助新项目重复以往成功的做法
  • 培育团队总结的习惯和“批评与自我批评”的文化

MSF在每一个里程碑结束时都要做一个“里程碑回顾”,这个回顾不必等到整个项目结束才做。这样做的好处是,大家对最近的成败都记忆犹新,能提供比较准确和全面的反馈;如果发现了错误,可以马上研究解决办法,在下一个里程碑中通过实践来验证。另外,一些好的做法可以及时得到总结和推广

在项目结束时,MSF推荐请团队以外的专家来主持召开“事后诸葛亮”会,这样的专家会比较系统地总结团队的成功经验和失败教训,同时也客观评价团队的一些特性和团队的开发过程管理,这样能促使团队成员以客观、向前看、解决问题的心态来参加“事后诸葛亮”会,避免主观臆断或相互指责

9. 与顾客合作(Partner with internal and external customers)

MSF敏捷开发模式

在Visual Studio TFS中,MSF演化为以下两个分支:

  • MSF敏捷开发模式
  • MSF CMMI开发模式

MSF敏捷开发模式吸收了近几年来在软件业界流行的各种“敏捷”开发模式的优点,认识到目前大部分软件是以网络应用相联系的,强调和用户更紧密地交流,快速迭代,避免不必要的过程。

MSF CMMI开发模式

  • MSF也支持CMMI 的开发模式
  • CMMI是英文Capacity Maturity Model Inte-grated(能力成熟度模型集成)的缩写

CMMI是CMM模型的最新版本,资料显示,如果一个项目的管理达到了CMMI较高的等级,那么项目的质量与按期完成率都会有较大的提高。

CMMI虽然源于美国,但在世界各地得到了广泛的推广与接受,特别是和外包服务相关的软件企业(例如印度)。

 

时间: 2024-10-14 21:09:58

学习MSF的相关文章

msf生成后门拿shell

0X01简介 这里我本来想学习 msf利用漏洞反弹shell的 但是 没有靶机....等找了靶机在弄吧 kali 172.18.5.118 靶机  172.18.5.240 先尝试能不能ping通 好的可以 那我们进行下一步 0X01爱之初体验 先在kali终端输入msfvenom -l,打开payload目录 然后找到payload windows/meterpreter/reverse_tcp 输入以下命令生成后门qq.exe 然后将生成的qq.exe移到靶机中,然后打开msfconsole

NOE77101固件后门漏洞分析

NOE77101固件后门漏洞分析 固件获取 最近学习vxworks固件的分析,尝试对noe77101固件的经典后门漏洞进行分析,就好比学习msf时练习经典的ms08-067一样.noe77101固件的下载地址在此. 拿到固件之后,unzip noe77101_OS.bin_.zip解压固件,得到FLASH0文件夹和一个commandList.lst文件,FLASH0的文件目录如下: 在flash0/wwwroot/conf/exec/目录下找到了NOE77101.bin文件,这应该就是我们要分析

构建之法学习(第七章 MSF)

第七章 MSF MSF(Microsoft Solution Framework)微软解决方案框架: MSF是一套大型系统开发指南,是微软推荐的软件开发方法,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考. 一.MSF 9条基本原则 1.推动信息共享与沟通 --把所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人. 当然,对牵涉到技术机密.安全性等信息要采取必要的保护措施

《构建之法》学习(7)——MSF

<构建之法>学习(7)--MSF 1.MSF简史 微软解决方案框架,也就是微软推荐的软件开发方法 2.MSF基本原则 推动信息共享与沟通 所有信息都保留并公开,讨论要包括所有涉及的角色,决定要公开并告知所有人.当然,对牵涉到技术机密.安全性等信息要采取必要的把握措施. 使用Alert来提醒何事发生了变化:所有的信息都保留并公开,不能删除工作项. 为共同的远景而工作 这个目标必须是明确的,没有二义性. 这个目标不是当前就能达到,必须是通过努力才能达到的. 这个目标不是空泛的,它应该对项目成员每天

博客补发-MSF学习

参考资料:http://www.cnblogs.com/xinz/archive/2011/11/21/2257663.html MSF,即Microsoft Solution Framework,也就是微软推荐的做软件的方法. MSF简史:约摸在1994年,微软在总结了自己产品团队的开发经验和教训,以及微软咨询服务部门的业务经验后,推出了Microsoft 解决方案框架Microsoft Solution Framework(MSF).当时的MSF只是这些经验和教训的松散集合.在以后的几年中,

Metasploit学习之msf连接数据库

kali使用metasploit开启数据服务: 首先,初次使用系统要初始化建立数据库msf3, 否则的话 /opt/metasploit/apps/pro/ui/config/databse.yml不存在: /etc/init/metasploit start 查看postgres是否启动: netstat -tulnp | grep postgres 参看用户名和密码: # cat /opt/metasploit/apps/pro/ui/config/databse.yml 连接:

构建之法---MSF

今天看到了第七章看到MSF这个词,确实非常陌生,于是我打开了搜索引擎,百度告诉我"MSF是一套大型系统开发指南,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考." 大约在1933年,微软总结了自己产品团队的开发经验和教训,以及微软咨询服务部门的业务经验后,推出了MSF.当时只是这些经验和教训的初步总结,在之后的几年中,它进一步吸收了微软各部门和微软的合作伙伴在实际项目中的经验. 1

软件开发-MSF方法(《构建之法》读书笔记2)

MSF-微软解决方案框架,是一套大型系统开发指南,它描述了如何用组队模型.过程模型和应用模型来开发Client/Server结构的应用程序,是在微软的工具和技术的基础上建立并开发分布式企业系统应用的参考.在现在的软件开发项目中每一个软件开发项目都要经过 一个生命周期.MSF过程模型是从传统的软件开发瀑布模型和螺旋模型发展而来的,它瀑布模型中基于里程碑的规划与螺旋模型中的增量迭代的长处结合起来.MSF作为现在流行的软件开发思路,其有自己的基本原则. MSF基本原则: 1:推动信息共享和沟通 2:为

第六七章学习体会-----(第六次)

在这周我看了第六章敏捷流程跟第七章MSF.并有了以下学习总结. 敏捷这个词听起来就是反应灵敏迅速而有效,而在软件按工程里,敏捷不同于现有做法之处在于,敏捷的价值观和流程是个人和交流.可用的软件.与客户合作.响应变化,而现有做法的则是流程和工具.完备的文档.为合同谈判.执行原定计划敏捷的开发原则是尽早并持续交付有价值的软件以满足顾客需求.只有不断关注技术和设计,才能越来越敏捷.只有能自我管理的团队才能创造优秀的架构.需求和设计.敏捷开发的原则很多,其中印象最深的就是"经常发布可用的软件,发布间隔