首先介绍一下”软件“
《IEEE》对软件给出了如下定义:
软件是计算机程序、规程以及运算计算机系统可能需要的相关文档和数据。
根据软件服务对象的范围不同,一般可以将软件划分为通用软件和定制软件两种类型。
软件的特性:
1.软件是复杂的;2.软件是不可见的;3.软件是不断变化的;4.大多数软件是定制的,而不是通过已有构建组装成的。
软件危机:
1.软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜;2.软件存在着错误多、性能低、不可靠、不安全等质量问题;3.软件成本在计算机系统的整个成本中所占的比例越来越大;4.软件维护及其困难,而且很难适应不断变化的用户需求和使用环境。
上面已经介绍软件的定义和特点,下面来介绍一下“软件工程“的一些定义:
1968年10月,Fritz Bauer首次提出了“软件工程”的概念:软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则;
《IEEE》给出了一个更全面的定义:软件工程是:①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即将工程化应用到软件上;②对①中所述方法的研究。
软件工程的三要素:过程、方法和工具。三个要素结合起来就是软件的质量。
上面提到了软件质量,那么什么是软件质量?简单的说:软件质量是软件产品与明确的和隐含的需求相一致的程度,他通常由一系列的质量特性来描述。例如:除了要求软件正确运行之外,人们课程还希望软件运行的响应时间符合要求、软件使用方便快捷、程序代码易于理解等。需要强调的是。软件质量并不取决于开发人员的观点,它通常与客户、用户、维护人员等提出的要求密切相关。
下面介绍一些计算机辅助软件工程(CASE):
分析设计工具:Rose、RequisitePro、Together、Enterprise Architect、Argo UML等;
测试工具:Junit、Robot、WinRunner、LoadRunner、TestDirector等;
配置管理工具:VSS、ClearCase、CVS、Firefly等;
项目管理工具:MS Project、RUP、PMOffice、P3E等。
软件工程同其他行业一样,同样面临着挑战。主要挑战有:1. 遗留系统的问题;2. 高可信软件开发的要求;3. 软件开发方式的变化。
一个专业成熟发展的重要标志是具备一套完整的知识体系,我们软件工程也有自己的知识体系——软件工程知识体系(SWEBOK)。
SWEBOK项目的目的是为软件工程学科的边界提供一致确认的特征,为支持该学科的知识体系提供指导,其具体目标如下:
(1) 描述软件工程学科的内容和特征;
(2) 确定软件工程知识体系的各个专题;
(3) 促进软件工程体系在世界范围内的共识;
(4) 明确软件工程与其他相关学科(诸如计算机科学、项目管理、计算机工程、数学等)的关系,并设定软件工程学科的边界;
(5) 为软件工程课程计划的开发和职业资格的认证提供依据。
SWEBOK的组成:
1. 软件需求;2. 软件设计;3. 软件构造;4. 软件测试;5. 软件维护;6. 软件配置管理;7. 软件工程管理;8. 软件工程过程;9. 软件工程工具与方法;10. 软件质量。
俗话说”国有国法,行有行规“,我们软件工程的行规就是软件工程职业道德规范:
IEEE/ACM职业道德准则:
公众:软件工程人员应始终与公众利益保持一致;
客户和雇主:在与公众利益保持一致的原则下,软件工程人员应满足客户和雇主的最大利益;
产品:软件工程人员应当确保他们的产品以及改进符合尽可能高的专业标准;
判断:软件工程人员应当具备公正和独立的职业判断力;
管理:软件工程管理者和领导者应拥护和倡导合乎道德的有关软件开发和维护的管理方法;
职业:在与公众利益一致的原则下,软件工程人员应当提高职业的信誉;
同行:软件工程人员对其同行应持平等和支持的态度;
自我:软件工程人员应当终身学习专业知识,促进合乎道德的职业实践方法。
软件工程人员的职业道德建设:
1. 遵纪守法是软件工程人员应具备的基本素质;
2. 服务客户、造福社会是软件工程人员必须牢固树立的观念;
3. 诚实信用是软件工程人员职业道德的核心所在。