软件失败源于两个方面的原因:
- 不断增长的需求
由于新的软件工程技术可以帮助我们构建更大更复杂的系统,用户的需要因而在发生改变。系统必须更快速地构建并交付;需要更大更复杂的系统;系统必须具备在以前看来不可能实现的功能。现有的软件工程方法已经不能应对新形势,而新的软件工程技术还有待于进一步发展。
- 期望值太低
不采用软件工的方法和技术去编写计算机序相对来讲要容易一些。许多公司因为他们的产品和服务在逐步发展而在软件开发中随波逐流。他们通常不使用软件工程方法。结果导致他们的软件比预计的费用高且不可靠。因此我们需要更好的软件工程教育和实践来解决此类问题。
专业化软件开发
软件工程的目的是支持专业化的软件开发,而不是个体编程。包括支持程序描述、设计和进化的相关技术,而这些都不是个体软件开发所需要的。
常见问题:
好软件的重要属性
软件工程
软件工程是一门工程学科,涉及软件生产的各个方面,从最初的系统描述一直到投入使用后的系统维护,都属于选课范畴。 关键词: 工程学科 干什么事情都离不开工程人员,他们既拥有一定的理论、方法和工具,又能有选择地利用它们,即使在没有可用的理论和方法的情况下,也能够力求找出解决问题的方法。同时他们也认识到必须在机构或财政情况所允许的限度内工作,即在此限度内寻找解决办法。 软件生产的各个方面 软件工程不仅仅涉及软件开发的技术过程,还有软件项目管理及支持软件生产的工具、方法、理论的开发等活动。 工程都是要求在时间表和预算范围内获得所要求的品质的成果。 软件工程人员在其工作中运用的是系统的、有组织的方法,因为这种方法对于制作高质量的软件通常是最有效的。工程就是为各种情况选择最恰当的解决办法。 软件工程重要的两方面原因:
- 个人和社会越来越多地依赖于先进的软件系统。这需要我们能够既经济又快速地生产出可依赖和值得信赖的系统
- 从长远来看,运用软件过程方法和技术去开发软件系统比单纯为个人程序项目写程序更加便宜。对于大多数类型的系统来说,绝大多树的钱都花费在软件投入使用后对软件的变更上。
软件工程中系统化的方法也叫软件过程。软件过程是指制作软件产品的一组活动及其结果。这些活动主要由软件工程人员完成。 软件过程包含4项基本的活动:
- 软件描述 客户和工程师定义所要生产的软件以及对其操作的一些约束
- 软件开发 软件得以设计和编程实现
- 软件有效性验证 软件经过检查以保证它就是客户所需要的
- 软件进化 软件随不同的客户和编号的市场需求而进行修改
软件工程人员的职业道德
- 保密 工程人员必须严格保守雇主或客户的机密,而不管是否签署了保密协议
- 工作能力 工程人员应该实事求是地表述自己的工作能力,不应有意接受超出自己能力的工作
- 知识产权 工程人员应当知晓有关专利、著作权等知识产权的地方法律,必须谨慎行事,确保雇主和客户的知识产权受到保护
- 计算机滥用 软件工程人员不应运用直接的技能滥用他人的计算机
参考资料:《软件工程》Ian Sommerville