软件工程基础与发展
1-2-软件工程基础与发展
什么是软件?
①软件独立于硬件。
②软件是一种工具。
③软件以程序代码为核心,由程序,文档,数据三个部分组成。
④软件的开发远远比编程更复杂。
⑤应用软件基于现实又高于现实。
为什么应用软件基于现实又高于现实?(软件建立的依据)
①应用软件开发的目的和意图来源于现实问题。
②应用软件必须基于现实才能解决问题。
③应用软件最终要用于现实并改进现实。
软件工程定义:
①应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件
②对系统的、规范的、可量化得各种方法的研究。
软件工程是科学性,实践性和工艺性并重的?
指导软件工程的科学知识主要是计算机科学软,软件工程是由科学来指导活动,由科学来驱动的
软件工程也积累了很多有效实践方法和原则, 包括配置/风险/需求管理以及模块化和OO 等技术原则
在少数工作上,软工还依然需要依赖个人的才能,比如软件分析与设计活动之中
工程与科学的区别:
科学:科学是关于事物的基本原理的有组织、有系统的知识。科学的主要任务是研究世界万物变化的客观规律,它是解决“为什么”的问题。
工程:工程指自然科学或各种专门技术应用到生产部门中形成的各种科学的总称。工程的主要任务是利用和改造自然来为人类服务。通过工程可以生产或开发出对社会有用的产品。工程需要科学知识的指导。
软件工程与计算机科学的区别:
软件工程是建立在计算机科学基础上的学科。计算机科学侧重理论和基础,软件工程侧重软件开发和交付的实际活动。
软件工程的动机:解决实际问题。
软件工程是科学性、实践性和工艺性并重的:工程需要科学的知识指导。
软件工程追求足够好,不是最好:软件工程要以成本效益比有效为生产成功的基本条件。
软件工程的最终目的:为具体用户服务,承担社会责任,促进社会进步。
软件工程知识领域
软件技术知识域:①软件需求;②软件设计;③软件构造;④软件测试;⑤软件维护。
软件管理知识域:①软件工程管理;②软件工程过程;③软件配置管理;④软件工程工具与方法;⑤软件质量;⑥相关学科的知识域。
软件开发活动(软件生命周期模型/软件开发的具体步骤)
①需求开发;(软件需求规格说明(SRS)+需求分析模型)
②软件设计;(软件设计描述(SDD)文档+软件设计模型)
③软件构造;(源代码+可执行文件)
④软件测试;(测试报告)
⑤软件交付与维护。(用户使用手册)
需求开发:
需求开发的任务:①描述现实信息 ②探索并定义问题 ③建立解决方案
需求开发主要制品:(文档和模型)
①软件需求规格说明(SRS)文档:用于详细描述软件解决方案的内容
②需求分析模型:重点描述了软件解决方案中的复杂技术方案
软件设计:
软件设计任务:①软件体系结构设计 ②详细设计 ③人机交互设计
软件设计主要制品:(文档和模型)
①软件设计描述(SDD)文档:用于详细描述软件构建方案的内容
②软件设计模型:重点描述了软件构建方案中复杂细节
软件构造:
软件构造任务:①程序设计 ②编码 ③调试
软件构造主要制品:程序源代码和可执行文件
软件测试:
软件测试含义:①从技术上保证产品的质量合格 ②保证产品质量符合符合需求
软件测试主要制品:测试报告
软件交付与维护:
主要任务:①安装与部署软件系统 ②培训用户并提供文档支持
主要制品:用户使用手册
软件工程的发展:
20世纪50年代:科学计算,以机器为中心,像生产硬件一样生产软件。
20世纪60年代:业务应用(批量数据处理和事务计算),软件不同于硬件,用软件工艺的方法生产软件。
20世纪70年代:结构化方法,瀑布模型,强调规则和纪律,奠定了软件工程的基础。
20世纪80年代:追求生产力最大化,现代结构化方法,面向对象编程,重视复用和过程。
20世纪90年代:以企业为中心的大规模软件系统开发;追求快速开发,可变更性和用户价值,Web应用出现。
21世纪00年代:大规模Web应用,大量面向大众的Web产品;追求快速开发、可变更性、用户价值和创新。