2004年12月4日18:37:40
1.1 软件与软件危机
软件的定义:软件是能国完成预定功能和性能的可执行的计算机程序和使程序正常执行所需要的数据,加 上描述程序的操作和使用的文档。即“ 软件 = 程序 + 文档 ”。
程序定义:程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
文档的定义:文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。
软件的特征:1.软件开发不同于硬件设计
2.软件生产不同于硬件制造
3.软件维护不同于硬件维修
软件危机:1.在开发上:由于现在软件规模越来越庞大,导致软件开发费用经常超出预算,完成时间也常常脱期,并且软件可靠性和软件质量也有所下降。
2.在维护上:软件维护费用急剧上升,直接威胁计算机应用的扩大。
3.在生产上:软件生产技术进步缓慢,是加剧这一软件危机的重要原因。
1.2软件工程学的范畴
“软件工程”一词,首先是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上提出的。他反映了软件人员认识到软件危机的出现以及为谋求解决这一危机的一种努力。
软件工程学包括软件开发技术和软件工程管理。而软件开发技术又分为软件开发方法学,软件工具,软件工程环境。软件工程管理又分为软件管理学,软件经济学,软件度量学。
软件开发方法学:无固定方法->结构化的软件开发->面向对象的软件开发(软件复用)
软件工具:帮助开发软件的软件叫做软件工具,在软件开发的各个阶段都有许多有效的工具,这些工具结合起来构成“软件箱”或“集成工具”。
软件工程环境:方法和工具相结合,再加上配套的软,硬件支持就形成环境(Software Engineering Environment 简称SE2)。
软件工程管理:目的是为了按照进度及预算完成软件开发计划,实现预期的经济和社会效益。
1.3传统软件工程和面向对象软件工程
结构化的程序设计推动了程序设计风格从“追求技巧与效率”到“清晰第一,效率第二”的转变,从而提高了程序的易读性和可靠性。形成了结构化的软件开发范型,即传统软件工程或经典软件工程。
面向对象的程序设计较好的实现了“解空间”与“问题空间”的一致性。“对象+消息”的机制取代了“数据结构+算法”的思路。
面向对象范型具有很多优势:1.有效地降低软件的复杂性,简化软件的开发。
2.维护上的好处,修改程序限于对象本身,因而导致软件故障的机会大大减少,令大型软件的维护更快,更简单。
两类软件工程范型的比较:1.传统软件工程包括:软件分析->总体设计->详细设计->面向过程的编码->测试
2.面向对象软件工程包括:软件分析与对象提取->对象详细设计->面向对象的编码->测试
1.4软件工程的应用
在各种规模的软件开发中都应该严格遵守软件工程的方法。
软件生产的困难分为本质问题和非本质问题。软件工程只能解决非本质问题。解决本质问题应该是改变软件的生产策略。例如尽可能利用现成的软件,采用快速原型和增量开发技术等。