最近在工作中需要开展软件的编程的管理,因为本身,不是学编程的,工作也不需要我具体开展,但是负责的产品中有软件部分,所以作为了解学习一下软件工程。
是什么,为什么,怎么做,好不好!
学习前两章,对软件工程是什么,解决什么问题,有哪些开发的模型、模式,各有什么特点等 有了简单的初步的了解。
1 是什么?
1.1 软件工程定义
软件工程是一门指导计算机软件开发和维护的工程学科。
软件工程的定义有很多,在不同时期不同组织内定义都不太一样,但基本思想都是一样即应用工程方法来进行软件产品的开发。
那软件产品的特点是什么,为什么要专门有一个学科研究其开发过程的工程方法呢?
在了解如何做软件开发之前,要了解一下对象,什么是软件。
1.2 软件的定义
书中定义:
软件 = 程序 + 数据 +文档;
软件由三要素组成,大多对程序和数据的概念不太陌生;而文档仿佛只有在按F1时才看到,其实软件文档更多是说开发过程的各类文档。“文档是与程序开发、维护和使用有关的图文资料。”
软件是整个计算机系统中的一个逻辑部件,而硬件是一个物理部件。
2. 为什么
2.1 软件特点
软件与其他产品有7个特点:
- 形态特性
软件没有实体形态,以逻辑形态存在。看不见,摸不着,可以在存储器中存在,但无法看到其本身。因为它的抽象性,无法看到其实体,所以只能通过观察、分析、思考和判断去了解它的功能、性能及其他的特性。 - 生产特性
基本没有加工成本,只用简单复制;其生产成本主要是设计和开发的成本。 -
维护特性
因为没有实体,所以不存在像零件一样磨损、老化;但会退化,而且在维护、更改过程中易出现bug。
be432c61-750a-45d8-8af2-69fbe7948162-596997.jpg
- 复杂特性
软件自身结构相对比较复杂,而且一般反映的实际问题也会相对复杂。 - 智能特性
- 质量特性
- 产品需求不确切性和易变更性
软件需求一般在客户层面不易描述清楚,而且会随着开发的进展情况不断提出变更要求。 - 测试技术的局限性
无法像其他类产品一样,可以使用计量检定过的量具对其特性进行验证,只能使用测试的方法来验证;而测试技术会有一定的局限性。
- 产品需求不确切性和易变更性
- 环境特性
依赖于硬件环境存在。
2.2 软件开发难点
基于软件不同于其他产品的特性,造成软件开发过程会有很多的坑。开发时因需求描述不会很准确全面,所以开发进度难以预计、产品功能难以满足需求;而因其无实体,验证存在局限性,所以质量无法保证;从而造成 开发成本难以控制;再加上程序员主要关注过程是代码过程,会缺少适当的文档资料,造成产品难以维护。
2.3 软件工程解决软件开发难点
为解决软件开发的进度、质量、成本等控制的困难,减少开发的风险。所以软件工程学科应运而生。其主要思想是从其他工程项目借鉴成功的经验,总结出适于软件生产概念、原则、方法、技术和工具。明确提出了软件生命周期的模型,发展了许多软件开发与维护阶段适用的技术和方法。以软件生命周期模型为主干,在辅以进行软件开发和管理的工具,形成支持软件生命周期各阶段使用的软件工具系统,从管理和技术两方面解决软件危机问题。
网友评论