第一章:软件工程概述

雪梨作业 55 + 平时 15 + 期末 30 =100
期末作业是小组单位,放在GitHub中。
本课程别名:软件过程



在这里插入图片描述

# 一、软件工程学科 概览

软件工程学价值:促进软件项目的成功

# 软件概念

软件是计算机系统中与硬件相互依存的另一部分。
	包括程序、数据及其相关文档的完整集合。
	
	(1)能够完成预定功能和性能的可执行指令(program)
	(2)使得程序能够适当地操作信息的数据结构(data)
	(3)描述程序的操作和使用的文档(document)

# 软件特点

  • 软件是一种 逻辑实体,而不是具体的物理实体。
  • 软件的生产与硬件不同。(更多的依靠大脑)
  • 存在 退化问题,开发人员必须维护软件。
  • 大多数软件是自定的,而不是构件组装。
  • 本身复杂 又 成本昂贵 。

# 软件危机

定义:软件在开发和维护过程中遇到的一系列严重问题,包含两层含义:

如何开发软件 与 如何维护软件

# 危机的表现
  1. 软件 开发的进度难以控制 ,经费超预算、完成期限拖延……
  2. 软件 需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。
  3. 软件文档资料不完整、不合格。由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下。
  4. 软件的 可维护性差,程序错误难以改正,程序不能适应硬件环境的改变。
  5. 软件 价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。
# 危机的原因
  1. 客户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,在软件开发过程中,用户提出修改软件功能、界面、支撑环境等方面的要求。
  2. 软件开发人员对用户需求的理解与用户的本来愿望有差异。不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误
  3. 管理人员、软件开发人员等各类人员的信息交流不及时、不准确、有时还会产生误解。
  4. 缺乏有力的方法和工具方面的支持,过分地依靠程序人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。

# 解决危机

软件工程学(软件工程)的存在价值:促进软件项目成功

# 软件工程定义

是研究和应用如何以 系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。

历史与发展趋势
1940s,第一台数字计算机诞生、软件、硬件概念诞生;
•1968年,“软件工程”这个术语第一次使用,作为一个会议标题,该项目由北约(NATO)赞助;该会议确认了要用定义最佳实践的方式帮助改善软件开发;
•1972年,大卫·帕纳斯提出模块化和隐藏信息的关键概念,以帮助程序员应付日益增加软件系统的复杂性;
•1981年,软件工程经济学诞生,Barry W. Boehm在他的书中提出了成本模型COCOMO;
•2000年以后,随着软件需求更多的出现在更小的组织,业界呼唤更廉价的软件解决方案,这导致了更多轻量的软件方法纷纷诞生,Agile就产生于这个背景下;
•2012年,纪律敏捷交付框架(Disciplined Agile Delivery Framework)发布,这是一个混合框架,采用和扩展了Unified Process、 Scrum、 XP和其他软件过程;
研究的目标

• 软件开发成本较低;
• 软件功能能够满足用户的需求;
• 软件性能较好;
• 软件可靠性高;
• 软件易于使用、维护和移植;
• 能按时完成开发任务,并及时交付使用。

低成本,高需求,高性能,易用性,可靠(想的倒是挺美)

采用先进的软件工程方法,使质量、成本和生产率三者之间的关系达到最优的平衡状态。

软件生存周期:

指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。

立项考虑 到 停服放弃

# 软件生存周期的各个阶段主要任务(重点)

1.计划阶段

确定待开发系统的总体目标和范围
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。

2.分析阶段(重点)

分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。

3.设计阶段(总体设计和详细设计)(重点)

设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。

4.实现阶段(编码)

实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。

5.测试阶段

设计测试用例,对软件进行测试,发现错误,进行改正。

6.运行和维护阶段

应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确地实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。

在这里插入图片描述

二、IT行业人才格局及成长路线

在这里插入图片描述

2

在这里插入图片描述
在这里插入图片描述

三、软件过程—软件工程的核心组成部分

软件工程三要素(重点)(必背)

在这里插入图片描述
考试重点

采取某些方法去实施过程。
UML:统一建模语言
目的:提高软件的成功率
依照某些规律,采用某些方法

四个软件过程(后两个重点)

瀑布模型 WaterFall Model

在这里插入图片描述

  1. 首先联系客户,确定客户需求与目标
  2. 研究要求的可能性,可不可以做,合法,经济支持,功能难度
  3. 写需求文档
  4. 概要设计与详细设计
  5. 编码,测试,运行与维护
RUP 统一软件过程(了解)

在这里插入图片描述

了解为主
大体上分四个阶段,是现在比较成熟的方式。
数值看的是图形的面积
RUP四视图,从不同的角度去看项目
最庞大,最规范,最标准,但是成本过高,适合学习,不适合运用。

扩展ICONIX过程(重点)

在这里插入图片描述
流程

  1. 愿景:获取“老大”的期望
  2. 业务建模:可以带来很大的业务的提升,发现什么过程可以改进,深受中层领导的喜爱。
  3. 需求分析:
  4. 健壮性分析:从需求到设计的过度。
  5. 关键设计:
  6. 最终设计:
  7. 实现:写代码
Scrum敏捷过程(重点)

PO产品负责人/产品经理
在这里插入图片描述
迭代会很累
迭代周期建议两周

增量迭代:👇↓
在这里插入图片描述

UML 统一建模语言

用图形来描述业务
设计与来发人员可以拿着这个去交流。
在这里插入图片描述
在这里插入图片描述

四、本课程的要点说明

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值