软件工程0–1.软件工程介绍.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件工程0–1.软件工程介绍

软件的复杂度 1.2 软件与软件危机 防不胜防的软件错误 1.2 软件与软件危机 防不胜防的软件错误 1.2 软件与软件危机 防不胜防的软件错误 防不胜防的软件错误 软件开发成本 作业 一致性:在物理学领域,面对复杂的统一场理论,爱因斯坦坚信,自然界一定存在简化的解释,因为上帝不是专横武断和变化无常的。但是,面对软件系统,软件工程师的复杂性是随心所欲、毫无规则的,是随接口的不同、时间的变化而改变的,这些变化无法事先规定,且是因人而异的。软件的复杂性是人设计的结果,而不是上帝。 可变性:持续的变更压力,汽车也会变更,但汽车的变更只会整合到后续的产品中,没有什么现场调试。软件则不同,最主要的原因是它太容易被修改了——它是人类思维活动的产物,可以无限地扩展,修改的成本又很低。 不可见性:软件是不可见的,与其他工业产品相比,建筑、机械、化学、生物等等,都有图纸、方程式等等,获得可视化的了解。软件的客观存在不具有空间的形体特征,没有它的几何表达方式。我们虽然有流程图、数据结构图、依赖关系、时间序列、名字的对应关系等,但这些都仅仅是为了建立一个概念,而把复杂的关系分割成一个抽象的层面或图形上。内部的不可见,限制了设计和使用者之间、设计者之间的交流和理解。 在1986年的时候,Brooks认为次要问题已经取得了一些突破: 主要包括: 高级语言:减轻了一些次要问题的软件复杂度,特别是对某些问题要素(如:数据结构、数据类型和操作等)的抽象,使程序人员可不必过多地关注具体实现,而把注意力转向用户需求。但是,这些复杂的语言可能更增加程序员的脑力劳动负担。 分时:分时保证了开发的及时性,减少开发在时间上的代价,但这只是一个次要困难。 统一编程环境:提供集成库、统一文件格式、管道、过滤器等,解决了共同使用程序的次要困难。 1.2 软件与软件危机 但是,在根本问题方面,作为备选“银弹”,情况任何呢? Ada和其他高级语言:通过更加抽象的语句来开发,降低了机器的次要复杂程度。 面向对象编程:当时,有基于Ada包和Modula模块的类概念,Brooks对Ada寄予了很大的希望。面向对象的抽象主要包括对数据类型和对层次化类型的二种抽象。前者的主要表现是数据结构、定义和操作的隐蔽,后者是通过继承,实现对特定过程的精细化。二者都有利于设计人员集中精力于设计的内在特性而不需要表达大量句法上的内容。但这只能解决设计表达上的复杂性(次要问题),这类问题,只占软件产品设计的很小部分,因而不能解决软件内在的复杂性(根本问题)。 面向对象编程,能否成为“银弹”,Brooks表示怀疑。这个问题在10年后,Brooks还会再次谈到。 其他方面,还包括:人工智能、专家系统、自动编程、图形化编程、程序验证、开发环境与工具、工作站等。 Brooks当时认为,有希望的方法还有:商品化(而不是完全自行开发)的软件工程方法、需求精炼和快速原型方法、增量开发、以及培养卓越的设计人员等。 结论是:这些技术分别对软件工程都有帮助,但它们单独或结合应用,也不能成为“银弹”。 10年后(96年)的再认识 Brooks说:我在《没有银弹》中声称和断定,在近十年内,没有任何单独的软件工程进展可以使软件生产率有数量级的提高(引自1986年的版本)。现在已经是第九个年头,因此也该看看是否这些预言得到了应验。 《人月神话》一文被大量地引用,很少存在异议;相比之下,《没有银弹》却引发了众多的辩论,编辑收到了很多文章和信件,至今还在延续。他们中的大多数攻击其核心论点和我的观点——没有神话般的解决方案,以及将来也不会有。他们大都同意《没有银弹》一文中的多数观点,但接着断定实际存在着杀死软件怪兽的银弹——由他们所发明的银弹。 1.2 软件与软件危机 10年后(1996年)的再认识 现实问题:整个软件开发工作中的哪些部分与概念性结构的精确和有序表达相关(次要问题),哪些部分是创造那些结构的思维活动(根本问题)。在我看来,开发的次要问题,已经下降到整个工作的一半或一半以下。 次要问题占整个开发工作的比例,已经很小。因此,在次要问题上的进步,并没有给软件的生产率,带来数量级的提高。所以,还是必须着手解决开发的根本性问题。 针对复杂性问题 软件系统要表达的外部世界的复杂性,如何通过软件开发过程,来进行有效的应对。例如,需求工程、层次化方法、增量开发的方法等。Brooks本人没有做这方面的研究,但他认为,这些方法,可能是有效的。 1.2 软件与软件危机 针对不可见性问题: 可视化建模技术,确实是针对软件的根本性困难,既概念性要素的设计和调试。 Brooks认为,这种方法,可能是“革命性”的,在实际应用中,也确实是一种有效的方法。 关注软件的生产率,更关注软件的质量: 关注质量,生产率就自然会

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档