【笔记】软件与软件工程浅谈
一、软件的本质
1.软件的本质
-
软件定义:
- 指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;
- 数据结构,使得程序可以合理利用信息;
- 软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。
从理论上说,软件的失效率曲线应该呈现为如下所示的“理想曲线”。未知的缺陷将在程序生命周期的造成的高失效率,然而随着错误的纠正,曲线将如图中所示趋于平缓。软件不会磨损,但是软件退化的确存在。在完整的生命周期里,软件将会面临变更,每次变更都可能引入新的错误,使得失效率像“实际曲线”那样陡然上升。可以说,不断的变更是软件退化的根本原因。
2.软件的应用领域
计算机软件可分为七个大类:系统软件——整套服务于其他程序的程序。
应用软件——解决特定业务需要的独立应用程序。
工程/科学软件——“数值计算”类程序涵盖了防范的应用领域。
嵌入式软件——嵌入式软件存在与某个产品或者系统中,可实现和控制面向最终用户和系统本身的特性和功能。
产品线软件——为多个不同用户的使用提供特定功能。
人工智能软件——利用非数值算法解决计算和直接分析无法解决的复杂问题。
3.软件的变更本质
四大类软件不断演化,在行业中占有主导地位。- WebApp
- 移动App
- 云计算
- 产品线软件
二、软件工程
软件工程的必要性:
1. 在确定软件方案之前,需要共同努力来理解问题
2. 设计已经成为关键活动
3. 软件应该具有高质量
4. 软件需要具备可维护性
1.软件工程学科的定义
软件工程:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)对(1)中所述方法的研究。
软件工程是一种层次化的技术,支持软件工程的根基在于质量关注点。
软件工程的基础是过程层。软件过程将各个技术层次结合在一起,使得合理、及时地开发计算机软件成为可能。
软件工程方法为构建软件提供技术上的解决方法(如何做)。包括沟通、需求分析、涉及建模、程序构造、测试和技术支持。
软件工程工具为过程和方法提供自动化或半自动化的支持。
2.软件过程
软件过程是工作产品构建时所执行的一些列活动、 动作和任务的集合。活动主要实现宽泛的目标。动作包含了主要工作产品生产过程中的一系列任务。任务关注小而明确的目标,能够产生实际产品。
过程框架
过程框架定义了若干个框架活动,为实现完整的软件工程过程建立了基础。一个通用的软件工程过程框架通常包含以下5个活动:
- 沟通
- 策划
- 建模
- 构建
- 部署
普适性活动
软件工程过程框架活动由很多普适性活动来补充实现。通常,这些普适性活动贯穿软件项目始终,以帮助软件团队管理和控制项目进度、质量、变更和风险。典型的普适性活动包括如下活动:
- 软件项目跟踪和控制
- 风险管理
- 软件质量保证
- 技术评审
- 测量
- 软件配置管理
- 可复用管理
- 工作产品的准备和生产
过程的适应性调整
软件工程过程不是教条的法则,也不要求软件团队机械地去执行;而应该是灵活可适应的(根据软件所需解决的问题、项目特点、开发团队和组织文化等进行适应性的调整)。
3.软件工程实践
通用的框架活动——沟通、策划、建模、构建和部署——和普适性活动构成了软件工程工作的体系结构的轮廓。
实践的精髓
软件工程实践的精髓:
1.理解问题(沟通和分析)。
2.策划解决方案(建模和软件设计)。
3.实施计划(代码生成)。
4.检查结果的正确性(测试和质量保证)。
通用原则
第1原则:存在价值
第2原则:保持简洁
第3原则:保持愿景
第4原则:关注使用者
第5原则:面向未来
第6原则:提前计划复用
第7原则:认真思考