软工第一章:软件工程学概述

参考书目

《软件工程导论(第6版)》是2013年8月1日清华大学出版社出版的图书,作者是张海藩、牟永敏。本书主要讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。本书正文共13章,第1章是概述,第2~8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9~12章分别讲述面向对象方法学引论、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。附录讲述了用面向对象方法开发软件的过程,对读者深入理解软件工程学很有帮助,也是上机实习的好材料。[^1]:百度

[^2]: @当当网

系列文章目录

软件工程第0章:点击跳转文章

软件工程第一章

文章目录

软工第一章:软件工程学概述

参考书目

系列文章目录

写作风格说明

正文

一、软件危机

(一)是什么?

(二)为什么?

(三)怎么办?

二、软件工程

(一)是什么?

(二)为什么?

(三)怎么办?

三、软件生命周期

(一)是什么?

(二)为什么?

(三)怎么办?

四、软件过程

(一)是什么?

(二)为什么?

(三)怎么办?

总结

写作风格说明

在软件工程这个专栏,我将会尽可能围绕知识点进行剖析,主要撰写重难点,不计较细枝末节。重点关注问题是什么,为什么,怎么样?每周一更,一篇文章基本上是参考书目的一章内容,当然,遇到重难点或是篇幅较长的章节将会适当分割。

正文

一、软件危机

(一)是什么?

了解软件危机是什么之前,我们先来了解软件这个概念。软件= 程序 + 数据 + 文档

程序(program):是按用户需求编制的指令序列,表明软件做什么。数据(data):是使程序能正常操纵信息的数据结构,是程序加工的材料和结果。文档(document):是与程序开发、维护和使用有关的图文资料。

软件的特点:软件是一个抽象的逻辑产品。是复杂的脑力劳动的结果;没有明显的制造过程;不会磨损、老化;维护困难。

软件危机:是指再计算机软件的开发和维护过程中所遇到的一系列严重问题。

软件危机包括以下两个问题:如何开发软件,以满足软件日益增长的需求;如何维护数量不断膨胀的已有软件。

(二)为什么?

软件危机产生的原因:一方面是软件本身的特点:智力密集型的复杂的逻辑产品,规模庞大;功能和实现的多样性,能见度低。

另一方面是开发和维护方法的不正确:软件和程序混为一谈;没有软件生命同期(即生产和维护的阶段性)的概念。

(三)怎么办?

解决途径:1、正确地认识计算机软件,即软件是程序、数据及相关文档的完整集合。2、必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。3、一个推广使用从实践中总结出来的成功的技术和方法,并不断地探索和研究。4、一个开发和使用更好的软件工具。

二、软件工程

(一)是什么?

采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

软件工程有许多定义,但典型的有Fritz Bauer在1968年提出的和IEEE给出的定义。

(二)为什么?

软件工程的出现主要是为了解决“软件危机”问题,相关内容,请移步本系列文章的《软件工程第0章》

(三)怎么办?

实现软件工程需要用到软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型( paradigm)。在软件工程领域中,这两个术语的含义基本相同。

软件工程方法学包含3个要素:方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“怎样做"的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。

软件工程的基本原理:1、用分阶段的生命周期计划进行严格管理。2、坚持进行阶段评审。(尽早现错)3、实行严格的产品控制。(配置管理)4、采用现代程序设计技术。5、结果应能清楚地审查。(质量标准)6、开发小组的人员应该少而精。7、承认不断改进软件工程实践的必要性。(技术创新)

三、软件生命周期

(一)是什么?

软件生命周期:软件从开发、定义、使用和维护,到废弃的过程。

(二)为什么?

概括地说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。

软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。

开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。

维护时期的主要任务是使软件持久地满足用户的需要。具体地说,当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。

(三)怎么办?

软件生命周期的3个阶段8个步骤:

阶段步骤任务

软件定义    问题定义    用户需要解决什么问题

软件定义    可行性研究     可以吗?值得吗?

软件定义    需求分析    软件必须做什么

软件开发    总体设计     软件总体结构

软件开发     详细设计     模块结构

软件开发      编码和单元测试     写模块源码,并验证

软件开发      综合测试     验证是否能够解决问题

运行维护     维护              持久满足用户的需求

四、软件过程

(一)是什么?

软件工程过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

(二)为什么?

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

概括地说软件过程描述为为了开发出客户需要的软件,什么人(who)、在什么时候(when)、做什么事(what)以及怎样(how)做这些事以实现某一个特定的具体目标。

在完成开发任务时必须进行一些开发活动,并且使用适当的资源(例如,人员、时间、计算机硬件、软件工具等),在过程结束时将把输人(例如,软件需求)转化为输出(例如,软件产品)。因此,ISO9000把过程定义为:“使用资源将输人转化为输出的活动所构成的系统。”此处,“系统”的含义是广义的:“系统是相互关联或相互作用的一. 组要素。”

过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。为获得高质最的软件产品,软件过程必须科学、有效。

(三)怎么办?

软件过程主要以5个模型和两个过程实现。

1、瀑布模型

特点:阶段间具有顺序性和依赖性;推迟实现的观点;质量保证的观点;适用于有一个稳定的产品定义和很容易被理解的技术解决方案时。

2、快速原型模型

特点:用户驱动;尽快展示未来面貌;在使用中进行需求分析;贴近用户,分析确切。

3、增量模型

特点:模块化,组件化;适用于边用边开发的系统。

4、螺旋模型

特点:适用于内部开发的大规模项目

5、喷泉模型

特点:适用于面向对象方法;始终使用统一的“对象”概念,表现出步骤的反复迭代;概念和方法的一致性保证了各种活动之间的“无缝”衔接。

6、RUP统一过程

特点:基于UML的面向对象软件开发模型;迭代式开发;管理需求;使用基于构件的体系结构;可视化建模;验证软件质量;控制软件变更。

7、敏捷过程

特点:讲究高效工作和快速响应变化;敏捷软件开发宣言……;包括XP(极限编程)、Scrum等

8、微软过程

特点:结合了RUP统一过程和敏捷过程的优点;对方法、工具、产品等方面的论述不如RUP和敏捷过程全面。

总结

本章力求对计算机软件工程学作一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。

本章力求使读者对软件工程的基本原理和方法有概括的本质的认识。生命周期方法学把软件生命周期划分为若干个相对独立的阶段,每个阶段完成些确定的任务,交出最终的软件配置的一个或几个成分(文档或程序);基本上按顺序完成各个阶段的任务,在完成每个阶段的任务时采用结构化技术和适当的软件工具;在每个阶段结束之前都进行严格的技术审查和管理复审。

你可能感兴趣的:(软工第一章:软件工程学概述)