暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

软件工程高效学 | 软件的内涵与危机

342

软件工程是计算机领域的一门专业基础课,它对于培养学生的软件素质、提高学生的软件开发能力与软件项目管理能力具有重要意义。本篇介绍软件工程的基本概念,包括软件的内涵、软件危机的产生、软件危机的表现及原因等相关内容。


01

软件的内涵

软件是计算机系统中与硬件相互依存的另一部分,它是由计算机程序、数据、文档以及服务组成的完整集合。概括地说:软件=程序+数据+文档+服务。其中,程序是按事先预定的功能性能等要求设计和编写的指令序列;数据为进行通信、解释和处理而使用的数据结构和信息表示;文档是与程序开发、维护和使用有关的图文材料;服务是提供的现场维护、技术支持、技术培训及变更管理等业务活动。


02

软件危机


软件危机的产生

20世纪60年代以前,计算机刚刚投入实际使用,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是自给自足的私人化软件生产方式。

20世纪60年代中期,大容量、高速度计算机的出现,使计算机的应用范围迅速扩大,同时,高级语言的出现和操作系统的发展又引起了计算机应用方式的变化。这些都使得软件开发规模急剧扩大,软件系统的复杂程度也越来越高,软件可靠性问题愈加突出。原来的个人设计、个人使用的软件模式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发。

之后,计算机科学家正式讨论软件危机问题,并提出“软件工程”一词。人们开始研究软件生产的客观规律性,建立与系统化软件生产相关的原则、方法、技术和工具,以期达到降低软件生产成本、改进软件产品质量和提高软件生产率水平的目标。


软件危机的表现

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。软件危机的具体表现包括以下几个方面。

(1) 软件开发进度难以控制。

软件开发进度难以控制,拖延工期现象并不罕见,这种现象降低了软件开发组织的信誉。

(2) 软件开发成本难以控制。

软件开发成本难以控制,投资一再追加,往往是实际成本比预算成本高出一个数量级。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了产品的质量,从而不可避免地会引起用户的不满。

(3) 产品功能难以满足。

开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统,匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。

(4) 软件产品质量无法保证。

软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。软件产品并不是没有错误,而是盲目监测很难发现错误,隐藏的错误往往是造成重大事故的隐患。

(5) 软件产品难以维护。

软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测,排除系统故障。

(6) 软件缺少合适的文档资料。

文档资料是软件必不可少的重要组成部分。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。


产生软件危机的原因

(1) 用户需求不明确。

用户需求主要体现在:在软件开发出来之前,用户自己也不清楚软件开发的具体需求;用户对软件开发需求的描述不精确,可能有遗漏、有二义性,甚至有错误;在软件开发过程中,用户又提出修改软件开发功能、界面、支撑环境等方面的要求;软件开发人员对用户需求的理解与用户本来愿望有差异。

(2) 缺乏正确的理论指导。

软件开发过程是复杂的逻辑思维过程,其产品极大程度地依赖于开发人员高度的智力投入。由于过分地靠程序设计人员在软件开发过程中的技巧和创造性,加剧了软件开发产品的个性化,也是产生软件开发危机的一个重要原因。

(3) 软件开发规模越来越大。

随着软件开发应用范围的增大,软件开发规模愈来愈大。大型软件开发项目需要组织一定的人力共同完成,而多数管理人员缺乏开发大型软件系统的经验,多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确,有时还会产生误解。软件开发人员不能有效地处理大型软件开发的全部关系和各个分支,因此容易产生疏漏和错误。

(4) 软件开发复杂度越来越高。

软件开发不仅是在规模上快速地发展扩大,而且其复杂性也急剧增加。软件开发产品的特殊性和人类智力的局限性导致人们难以处理“复杂问题”。“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件开发效率和能力,新的、更大的、更复杂的问题又摆在了人们的面前。


软件工程的诞生

