《软件工程》第一章——初始软件工程
1.1 软件无处不在
软件是软件工程的研究对象,也是软件工程的产品形态于客观存在。
工程是理论知识应用于实践的科学,其目的是经济有效地解决实际问题。
→软件工程是为了解决开发成本效益和软件质量的问题而产生的,倡导以工程的原理、原则和方法进行软件的开发,用系统的、可控的和有效的方式构建高质量的软件产品。
1.2 软件的本质特性
1.2.1 软件的定义
软件 = 程序 + 数据 + 文档
程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。
数据:使得程序能够适当地操作信息的数据结构。
文档:描述程序的研制过程、方法和使用的图文资料。
1.2.2 软件的本质特性
软件更像是嵌入式的数字化知识,这种知识载体的特征带来一些怎样的影响呢?
软件具有复杂性、一致性、可变性和不可见性等固有的内在特征(软件开发困难的根本原因)
- 复杂性
这种复杂性会给软件开发管理和质量保证带来很多困难。
一致性
1.软件不能独立存在,需要依附于一定的环境(如硬件、网络以及其他软件)
2.软件必须遵从人为的惯例并适应已有的技术和系统。
3.软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果。
- 可变性
软件只要是在使用,就会一直在变,而这个改变是随需而变。
虽然由于修改软件会造成失效率的提高,但是,修改会给软件本身带来了生命力。成功的软件都是会发生演化的。
不可见性
1.软件是一种“看不见、摸不着”的逻辑实体,不具有空间的形体特征。
2.开发人员可以直接看到程序代码,但是源代码并不是软件本身。
3.软件是以机器代码的形式运行,但是开发人员无法看到源代码是任何人运行。
1.3 软件工程的产生与发展(软件开发面临的问题)
错误多、性能低、不可靠、不安全等质量问题
1.3.1软件开发失败的案例
1.ARIANE 5 火箭
2.Window Vista 系统
12306网络购票系统
1.3.2 软件开发面临的挑战
客户不满意
1.交付的许多功能不是客户需要的
2.交付的日期没有保障3.
3.客户使用时发现许多Bug项目过程失控
1.客户需求变化频繁,无力应对
2.无法预见软件的交付质量
3.对流程盲目遵从,忽视客户业务价值风险与成本问题
1.开发团队专注技术,忽视风险
2.无能力预测成本,导致预算超支无力管理团队
1.无法评估开发人员能力及工作进度
2.困扰于如何提升团队的能力与效率
1.4 软件工程的基本概念和内涵
1.4.1工程的含义
工程是将理论和知识应用于实践的科学,以便经济有效地解决问题。
1.4.2 软件工程的含义及目标
软件工程是
- 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;
- 对1.中所述的方法的研究
软件工程的目标——创造“足够好”的软件。
1.较低的开发成本
2.按时完成开发任务并及时交付
3.实现客户要求的功能
4.具有良好性能、可靠性、可扩展性、可移植性等
5.软件维护费用低
1.4.3 软件工程的基本要素
过程:
支持软件开发各个环节的控制和管理
方法:
完成软件开发任务的技术手段
工具:
1.4.4 软件开发的基本策略
- 软件复用(不只是代码复用)
构造一个新的系统不必从零做起,直接复用已有的构件进行组装
构件是经过反复使用验证的,由其组成的新系统具有较高的质量 - 分而治之
将一个复杂的问题分解成若干个简单的问题,如何逐个解决
来源于人们生活与工作的经验,完全适合于技术领域 - 逐步演进
软件开发是自底向上逐步有序的生长过程
小步快跑:每走完一步再调整并为下一步确定方向,直到终点 - 优化折中
优化:优化软件的各个质量特性,如运行速度、资源利用、用户体验
折中:通过协调各个质量特性,实现整体质量的最优
1.4.5软件工程学科发展
1.5 软件质量实现(工程化的原则)
暂无
1.6 业界人士谈软件工程
1.6.1 软件工程在企业中的实际应用
1.6.2 优秀工程师应该具备的素质和能力
- 代码阅读和理解以及书写代码的能力
- 一个极强的责任心和对整个软件产业的敬畏之心
- 职业的道德
- 协同的能力
测试题
《软件工程》第一章——初始软件工程相关推荐
- 软件工程第一章绪论————(2019.12.27学习笔记)
第一章绪论 第一节软件工程概念的提出与发展 1. 软件危机 1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机(Software crisis)一词.用来描述因为软件生产率, ...
- 软件工程 | 第一章:软件工程学概述
软件工程学概述 一.前言 二.软件危机 1.典型表现 2.产生原因 3.消除危机途径 三.软件工程 1.概述 2.软件本质特征 3.软件工程基本原理 4.软件工程方法学 1️⃣传统方法学 2️⃣面向对 ...
- 软件工程-第一章(郑逢斌版)
第一章-软件功能概述 文档版直接复制上来效果不佳,这里就不再放上来了. 如果看不清的话可以用幕布查看. 文档链接: https://www.mubucm.com/doc/wRXxHizheG 密码: ...
- 零基础玩转C语言系列第一章——初始C语言(上)
目录 一.如何学好C语言? 1.鼓励你,为你叫好. 2.挤时间学习 3.学好编程,不仅仅是学好C语言 二.初始C语言 本章目标 本章重点 1.什么是C语言? 2.第一个C语言程序 3.数据类型 4.变 ...
- y2第一章 初始mybatis的上机3_MyBatis3.2.x从入门到精通之第一章
第一章 一.引言 mybatis是一个持久层框架,是apache下的顶级项目.mybatis托管到goolecode下,再后来托管到github下.(百度百科有解释) 二.概述 mybatis让程序将 ...
- 软件工程 第一章 软件工程概述
1 什么是软件 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合. 程序:按事先设计的功能和性能需求执行的指令序列) 数据:程序能正常操纵信息的数据结构->软 ...
- 软件工程-第一章 介绍
目标 本章目的主要是介绍软件工程和提供理解本书剩余部分的框架.阅读本章时将会: 理解软件工程是什么以及为什么很重要 理解不同类型软件系统的开发可能需要不同的软件工程技术 理解一些对于软件工程师很重要的 ...
- 现代软件工程 第一章 概论 第9题——邓琨
我采访了一只开发了天津8890便民服务网站系统的团队. - 当时的项目有多少用户,给用户多少价值? 现在还有人用吗? 答:当时项目有近万用户,为天津市民提供便民服务平台,例如联系修理家电.水电气.咨询 ...
- 软件工程 | 第一章 软件工程概论
软件工程 系列为本学期(2020春季)软件工程以及软件工程实践课程笔记整理~ 研究生阶段的软件工程课程相对本科比较综合,内容涉及本科曾经学过"软件工程"."软件过程管理& ...
最新文章
- RISC-V 正在成为芯片世界中的 Linux
- datagridview cell字体大小自适应_CELL:肿瘤为何“饿不死”?神经元为饥饿胰腺癌提供营养支持...
- webstorm php文件高亮,webStorm支持.wxml文件高亮显示
- [SPOJ375]QTREE - Query on a tree【树链剖分】
- Flink从入门到精通100篇(六)-Flink 应用之 对Release 文档进行深度解读
- [USACO17JAN]Promotion Counting 题解
- 实例 20 重定向输出流实现程序日志
- typeof的用法 typeof的返回值是一个字符串 返回的字符串类别
- 如何用VS2015手撕白菜
- 字节跳动实习 视频面试
- 最新emlog5.3.1系统YiT模板源码
- IDEA补丁破解使用方法
- C#理论 —— 文件操作、委托和事件
- 在windows下python3使用multiprocessing.Pool时出现的问题
- mk突变点检测_Mann-Kendall突变检测(mk突变检测)
- 中国电信欢go建立话费话费异常预警(国际)
- 声音鉴黄师饱受摧残,AI声音鉴黄师为何没帮上忙?
- MyBatisPlu自动生成代码简介(一)
- 帷幄SDP空间数据平台 - 智慧门店服务商 智慧数字化门店运营案例
- c语言生成1000 9999随机数,产生随机数(rand()函数和srand()函数)