《软件工程》学习笔记(一)

开始时说的话

  大学已经过去两年了,回顾过往所学知识,脑海里一点框架都没有,这才意识到写博客是一个非常好的习惯,不论是对于知识框架的构建还是往后的复习都有很大帮助。正好这学期老师要求做笔记,就以此为主题坚持下去吧!
  这学期以学习清华大学国家精品课程《软件工程》网课为主,学堂在线课程网址:https://www.xuetangx.com/learn/THU08091000367/THU08091000367/12424539/video/23277366?channel=i.area.recent_search

1.1软件工程无处不在

· 软件是软件工程的研究对象,也是软件工程的产品形态与客观存在。
· 工程是将理论和知识应用于实践的科学,其目的是经济有效地解决实际问题。
解决问题:
1、软件具有哪些本质的特性?
2、软件开发面临哪些主要的问题?
3、如何理解软件工程的基本概念和内涵?
4、软件开发应该遵循哪些工程化原则?
5、业界人士如何看待软件工程?

1.2软件的本质特征

1.2.1软件的定义

   软件 = 程序 + 数据 + 文档
· 程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
· 数据:使得程序能够适当地操作信息的数据结构。
· 文档:描述程序的研制过程、方法和使用的图文资料。

1.2.2软件的本质特征

  软件具有复杂性、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因

复杂性: 软件可以说是人类创造的最复杂的物体。

一致性:
· 软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)
· 软件必须遵从人为的惯例并适应已有的技术和系统
· 软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果

可变性:
· 软件只要使用就会一直在变,而这个改变是随需而变
  理想状态下,随着软件的使用其故障率会逐渐降低(逐渐达到一个稳定的质量)以至于人们总是认为软件是容易修改的,从而忽视了修改所带来的副作用,实则,对软件的每一次修改都会造成故障率的升高并可能对软件的结构带来破坏,不断的修改最终导致软件的退化,从而结束其生命周期。
  尽管如此,成功的软件都是会发生演化的,没有任何变化的软件一定是没有用的。虽然软件的可变性给软件的开发带来了很多难题,但也同时给软件本身带来了生命力。

不可见性:

  · 软件是一种 “看不见、摸不着” 的逻辑实体,不具有空间的形体特征
  · 开发人员可以直接看到程序代码,但是源代码并不是软件本身
  · 软件是以机器代码的形式运行,但是开发人员无法看到源代码是如何执行的

1.3软件工程的产生与发展

  根据美国Standish集团的调查报告显示,软件项目的平均成功率大概在30%左右(这里的成功指的是在计划的实践和预算内实现了项目的目标),大概有一半的项目超出预算和最后期限或者存在特性缺陷另外有20%左右的项目彻底失败了。

1.3.1软件开发面临的挑战

在这里插入图片描述
  软件工程一致致力于探索软件开发问题的解决之道。正是因为软件开发的过程中会遇到很多的困难,因此软件工程应运而生。

1.3.2软件工程的发展

   1968年,北大西洋公约组织(NATO)召开国际会议, 提出“软件工程”概念和术语。
在这里插入图片描述

1.4软件工程的基本概念

工程的含义

  工程是将理论和知识应用于实践的科学,以便经济有效地解决问题。
  工程活动一般都具有一下特征:
          · 大规模的设计与建造
          · 复杂问题与目标分解
          · 团队协作与过程控制
软件工程的含义

  软件工程是(1)将系统性的、规范化的。可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;(2)对(1)中所述方法的研究
· 软件工程的目标——创造 “足够好” 的软件

软件开发过程
在这里插入图片描述
软件工程方法
在这里插入图片描述
软件工程工具
在这里插入图片描述
软件开发的基本策略

软件复用: 构造一个新的系统不必从零做起,直接复用已有的构件进行组装构件是经过反复使用验证的,由其组成的新系统具有较高的质量。
  软件复用不仅仅是代码复用,包括库函数、类库、模板(文档、网页等)、设计模式、组件、框架等的复用。

分而治之: 将一个复杂的问题分解成若干个简单的问题,然后逐个解决来源于人们生活与工作的经验,完全适合于技术领域。

逐步演进: 软件开发是自底向上逐步有序的生长过程。软件开发应该遵循软件的客观规律,不断进行迭代式增量开发,最终交付符合客户价值的产品。

优化折中: 优化软件的各个质量特性,如运行速度、资源利用、用户体验,通过协调各个质量特性,实现整体质量的最优。

1.6业界人士谈软件工程

业界人士看待软件工程

  软件工程的内容不仅仅是一个课程,而更重要的是实践的过程和推动软件项目往前走的一个必要的工具。软件开发不仅仅是一个学科,更重要的是几十年来软件开发的经验的总结,这种经验对我们来说极其宝贵,这使得我们可以让很大的软件设计的团队耦合在一起,制作出大家日常生活中各种各样的软件。

  软件工程的开发不是一个人的工作,是很多人把自己的智慧和代码集合在一起,软件工程让很多人把自己的使用习惯都归结成一些规则,让每个人写出来的代码都是同样的思维,同样的思路,看起来像一个人写出来的代码,这就是设计模式。

业界人士认为程序员最重要的四个素质

1、拥有极强的代码的阅读和理解的能力,以及书写代码的能力

2、有极强的责任心和责任感,对整个软件产业的敬畏之心(对前人和用户的体验的敬畏,自我反省,自我提升)

3、有职业道德,对代码的品质的保证和对整个公司秘密的保护

4、需要有和其他程序员协同的能力(包括人与人之间的相处,人与人之间如何交换自己的代码,开发的心得,开发的经验等)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值