什么是软件工程

软件工程

软件工程就是为了提高软件质量。软件技术只是打造产品的工具,方法则是产品的架构

软件生命周期

1. 规划2. 需求分析3. 设计4. 编码5. 测试6. 运行维护

但是这封信中有一句话,大家不要忽视,“软件技术是我们打造产品的基本工具”,技术只是工具,只是我们用来打造产品的工具!

技术是否先进,技术选择是否合理,将决定我们软件的高度。

技术的选型,不仅要看技术是不是先进,还要看它是不是适合当前的产品项目。并不是什么技术很新酷,就用什么!

我们要深入学习架构与设计、编码、测试、安全、可用性、性能、维护性、体验等技术,并科学运用这些技术。

既然技术只是工具,那么我们就没必要给自己设置各种技术壁垒障碍。

软件工程知识架构全景图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n4TEO2eg-1632384526602)(软件工程.assets/image-20210923101228739.png)]

聚焦于质量,构建和维护高质量的软件

软件工程 = 工具 + 方法 + 过程

  1. 过程:软件从诞生到结束期间,在开发与构建系统时要遵循的步骤。(瀑布模型,敏捷开发)
  2. 方法:整个过程中,如何构建系统的方法学,比如说,如何分析用户需求;如何对产品进行测试验收;如何进行系统架构设计等。
  3. 工具:辅助软件工具,或者技术

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGaYB2gi-1632384526605)(软件工程.assets/软件工程.jpg)]

软件工程,它是为研究和克服软件危机而生。

在这次会议上,同时也提出了“软件工程”的定义:

为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则。
(Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.)

1993 年,电气电子工程师学会(IEEE)给出了一个更加综合的定义:

将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。
(Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SzQzOeU5-1632384526606)(软件工程.assets/瀑布模型.png)]

什么是软件工程?

软件工程就是用工程化的方法来开发维护软件。也可以说软件工程就是用一定的过程,采用科学的方法,借助工具来开发软件。
软件工程学科的产生,就是为了解决软件危机。
而软件工程的核心,就是围绕软件项目开发,对开发过程的组织,对方法的运用,对工具的使用。

掌握工程思维,把每件事都当作一个工程项目来推进。

软件工程是一门用工程化方法解决软件项目问题的学科,其本质也是一门工程学科,这门课的知识在学完后,不仅可以应用在软件项目中,还可以应用于日常生活中遇到的一些问题,Everything is a project。

有目的、有计划、有步骤地解决问题的方法就是工程方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-42HcEF9N-1632384526608)(软件工程.assets/工程方法.png)]

  • **想法:**想法阶段通常是想要解决问题。最开始问题通常是模糊的,所以需要清晰地定义好问题,研究其可行性,检查是否有可行的解决方案。
  • **概念:**概念阶段就是用图纸、草图、模型等方式,提出一些概念性的解决方案。这些方案可能有多个,最终会确定一个解决方案。
  • **计划:**计划阶段是关于如何实施的计划,通常会包含人员、任务、任务持续时间、任务的依赖关系,以及完成项目所需要的预算。
  • **设计:**设计阶段就是要针对产品需求,将解决方案进一步细化,设计整体架构和划分功能模块,作为分工合作和开发实施的一个依据和参考。
  • **开发:**开发阶段就是根据设计方案,将解决方案构建实施。开发阶段通常是一个迭代的过程,这个阶段通常会有构建、测试、调试和重新设计的迭代。
  • **发布:**将最终结果包括文档发布。

站在整体而非局部去看问题

工程方法去处理事情,有两点好处:

1.有一个被有效论证过的方法论指导你,可以帮助你提高成功概率,也可以提高效率。
2.当你用工程方法去思考的时候,你会更多的站在整体而非局部去思考,更有大局观。

以下这些工作场景,估计你不会陌生。

1.产品经理提出一些天马行空、不切实际的需求,而技术上不可行或者实现成本很高,导致最后返工,造成资源浪费和进度延迟;
2.架构师为了满足开发上的成就感,更愿意自己“造轮子”,而不愿意采用现有开源程序或者购买合适的组件;
3.开发工程师喜欢在代码中使用各种设计模式或者最新技术,导致项目进度延迟,代码难以维护;
4.测试工程师不愿意学习自动化测试技术,导致测试周期较长,且容易出现疏漏;
5.除非产品经理特别注明,开发工程师和测试工程师不会注意用户体验上的细节。

这样的场景问题还有很多,为什么会出现这种情况呢?事实上,这在很大程度上都归因于大家只是站在自己岗位的角度来看问题,没有站在项目的整体角度来看。

1.为了项目整体的效率和避免返工浪费,产品经理会及早和开发人员确认技术可行性,并对产品设计先行验证;
2.为了节约项目开发成本,提高开发效率,架构师选择成熟的架构,合理购买商业组件和使用开源程序;
3.为了提升开发效率,不影响项目开发进度,开发工程师尽可能采用成熟的技术,高效简洁地落实项目;
4.为了项目质量和效率,测试工程师学习自动化测试技术,将大部分测试变成自动化运行,极大地提高了测试效率和质量;
5.为了让用户有好的体验,不仅产品经理,每个人都会仔细体验用户界面,对于不合理的地方提出改进意见。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值