【软件工程】第一章软件工程引论

2024-09-05 00:44

本文主要是介绍【软件工程】第一章软件工程引论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【软件工程】第一章软件工程引论

文章目录

  • 【软件工程】第一章软件工程引论
    • 1. 什么是软件
      • 1.1 软件的定义
      • 1.2 软件特征
      • 1.3 挑战与危机
    • 2. 什么是工程
      • 2.1 什么是工程
      • 2.2 怎么做工程
    • 3. 什么是软件工程
      • 3.1 软件工程的提出
      • 3.2 软件工程的经典定义
      • 3.3 软件工程设计的知识域
      • 3.4 系统工程
      • 3.5 软件工程的全流程
    • 4. AI时代的软件工程
      • 4.1 智能软件工程
      • 4.2 大模型的崛起
      • 4.3 如何控制软件开发的复杂性

1. 什么是软件

1.1 软件的定义

在这里插入图片描述

平台和应用是软件发展的外在驱动力

1.2 软件特征

  • 软件开发不同于硬件设计

    与硬件设计相比,软件更依赖于开发人员的业务素质、智力以及人员的组织、合作和管理;同时对硬件而言,设计成本往往只占整个产品成本的一小部分,而软件设计占整个产品成本的大部分。

  • 软件开发不同于硬件制造

    硬件设计完成后就投入批量制造,制造也是一个复杂的过程,期间仍可能引入质量问题;而软件成为产品之后,其制造只是简单的拷贝而已,软件的存储和运输也非常简单。

  • 软件开发不同于硬件维护

    硬件在运行初期有较高的故障率,在缺陷修正后的一段时间中,故障率会降到一个较低的稳定的水平上,随着时间的改变,故障率将再次升高,这是因为硬件会受到磨损等损害,达到一定程度后只能报废。软件是逻辑的而不是物理的,虽然不会磨损和老化,但在使用过程中的维护却比硬件复杂得多;如果软件的内部逻辑关系比较复杂,在维护过程中还可能产生新的错误。

1.3 挑战与危机

  • 软件面临的挑战

    • 软件复杂性挑战
    • 软件大规模挑战
    • 软件高质量挑战
    • 不确定性挑战
    • 进度和敏捷开发的挑战
    • 遗留系统(Legacy System)的挑战
    • 分散团队的协同挑战
  • 软件危机

    在这里插入图片描述

  • 当前软件实践的问题

    • 软件直到测试前仅仅是忽略质量的现代技术。典型地说,软件工程师
      • 没有计划他们的工作
      • 匆匆地走过需求和设计
      • 在编码时再进行设计
    • 这些实践引入了大量的缺陷
      • 有经验的工程师每7-10行代码就引入了一个缺陷
      • 平均中等规模的系统存在着上千个缺陷
      • 这些缺陷的大多必须靠测试发现
      • 通常要花去一倍以上的开发时间
    • 目前大多数的工作方式还像40年前一样
  • 什么是有价值的软件

    • 满足用户需求
      • 解决用户的痛点
      • 点燃用户的兴奋点
    • 和竞争产品相比,具有创新和竞争优势
      • 业务创新和技术创新
      • 技术、政策和资源的优势

2. 什么是工程

2.1 什么是工程

  • 工程是对技术(或社会)实体的分析、设计、建造、验证和管理。
  • 工程是一种组织良好、管理严密、各类人员协同配合、共同完成工作的学科。
  • 它具有以下特征:
    • 以价值为目标
    • 高度的组织管理性
    • 多种学科的综合
    • 高度的实践性

2.2 怎么做工程

四个核心步骤:

  • 理解问题:在软件工程领域,就是软件需求分析
  • 设计方案:在软件工程领域,就是软件设计
  • 实施方案:在软件工程领域,就是软件编码
  • 监控方案的效能:在软件工程领域,就是软件测试和质量保障

3. 什么是软件工程

3.1 软件工程的提出

