软件的概念:
程序:计算机为完成特定任务而执行的指令的有序集合
数据:被程序处理的信息
文档:记录的数据和数据媒体
软件与硬件的区别:
1.软件是逻辑产品,硬件时物理产品
2.软件产品的质量的体现方式,软件产品只能定制
3.成本构成不同,软件生产主要靠脑力劳动,人力资源占了相当大的比重;硬件产品成本构成中有形的物质占比较重
4.失败曲线不同。硬件会因为主要部件磨损而被淘汰;软件不存在折旧和磨损问题。排查故障的难度更复杂
5.硬件产品一旦涉及定型生产技术和加工工艺和管理流程就确定了;软件需要定制
软件开发的问题和难点:
软件复杂度高、需求变化大、质量难以控制、开发周期短……
软件开发具有独特性、挑战性和面临各种风险的特性
软件危机:
软件的生产能力和业务发展需求不相适应的现象;
弱的软件生产能力和强的业务发展需求之间的矛盾。
软件危机的表现:
开发过程随心所欲;时间计划和费用估算缺乏现实的基础;管理者主要在应付突发事件;
对产品质量缺乏客观基础、软件开发的成败建立的个人能力基础上
软件开发约束:为了应对软件危机,软件工程化(提高软件质量、提高生产率、降低开发成本)
项目的特点:时限、目标确定(目标允许有一个变动幅度,可以适当修改)、
唯一(不会重复)、资源和任务的相互依赖
项目的临时性:项目是为了创造一个唯一的产品或者提供一个唯一的服务而进行的临时性努力
项目的临时性并不意味着所提交的产品或者服务也是一次性的;
项目所面临的市场机遇往往也是临时性的;
项目组往往也是临时性的。
总结:目标性、相关性、周期性、独特性、约束性、不确定性、临时性、结果不可逆转
软件项目额外的特点:
软件是逻辑实体,具有抽象性;
软件开发受计算机系统约束,对硬件系统有不同程度的依赖;
需求允许变更,质量难以把握;
软件具有复杂性的特点,开发成本昂贵,制约因素很多
如何突破软件危机:重视软件过程和软件过程改进
把软件活动视为可控的、可度量的、可改进的过程
软件改进原则:
过程改进自上而下;
相关的每个人都参与
有效的变更需有对过程目标的深入了解
变更需持续进行;
必要的投入