需求工程需求工程需求分析与系统设计需求分析与系统设计关于本课程关于本课程课程的本质听课的要求作业的要求与后继课程的关系考试第一章软件过程第一章软件过程本章目标是从总体上描述软件开发过程中的若干策略问题,介绍支撑现代软件开发的过程和方法。了解软件开发的本质、社会基础,以及业务系统的开发为何不能完全基于严格的工程和科学原则。学习软件过程标准(CMM、ISO9000、ITIL)及服从框架(COBIT)。获得策略系统规划和方法(SWOT、VCM、BPR、ISA)的知识,以确保业务目标能够确定信息系统项目。认识到信息系统之间具有很大的差异,这种差异取决于信息系统能够满足的管理水平及其所具有的竞争优势。了解软件开发的结构化方法与面向对象方法的差异。学习软件开发生命周期的各个阶段及跨越生命周期的活动。了解现代及新兴的软件开发模型/方法(螺旋模型、IBMRational统一过程、模型驱动的体系结构、敏捷软件开发及面向方面的软件开发)。了解7个实例研究,这些实例用于作为贯穿全书的例子和练习。第一章软件过程第一章软件过程1.1软件开发的本质1.2系统规划1.3三级管理系统1.4软件开发生命周期1.5开发模型与方法1.6实例研究的问题陈述1.11.1软件开发的本质软件开发的本质在关于信息系统(informationsystem,IS)管理的文献中,充满了项目失败、逾期和超预算、有缺陷的解决方案,以及不可维护的系统等例子。虽然大量引用StandishChaos报告(声称有70%的软件项目失败)是有些夸张,但毋庸置疑的是,许多“成功的”系统(换句话说,就是已经付款并交付给用户的系统)被可靠性、性能、安全性、可维护性及其他问题所困扰。为了了解这些问题的原因,我们首先需要了解软件开发的本质。在一篇有代表性的论文中,阐述了软件工程的本质问题和意外事件。软件工程的本质问题体现在软件本身所固有的困难中,我们只能承认这些困难——没有获得突破性进展或“银弹”的方法。按照Brooks的说法,软件工程的本质问题是由软件固有的复杂性、一致性、可变性和不可见性所导致的。1.11.1软件开发的本质软件开发的本质软件的“本质困难”定义了软件开发的不变事实。不变事实声明软件是一种创造性开发行为的产品——由工匠而不是优秀艺术家所完成的行为意义上的一种工艺品或艺术品。在典型的情况下,软件并不是制造业重复性行为的结果。1.11.1软件开发的本质软件开发的本质一旦理解了软件开发的不变事实,人们就应该能够处理软件工程的意外事件——由于软件生产实践而带来的困难,可以由人为的干涉来解决。可以将各种“意外困难”分为3类:利益相关者。过程。建模。1.11.1软件开发的本质软件开发的本质1.11.1软件开发的本质软件开发的本质1.1.l软件开发的不变事实1.1.2软件开发的“意外事件”1.1.3开发还是集成1.1.11.1.1软件开发的不变事实软件开发的不变事实一些重要的软件特性不易受到人为因素的影响,这些特性在所有的软件项目中都保持不变,并需要在项目中得到承认。软件开发的任务是确保不变事实不会失去控制,并且不要对项目施加任何过多的负面影响。1.1.11.1.1软件开发的不变事实软件开发的不变事实软件本身就是复杂的。在现代软件系统中,复杂性不过是软件规模(如以代码行表示)的函数,以及组成软件产品的构件之间相互依存关系的函数。1.1.11.1.1软件开发的不变事实软件开发的不变事实软件的复杂性随着软件的应用领域的性质不同而不同。通常情况下,计算密集型应用领域的软件系统比数据密集型应用领域的软件系统的复杂性要低。数据密集型应用系统包括电子商务,它是本书的主题。这样的系统处理大量数据和业务规则,而这些数据和业务规则往往是不一致或不明确的。构建能够容纳所有业务数据、规则和特殊情况的软件一贯是困难的。1.1.11.1.1软件开发的不变事实软件开发的不变事实Brooks认为,另外3个重要特性(一致性、可变性及不可见性)加重了这种困难。应用软件必须与其所基于的特定硬件/软件平台相符合(一致),也必须与现有的信息系统相符合,并集成在一起。因为业务过程和需求是在不断变化的,所以在建立应用软件时必须能够容纳变化。尽...