1968年,NATO会议上首次提出了“软件工程”的概念,标志着软件开发开始转向工程化。

3.2 软件工程的经典定义

软将工程就是为了经济地获得可靠的且能在实际机器上高效运行的软件而建立和使用的工程原理。

软件工程是将系统的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。

软件工程就是应用计算机科学和数学的原理来经济有效地解决软件问题的一种工程。

3.3 软件工程设计的知识域

  • 软件工程专业知识域
    • 软件需求、软件架构、软件设计、软件架构
    • 软件测试、软件运营、软件维护、软件配置管理
    • 软件工程管理、软件工程过程
    • 软件工程模型与方法、软件质量、软件安全
    • 软件工程经济、软件工程职业实践
  • 软件工程通用知识域
    • 工程经济基础、计算基础
    • 数学和工程基础

3.4 系统工程

  • 在软件开发之前,必须了解该软件所处的外部“系统”
  • 计算机系统包括计算机硬件、软件、人员、数据库、文档、规程等系统元素
  • 系统工程的任务:
    • 系统建模—系统模型
    • 系统仿真
  • 系统工程的表现形式
    • 信息系统,关注企业,业务过程工程—业务模型
    • 嵌入式系统,关注产品,产品工程—产品模型
    • 多媒体系统,关注内容,内容工程—剧本

3.5 软件工程的全流程

4. AI时代的软件工程

4.1 智能软件工程

4.2 大模型的崛起

  • 背景
    • DeepMind的代码生成工具AlphaCode
      • 采用Transformer模型,用大规模代码语料进行预训练
      • 2021年底参加了Codeforces竞赛平台组织的10场实时编程比赛,总体排名位于前54.3%,击败了46%的人类参赛者
    • 微软的AI结构对编程助手Github Copilot
      • 采用OpenAI的Codex模型,一个基于GPT-3的代码预训练模型
      • 2022年8月份结束了公测,开始商业化运作
    • OpenAI的对话式大型语言模型Chat GPT和GPT-4
      • Chat GPT最擅长的就是回答用户提出的问题
      • ChatGPT通过了2022年的AP computer science A考试,得分32分,满分36,这门考试的难度等同于大学CS专业课第一学期难度
  • 对软件工程的影响
    • LLM的作用
      • 开发的局部辅助,提升局部效率
      • 有利于控制研发团队规模,保持小团队的优势
    • 软件工程的内在复杂性和可变性等待性并没有发生本质上的变化
    • 需求和设计的重要性变得更为重要
  • 对软件工程师的影响:更需要从以下方面来强化自己的能力
    • 抓住问题本质的能力
    • 需求理解和需求分析的能力
    • 架构设计和设计取舍的能力
    • 代码审查的能力

4.3 如何控制软件开发的复杂性

  • 软件开发常常是相当复杂、不可预测、难以计划的
  • 软件开发的复杂性主要来源于:
    • 技术的复杂性
      • 技术不断发展
      • 使用多项技术
    • 需求的复杂性
      • 需求模糊
      • 需求不断变化
    • 人的复杂性
  • 虽然有了LLM和工具,但是软件开发的复杂性仍需要人去控制
  • 如何控制复杂性
    • 抽象
    • 分解
    • 迭代

这篇关于【软件工程】第一章软件工程引论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137497

相关文章

【软件工程】软件开发模型

三、瀑布模型  四、几种软件开发模型的主要特点 题目 判断题 选择题 小结

【自然语言处理】第一章绪论

第一章 绪论 文章目录 第一章 绪论1. 什么是自然语言2. 自然语言处理的定义2.1 自然语言处理NLP2.2 计算语言学CL2.3 NLP与CL 3. 自然语言处理的研究内容3.1 研究对象3.2 研究层次3.3 研究问题3.4 研究内容3.4.1 资源建设3.4.2 基础研究3.4.3 应用技术研究3.4.4 应用系统 4. 自然语言处理的流派5. 自然语言处理的挑战

