第二部分 面向对象的分析
第二部分 面向对象的分析
关于软件工程的补充知识 软件危机 硬件性能提高,价格则下降,应用领域迅速扩大; 要求计算机做的事越来越多,也越来越复杂; 这使计算机软件的功能、规模及复杂性与日俱增。 软件的复杂性达到了它的开发者难以控制的程度。 大系统的复杂性是小程序无法比拟的 当几十个人开发一个大型软件系统时,没有任何人能对它从全局到 细节都了如指掌。各部分的问题错纵复杂,相互影响,不可避免地 隐藏大量错误,并且没有可靠的方法能彻底发现和排除这些错误。 这种情况导致了严重的后果 软件可靠性下降;开发效率低下;维护极为困难。 这使软件开发者陷入困境,人们称之为“软件危机
关于软件工程的补充知识 软件危机 硬件性能提高,价格则下降,应用领域迅速扩大; 要求计算机做的事越来越多,也越来越复杂; 这使计算机软件的功能、规模及复杂性与日俱增。 软件的复杂性达到了它的开发者难以控制的程度。 大系统的复杂性是小程序无法比拟的。 当几十个人开发一个大型软件系统时,没有任何人能对它从全局到 细节都了如指掌。各部分的问题错纵复杂,相互影响,不可避免地 隐藏大量错误,并且没有可靠的方法能彻底发现和排除这些错误。 这种情况导致了严重的后果—— 软件可靠性下降;开发效率低下;维护极为困难。 这使软件开发者陷入困境,人们称之为“软件危机
寻求摆脱危机的出路: 程序设计方法学的研究 着眼于程序本身,研究怎样才能写出高质量的 程序。如结构化程序设计方法 软件工程学的研究 着眼于软件生产的全过程(编程只是其中的 个阶段),研究用工程学的方法来开发软件。 其它 如并发程序设计、数据结构与算法、以及编程 语言等方面的研究
寻求摆脱危机的出路: 程序设计方法学的研究 ——着眼于程序本身,研究怎样才能写出高质量的 程序。如结构化程序设计方法。 软件工程学的研究 ——着眼于软件生产的全过程(编程只是其中的一 个阶段),研究用工程学的方法来开发软件。 其它 ——如并发程序设计、数据结构与算法、以及编程 语言等方面的研究
软件工程: 软件工程的基本思想,就是用工程学的方法进行软件的开 发与维护,并对软件生产过程进行工程化的管理。 在此之前,软件的生产方式是手工作坊式的。程序员 象是一些个体的手工劳动者,程序设计被当作一种艺 术创造,而不当作是一项工程。这种生产方式只能适 应较小的程序,不能适应大型软件开发。 和其它行业的道理一样,当软件的规模和复杂性达到一定 程度时,即使有大量熟练的程序员也难以胜任它的开发任 务。需要用工程的方法来进行软件生产,这就是软件工程
软件工程: 软件工程的基本思想,就是用工程学的方法进行软件的开 发与维护,并对软件生产过程进行工程化的管理。 在此之前,软件的生产方式是手工作坊式的。程序员 象是一些个体的手工劳动者,程序设计被当作一种艺 术创造,而不当作是一项工程。这种生产方式只能适 应较小的程序,不能适应大型软件开发。 和其它行业的道理一样,当软件的规模和复杂性达到一定 程度时,即使有大量熟练的程序员也难以胜任它的开发任 务。需要用工程的方法来进行软件生产,这就是软件工程
软件生命周期(软件工程理论所揭示的一项规律) 个软件总是要经历从诞生到死亡的过程,其间需要经过 需求分析、设计、编码、测试、维护等一系列生存阶段 需求分析——分析用户需求,研究问题域,搞清楚应该建 立一个什么样的系统才能满足用户的需求。 设计—分为概要设计和详细设计。 概要设计是以需求分析的结果为依据定义系统的主要 构成成分和它们之间的关系。 详细设计是定义每个系统成分内部的构造细节。 编程——按设计的要求来编写程序,并通过调试使之能够 还行。 测试通过一系列测试用例来检验程序正确性,看它是 否能达到预期的要求 维护在系统交付使用之后,根据使用中发现的错误或 用户的需求变化,对软件进行修改
软件生命周期(软件工程理论所揭示的一项规律) 一个软件总是要经历从诞生到死亡的过程,其间需要经过 需求分析、设计、编码、测试、维护等一系列生存阶段。 需求分析——分析用户需求,研究问题域,搞清楚应该建 立一个什么样的系统才能满足用户的需求。 设计——分为概要设计和详细设计。 概要设计是以需求分析的结果为依据定义系统的主要 构成成分和它们之间的关系。 详细设计是定义每个系统成分内部的构造细节。 编程——按设计的要求来编写程序,并通过调试使之能够 运行。 测试——通过一系列测试用例来检验程序正确性,看它是 否能达到预期的要求。 维护——在系统交付使用之后,根据使用中发现的错误或 用户的需求变化,对软件进行修改