- 1、本文档共311页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
需求工程需求分析与系统设计 关于本课程 课程的本质 听课的要求 作业的要求 与后继课程的关系 考试 第一章 软件过程 本章目标是从总体上描述软件开发过程中的若干策略问题,介绍支撑现代软件开发的过程和方法。 了解软件开发的本质、社会基础,以及业务系统的开发为何不能完全基于严格的工程和科学原则。 学习软件过程标准(CMM、 ISO 9000、 ITIL)及服从框架(COBIT)。 获得策略系统规划和方法(SWOT、VCM、BPR、ISA)的知识,以确保业务目标能够确定信息系统项目。 认识到信息系统之间具有很大的差异,这种差异取决于信息系统能够满足的管理水平及其所具有的竞争优势。 了解软件开发的结构化方法与面向对象方法的差异。 学习软件开发生命周期的各个阶段及跨越生命周期的活动。 了解现代及新兴的软件开发模型/方法(螺旋模型、 IBM Rational统一过程、模型驱动的体系结构、敏捷软件开发及面向方面的软件开发)。 了解7个实例研究,这些实例用于作为贯穿全书的例子和练习。 第一章 软件过程 1.1软件开发的本质 1.2系统规划 1.3三级管理系统 1.4软件开发生命周期 1.5开发模型与方法 1.6实例研究的问题陈述 1.1软件开发的本质 在关于信息系统(information system,IS)管理的文献中,充满了项目失败、逾期和超预算、有缺陷的解决方案,以及不可维护的系统等例子。虽然大量引用Standish Chaos报告(声称有70%的软件项目失败)是有些夸张,但毋庸置疑的是,许多“成功的”系统(换句话说,就是已经付款并交付给用户的系统)被可靠性、性能、安全性、可维护性及其他问题所困扰。 1.1软件开发的本质 为了了解这些问题的原因,我们首先需要了解软件开发的本质。在一篇有代表性的论文中,阐述了软件工程的本质问题和意外事件。软件工程的本质问题体现在软件本身所固有的困难中,我们只能承认这些困难——没有获得突破性进展或“银弹”的方法。按照Brooks的说法,软件工程的本质问题是由软件固有的复杂性、一致性、可变性和不可见性所导致的。 1.1软件开发的本质 软件的“本质困难”定义了软件开发的不变事实。不变事实声明软件是一种创造性开发行为的产品——由工匠而不是优秀艺术家所完成的行为意义上的一种工艺品或艺术品。在典型的情况下,软件并不是制造业重复性行为的结果。 1.1软件开发的本质 一旦理解了软件开发的不变事实,人们就应该能够处理软件工程的意外事件——由于软件生产实践而带来的困难,可以由人为的干涉来解决。可以将各种“意外困难”分为3类: 利益相关者。 过程。 建模。 1.1软件开发的本质 1.1.l软件开发的不变事实 1.1.2软件开发的“意外事件” 1.1.3开发还是集成 1.1.1软件开发的不变事实 一些重要的软件特性不易受到人为因素的影响,这些特性在所有的软件项目中都保持不变,并需要在项目中得到承认。软件开发的任务是确保不变事实不会失去控制,并且不要对项目施加任何过多的负面影响。 1.1.1软件开发的不变事实 软件本身就是复杂的。在现代软件系统中,复杂性不过是软件规模(如以代码行表示)的函数,以及组成软件产品的构件之间相互依存关系的函数。 1.1.1软件开发的不变事实 软件的复杂性随着软件的应用领域的性质不同而不同。通常情况下,计算密集型应用领域的软件系统比数据密集型应用领域的软件系统的复杂性要低。数据密集型应用系统包括电子商务,它是本书的主题。这样的系统处理大量数据和业务规则,而这些数据和业务规则往往是不一致或不明确的。构建能够容纳所有业务数据、规则和特殊情况的软件一贯是困难的。 1.1.1软件开发的不变事实 Brooks认为,另外3个重要特性(一致性、可变性及不可见性)加重了这种困难。应用软件必须与其所基于的特定硬件/软件平台相符合(一致),也必须与现有的信息系统相符合,并集成在一起。因为业务过程和需求是在不断变化的,所以在建立应用软件时必须能够容纳变化。尽管应用软件提供了可见的输出,但是负责输出的代码通常深深地隐藏在“不可见”的程序语句、二进制代码库,以及周边的系统软件中。 1.1.1软件开发的不变事实 软件是开发出来的,而不是成批制造出来的(Pressman 2005)。当然,我们不能否认,虽然软件工程的发展为开发实践引入了更多的确定性,但是并不能保证软件项目的成功。这可以与传统的工程分支相对比,如土木工程或机械工程。在传统的工程中,产品(人工制
文档评论(0)