为了避免和解决软件开发中再出现软件危机,不仅需要标准规范的技术措施,更要有强有力的组织管理保障。各方面密切配合、齐抓共管,切实以软件工程的方法和规程进行运作,才能确保软件质量和信息化的健康发展。

软件工程的主要对象是大型软件。软件工程研究的内容主要包括软件质量保证和质量评价,软件研制和维护的方法、工具、文档,用户界面的设计以及软件管理等。软件工程的最终目的是摆脱手工生产软件的状况,逐步实现软件研制和维护的自动化。


实例讲解

软件工程导论与项目案例教程

(微课视频版)

下期预告

软件工程

2. 软件工程基础

3. 软件项目的生存周期

4. 软件项目的开发模型

可行性分析

5. 实践工具:Microsoft Office Visio

6. 实践工具:Kitten

7. 实战案例:编写浏览器开发可行性研究报告

软件设计

8. 实战案例:在线选修课程管理系统设计

UI设计

9. 实战案例:利用Kitten设计交互案例

软件实现

10.实战案例:用海龟编辑器实现人脸识别

软件测试

11. 实战案例:Selenium单元测试实战

12. 自动化网页资料单选实战

项目管理

13. 实战案例:Excel绘制甘特图

14. 实战案例:TAPD进行需求管理

15. 实战案例:禅道进行Bug管理



03

参考书籍


软件工程导论与项目案例教程(微课视频版)

ISBN:9787302614616

作者:吴彦文

定价:59.90元

扫码优惠购书





内容简介

本书共分为11章,设计体系遵循教育部“新工科”工程技术人才“实基础、精专业、强实践、重创新、懂管理”的育人理念。全书涵盖软件工程基础知识、软件分析与设计、软件实现、软件测试、软件项目管理、软件开发实践和应用工具拓展等方面的内容。

第1章绪论,涵盖了软件工程概述、软件工程学习者阶段性知识与能力框架和全书实践任务预览。

第2章可行性分析,介绍了可行性研究,包括项目立项、可行性研究的方法与工具。以Visio软件为例,详解了流程图的绘制过程。

第3章需求分析,描述了需求分析的步骤和结构化分析方法。以机票预订系统需求分析报告为例,从数据、功能、性能三个维度展示了需求文档的书写流程与规范。

第4章软件设计,介绍了软件设计的步骤、面向对象的软件设计方法——UML和UML的主要建模工具RationalRose。借助在线选修课程管理系统设计案例,展现了用例模型和UML图的构建方法。

第5章UI设计,总结了界面的设计原则和交互设计的操作技巧。采用基于Axure的高保真Web原型图设计案例和基于Kitten的交互设计案例进行讲解,带领读者快速入门交互设计。

第6章软件数据库设计,介绍了数据库系统、关系数据库管理系统、MySQL和结构化查询语言SQL。此外,介绍了数据库管理工具Navicatfor MySQL的基本操作。

第7章软件实现,介绍了软件实现、编码技术和开发实践过程。基于此,设计了应用海龟编辑器的人脸识别算法实战案例和应用微信开发者工具的记事本小程序开发实战案例,辅助读者快速上手开发实践。

第8章软件测试,归纳了软件测试常用的方法和工具,重点介绍了自动化测试工具Selenium。基于此,设计了单元测试实战和自动化网页资料单选实战,帮助读者快速熟练使用测试工具。

第9章项目管理,介绍了项目管理的相关概念及应用,设计了多个实践案例,模拟了项目管理中的关键步骤,以帮助读者快速理解项目管理的基本流程和技术应用。

第10章软件工程实践,引导读者以案例贯穿软件工程开发全流程的方式,实践了“湖北省青少年运动员竞赛注册管理信息系统”项目和“疫情地图小程序”项目,从而驱动读者自主探索软件开发的工具和过程。

第11章软件工程中的“黑科技”工具,拓展了一些科技狂潮下应用于软件工程实践的“黑科技”工具,激发读者欣赏科技之美,追求创造科技之美。





    文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论