01 软件工程概论试讲 软件工程概述
- 格式:pptx
- 大小:3.61 MB
- 文档页数:87
第一讲软件工程概述软件的定义软件是运算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,爱护和使用有关的图文材料软件危机软件危机是指运算机软件开发和爱护过程中所遇到的一系列严峻问题。
概括的说即为:能否满足对软件日益增长的需求?能否爱护数量日益增长的现有软件?软件工程的定义B o e h m:运用现代科学技术知识来设计并构造运算机程序及为开发、运行和爱护这些程序所必需的相关文件资料I E E E:软件工程是开发、运行、爱护和修复软件的系统方法F r i t z B a u e r:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法软件工程要素三要素:方法、工具和过程(缺乏一个过程,洗厕所的都有方法和工具,但没有一个好的过程)软件工程方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件生命周期(Life Cycle)软件有一个孕育、产生、成长、成熟、衰亡的生存过程。
那个过程即为运算机软件的生命周期软件生存期的六个步骤,即制定打算、需求分析、设计、实现、测试及运行爱护软件生命周期:制订打算确定要开发软件系统的总目标给出功能、性能、可靠性以及接口等方面的要求完成该软件任务的可行性研究估量可利用的资源(硬件,软件,人力等)、成本、效益、开发进度制定出完成开发任务的实施打算,连同可行性研究报告,提交治理部门审查软件生命周期:需求分析对用户提出的要求进行分析并给出详细的定义,得到系统逻辑模型,可用数据流程图、数据字典和简要算法加以表示。
编写软件需求说明书或系统功能说明书及初步的系统用户手册提交治理机构评审软件生命周期:软件设计概要设计—把各项需求转换成软件的体系结构。
结构中每一组成部分差不多上意义明确的模块,每个模块都和某些需求相对应。
第1讲软件工程概述信息化系统的特点:海量信息资源、分布、动态、成长、无法集中控制计算机软件:与计算机系统操作有关的程序以及任何与之相关的文档的集合程序: 由程序设计语言所描述的、能为计算机所识别、理解和处理的语句序列。
程序设计语言有良好、严格语法和语义面向机器: 如汇编语言、机器语言等面向过程: 如Fortran, Pascal, C等等面向对象: 如Java等等面向问题: 如结构化查询语言SQL等等文档:记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料,需求分析文档,软件设计文挡等。
编写文档目的:促进对软件的开发,管理和维护;便于各种人员(用户,开发人员)的交流软件特点:不会老化逻辑产品(智力, 无形) 维护困难和复杂(完善, 纠错,…...) 生产只需复制软件开发性质如成本、进度等难以估计软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理软件危机:软件在开发和维护过程中遇到的一系列问题,困扰学术界和工业界,用户对软件开发缺乏信心,软件开发的高投入和高风险原因:逻辑产品,不同于物理产品,复杂性高,逻辑产品,逻辑复杂性,远高于硬件复杂性,软件的复杂性随规模呈指数级上升。
规模大。
应用扩大,代码量,1000万行,仍在不断膨胀。
影响软件生产率和质量的因素比较复杂。
人员的能力和水平。
团队合作。
缺乏有效、系统原理、原则、方法和工具的指导和辅助。
软件危机-->根源-->解决途径:软件工程产生:1968年NATO 计算机科学会议软件工程是运用工程的、数学的、计算机等科学概念、方法和原理来指导软件开发和管理和维护的一门学科。
三要素:过程(管理部分)方法(技术手段)工具(自动或半自动地支持软件的开发和管理)要素之间相互关联和支持目标:正确性可靠性可维护性可重用性可追踪性可移植性可互操作性有效性原则:抽象,模块化,信息隐藏,局部化,一致性,完全性,可验证性,实践经验的总结软件过程:是指软件生存周期所涉及的一系列相关过程。
第一讲软件工程概述在当今数字化的时代,软件已经成为我们生活和工作中不可或缺的一部分。
从我们日常使用的手机应用程序,到企业运行所依赖的复杂系统,软件的身影无处不在。
而软件工程,作为一门致力于开发高质量软件的学科,对于确保这些软件的可靠性、有效性和可维护性起着至关重要的作用。
软件工程并非是简单的编写代码,它是一个综合性的、有组织的、规范化的过程。
就好像建造一座大厦,不仅需要有优秀的建筑工人(程序员),还需要有精心设计的蓝图(软件架构)、严格的施工规范(开发流程)以及有效的质量监督(测试和维护)。
那么,软件工程到底包含哪些关键的方面呢?首先,需求分析是软件工程的起点。
这就好比在出发旅行前,我们要明确目的地和路线。
在需求分析阶段,开发团队需要与客户或者用户进行深入的沟通,了解他们的期望和需求。
这些需求可能包括功能需求,比如软件要实现什么样的具体操作;性能需求,例如软件的响应速度、处理能力等;还有可用性需求,比如界面的友好程度、操作的便捷性等。
只有清晰地理解了这些需求,才能为后续的开发工作指明方向。
接下来是软件设计。
这是构建软件架构的重要阶段,类似于大厦的框架设计。
在这个阶段,开发人员要根据需求分析的结果,确定软件的整体结构、模块划分以及它们之间的关系。
好的软件设计能够提高软件的可扩展性、可维护性和可重用性。
比如,采用分层架构可以使不同层次的功能相互独立,便于修改和扩展;使用设计模式可以提高代码的复用率,减少重复开发。
然后是编码实现。
这是将设计转化为实际代码的过程,就像建筑工人根据设计图纸进行施工。
在编码过程中,程序员需要遵循一定的编程规范和最佳实践,以保证代码的质量和可读性。
同时,他们还需要运用合适的算法和数据结构来提高软件的性能。
测试是软件工程中不可或缺的环节。
就像大厦建成后需要进行各种质量检测一样,软件也需要经过严格的测试。
测试包括单元测试、集成测试、系统测试和用户验收测试等。
通过测试,可以发现软件中的缺陷和错误,并及时进行修复,确保软件能够满足用户的需求和期望。