读书笔记:软件工程(1) - 软件工程概述(1)
软件危机介绍
软件危机现象表现为在构建与运营计算机软件的过程中所面临的系列复杂挑战
软件危机主要有以下一些典型表现:
- 估算软件开发成本及进度的过程通常存在较大偏差。
- 在实际应用中,用户对已经完成的软件系统提出不满的情况较为常见。
- 大多数情况下,软件产品的质量难以让人完全信赖。
- 其多数情况下无法维持其正常运行状态(即不可维护)。
- 项目中通常缺乏完整的技术文档支持(即适当文档资料)。
- 随着技术的发展,在计算机系统的总成本中占比不断增加(即持续攀升)。
- 项目团队在提升效率方面的能力与硬件发展速度相比尚有差距,并未能跟上快速普及的应用带来的需求增长(即与其硬件发展速度相比...也不远超过了...)
软件工程的7条基本原理:
1.用分阶段的生命周期计划严格管理。
在软件的全生命周期中必须制定和严格执行六类计划这些是:项目概要计划里程碑计划项目控制计划产品控制计划验证计划和运行维护计划
2.坚持进行阶段评审。
软件的质量保证工作不能等到编码阶段结束之后再进行。
3.实行严格的产品控制。
当需求发生变更时,在确保系统各组成部分协调一致性的前提下,则必须实施严格的系统控制措施。其中主要做法是实施基准配置管理。即所谓的基准配置或基线配置即是经过各阶段评审确认的系统构成部分(包括各阶段产生的文档文件和程序代码)。其也被定义为变更控制措施:所有关于修改系统的建议——尤其是涉及基准配置更改的建议——都需按照严格的流程进行审查,并获得批准后方可实施改动。不得随意更改任何既定的系统架构或功能模块。
4.采用现代程序设计技术
5.结果应能清楚地审查
与实体物质产品相比,软件作为一种无形且无法触摸的概念性产物,在其生命周期中展现出显著的独特性。由于软件开发团队(或项目小组)的工作进度不易观察这一特性使得其质量评估体系相对复杂化,在传统工业生产模式下难以量化评估进而增加了项目管理难度。为此建议应当基于项目总体目标和完成时间框架内制定明确的责任分工并设定质量标准以确保结果可清晰检验
6.开发小组的人员应该少而精
7.承认不断改进软件工程实践的必要性
软件工程包含的领域:
1.软件需求
软件需求体现了为解决实际问题施加于软件产品上的要求与限制。 软件需求的主要类型包括:产品与过程、功能性与非功能性以及突出的属性。 涉及从系统中提取、分析以及制定规格并进行验证的过程。
2.软件设计
软件设计的目标应包含对软件结构(即如何将程序分解为模块并组织起来)及其各模块之间的接口的详细说明。
软件设计师在软件工程领域扮演着关键角色:他们致力于为解决特定问题而创建各类系统架构并制定详细计划。通过深入研究与综合评估这些架构方案(blueprints),我们能够判断它们是否能满足一系列不同的需求;同时,在审查候选方案时也需进行比较分析并做出权衡取舍。最终,
我们可以利用经过验证的设计成果来规划后续的研发工作,
并将其用作构建系统及测试的基础框架。
软件设计由两个处于软件需求和软件构建之间的活动组成。
软件架构设计(有时称为顶层设计):阐述软件系统中各主要模块之间的关系及其整体布局,并明确标识各个功能模块及其职责范围。
◇ 软件详细设计:详细地描述各个组件,使之能被构建。
3.软件构建
软件构建是指生产软件的具体流程,在构建过程中涉及的主要环节包括代码编写、质量检测、单元测试等关键步骤。
4.软件测试
5.软件维护
6.软件配置管理
软件配置管理(SCM)是一种对软件变更进行监控和管理的作业。
7.软件工程管理
软件工程管理被识别为软件开发与维护这一项系统性的任务。其目标在于实现系统的运行,并严格遵守既定规程,在此基础上通过可量化的指标来评估质量。该过程包含规划阶段(计划)、组织协调(协调)、定量评估(度量)、实时监控(监控)、过程控制(控制)以及结果报告(报表)。
8.软件工程过程
9.软件工程工具和方法
10.软件质量
软件分类

阅读来源:
- 软件工程-实践者的研究方法





