1第3章软件工程基础2内容提要•软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。•结构化分析方法,数据流图,数据字典,软件需求规格说明书。•结构化设计方法,总体设计与详细设计。•软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。•程序的调试33.1软件工程基本概念43.1.1软件定义与软件特点•1.软件的定义和组成–定义:•计算机软件(Software)是计算机系统中与硬件相互依赖的另一部分。–组成:•程序•数据•文档–国标(GB)定义•与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。53.1.1软件定义与软件特点(续)•2.软件的特点–软件是一种逻辑实体,而不是具体的物理实体,具有抽象性–软件没有明显的制造过程。对软件的质量控制,必须在软件开发方面下功夫–软件不存在老化问题,但存在退化问题,必须要修改和维护–对计算机系统有着依赖性——软件移植的问题–软件复杂性高,开发和维护成本高–软件开发涉及诸多社会因素63.1.1软件定义与软件特点(续)•3.软件的分类–应用软件–系统软件•操作系统•数据库管理系统•设备驱动程序•……–支撑软件73.1.2软件危机与软件工程•1.软件危机–软件工程源自于软件危机–主要表现:•软件需求的增长得不到满足•软件开发成本和进度无法控制•软件质量难以保证•软件不可维护或维护程度非常低•软件成本不断提高•软件开发生产效率的提高赶不上硬件的发展和应用需求的增长–归结为成本、质量和生产率等问题83.1.2软件危机与软件工程•2.软件工程的产生与定义–软件工程学——工程学的新兴领域–定义:•国标(GB):应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。•德国人FritzBauer:软件工程是建立并使用完善的工程化原则,以较经济的手段获取能在实际机器上有效运行的可靠软件的一系统方法。•IEEE:将系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,即将工程应用于软件中。–主要思想:在软件开发过程中需要应用工程化原则的重要性93.1.2软件危机与软件工程•2.软件工程的产生与定义–软件工程3个要素:•方法•工具•过程103.1.3软件工程过程与软件生命周期•1.软件工程过程–P(Plan)——软件规格说明–D(Do)——软件开发–C(Check)——软件确认–A(Action)——软件演进113.1.3软件工程过程与软件生命周期•软件产品从提出、实现、使用维护、停止使用到退役的过程–3个阶段–6个阶段工作可行性研究初步项目计划需求分析概要设计详细设计实现测试维护使用退役定义阶段开发阶段维护阶段123.1.3软件工程过程与软件生命周期•定义阶段–制定计划:”能做吗?“–需求分析:“做什么?”•开发阶段:–软件设计:“如何做?”,分为概要设计和详细设计两个阶段。–软件实现:“实现”,编码。–软件测试:”做的怎么样?“•运行维护阶段–使用,不断维护133.1.4软件工程的目标与原则•1.软件工程的目标–成功的项目:•成本•功能•移植•维护费用•按时•及时交付–目标:•在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品143.1.4软件工程的目标与原则•2.软件工程学的范畴软件工程软件开发方法学软件开发过程软件开发工具软件工程环境软件管理学软件工程经济学软件心理学软件工程管理软件开发技术153.1.4软件工程的目标与原则•3.软件工程的原则–抽象–信息隐蔽–模块化–局部化–确定性–一致性–完备性–可验证性163.1.5软件开发工具与软件开发环境•1.软件开发工具–协助开发人员进行软件开发活动所使用的软件或环境–需求分析工具、设计工具、编码工具、排错工具、测试工具等。•2.软件开发环境–全面支持软件开发全过程的软件工具的集合–计算机辅助软件工程:CASE173.2结构化分析方法183.2.1需求分析与需求分析方法•1.需求分析–定义:•任务:导出目标系统的逻辑模型,解决“做什么”的问题•全面理解用户的各项要求•准确地表达...