第一章 MUD:创造世界的巫师

自从有了游戏之后,人们不满足于做屏幕前的操控者,而是梦想着自己能够进入到游戏的绚丽世界中,在剑与魔法的世界中拯救世界,称为吟游诗人歌颂的屠龙 勇者,或者在武侠世界中快意恩仇,体验江湖恩怨儿女情长。网络游戏的出现让这个梦想渐渐变为可以触摸的东西,直至成为现实。   如果要追溯网络游戏的历史,我们要将目光投向20世纪70年代。早在1969年,美国人瑞克•布罗米(Rick Blom

第一篇 第一章资金时间价值计算及应用 第二章经济效果评价

第1章 资金时间价值计算及应用 资金具有时间价值 1.1 利息的计算 1.1.1 利息和利率 I=F-P 债务人为资金需求方 债权人为资金供给方利息对经济活动的影响(1.影响企业行为 2.影响居民资产选择行为 3.影响政府行为) 利率 1.影响因素(1.社会平均利润率的高低 2.市场资金供求对比状况 3.资金要承担的风险 4.债务资金使用期限长短 5.政府宏观调控政策 6.经济周期所处

第一章 软件工程的概述简记

第一章  软件工程的概述         *软件的概念:软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。         软件的分类:(5大类)                   *1.基于软件功能划分                                  1)系统软件

第一章——计算机系统概述

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝 🏆所属专栏: 计算机组成原理   欢迎订阅,持续更新中~~~                                                       ✨让小新带着你快乐的学习吧~✨ 目录 前言 一、操作系统的概念和

第一章 感受mac之美-换一种方式用电脑,开启新历程

感谢关注我的读者一直以来的追随与信任。去年到今年以来大环境都不是很好。裁员,机构优化,工厂倒闭,公司破产,贸易战等消息传来,不少还是身边发生的。今年开年以来更是有病毒横行,天降蝗灾等灾害。愿大家都好好的,同时希望这场战役早早告捷。今天是二月二 ,民间传说龙抬头,祝愿大家从此事业腾飞,从此出人头地。 我在这断更的两年中的一些情况,一直处于闭关的状态,一直在学习与实践。后续再和大家一起分享这俩年

考研408《计算机组成原理》复习笔记,第一章计算机系统概述

本人打算从今到2026年不再更新过多的前后端开发的笔记,因为要准备考研了,所以停更前面的开发教程。 这些都是我看完书、视频、做完题后,结合个人理解总结的知识点,希望对各位有帮助。一切都是用最快最精炼的方式讲清楚。 一、计算机发展历程 第一代:电子管时代第二代:晶体管时代第三代:中小规模集成电路时代第四代:超大规模集成电路时代 就这么记就行了,很少考你历程这些细节的。 二、计算机系统结

软件工程技术专业软件开发综合实训室解决方案

一、行业背景与前景分析 1.1 软件工程技术专业就业前景 近年来,中国的软件行业取得了显著的成就,即便在全球经济受到新冠疫情冲击的情况下,仍保持了强劲的增长势头。据工业和信息化部发布的数据,2021年我国软件和信息技术服务业的业务收入达到85371亿元人民币,同比增长18.3%,远超同期国内生产总值的增长率。这一成就不仅体现了中国软件行业的韧性和发展潜力,也为未来的持续增长奠定了坚实的基

《软件工程导论》(第6版)第12章 面向对象实现 复习笔记

第12章 面向对象实现 一、面向对象实现概述 1.主要任务 (1)把面向对象设计结果翻译成用某种程序语言书写的面向对象程序。 (2)测试并调试面向对象的程序。 2.面向对象程序质量的影响因素 (1)面向对象设计的质量; (2)采用的程序语言的特点; (3)程序设计风格。 3.保证软件可靠性的方法 保证软件可靠性的主要措施是软件测试。面向对象测试的目标是用尽可能低的测试成本发现尽