Software Engineering
大约 13 分钟
Software Engineering
- 一门工程学科,关注软件生产的所有方面,从系统规范的早期阶段到系统投入使用后的维护。
- Engineering discipline: 使用适当的理论和方法来解决问题,同时考虑到组织和财政的限制。
- 软件生产的所有方面:软件生产的所有方面
专业软件开发与个人编程
Intended Outcomes
- 了解什么是软件工程,为什么它很重要。
- 了解不同类型的软件系统的开发可能需要不同的软件工程技术。
- 了解软件工程各个方面的含义;
- 了解对软件工程师很重要的道德和职业问题。
Software Costs
从长远来看,将 SE 方法和技术用于软件系统通常更便宜,而不是像编写个人编程项目一样编写程序。。
- 软件成本往往主导着计算机系统成本。
- 软件的维护成本比开发成本更高。
软件项目失败的原因
- 不断增加的系统复杂性
- 未能使用软件工程方法
SE Diversity
- 有许多不同类型的软件系统,没有一套适用于所有这些系统的通用技术。
- 应用类型:独立应用;基于交互式事务的应用程序;嵌入式控制系统;批处理系统;娱乐系统;建模和仿真系统;数据收集系统;系统的系统。
- 软件产品类型:通用与定制
- 异质性;商业和社会变革;安全和信任;规模。
使用的软件工程方法和工具取决于正在开发的应用程序的类型、客户的要求和开发团队的背景。
SE Fundamentals
一些基本原则适用于所有类型的软件系统,无论使用何种开发技术。
- 软件系统的开发应该使用一个有管理的和被理解的开发过程。当然,不同类型的软件要使用不同的流程。
- 可靠性和性能对所有类型的软件系统都很重要。
- 理解和管理软件规格「software specification」和要求「requirements」(软件应该做什么)是很重要的。
- 在适当的时候,你应该重新使用已经开发的软件,而不是编写新的软件。
好软件的基本属性
- Acceptability:软件必须能为设计它的那类用户所接受。这意味着它必须是可理解的,可用的,并与他们使用的其他系统兼容。
- Dependability:软件的可依赖性包括一系列的特性,包括可靠性、安全性。可信赖的软件在系统发生故障时不应该造成物理或经济损失。软件必须是安全的,这样恶意的用户就不能访问或破坏系统。
- Efficiency:软件不应浪费系统资源,如内存和处理器周期。因此,效率包括响应性、处理时间、资源利用率等。
- Maintainability:软件的编写方式应使其能够不断发展以满足客户不断变化的需求。这是一个关键的属性,因为软件变化是不断变化的商业环境的必然要求。
FAQ
- What is software? 计算机程序和相关文件。
- What are the attributes of good software? 好的软件应该向用户提供所需的功能和性能,并且应该是可维护的、可靠的和可用的。「好的软件应该向用户提供所需的功能和性能,并且应该是可维护的、可靠的和可用的。」
- What are the fundamental software engineering activities? Software specification,software development,software validation and software evolution.「软件规范、软件开发、软件验证和软件进化。」
- What is the difference between software engineering and computer science? 计算机科学侧重于理论和基础知识;软件工程则关注开发和交付有用软件的实际情况。
- 软件工程和系统工程之间有什么区别?系统工程涉及基于计算机的系统开发的所有方面,包括硬件、软件和流程工程。 软件工程是这一更广泛过程的一部分。
- 软件工程面临的主要挑战是什么?应对日益增长的多样性、缩短交付时间的要求以及开发值得信赖的软件。
- 软件工程的成本是多少?大约60%的软件成本是开发成本,40%是测试成本。对于定制软件,进化成本往往超过开发成本。
- 什么是最好的软件工程技术和方法?虽然所有的软件项目都必须进行专业的管理和开发,但不同的技术适合于不同类型的系统。
SE Ethics
- 软件工程涉及更广泛的责任,而不仅仅是技术技能的应用。
- 软件工程师必须以诚实和有道德责任感的方式行事,才能作为专业人士受到尊重。
- 道德行为不仅仅是简单地维护法律,还包括遵循一套道德上正确的原则。
Responsibility:
- Confidentiality
- Competence「能力」
- Intellectual property rights「知识产权」
- Computer misuse