软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。
电气与电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE)对软件工程的定义是:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
软件工程由方法、工具和过程三个部分组成。
1.架构设计
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。
软件架构分为:数据流风格、调用/返回风格、独立构件风格、虚拟机风格、仓库
风格。
- 数据流风格包括批处理序列和管道/过滤器两种风格。
- 调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。
- 独立构件风格包括进程通信和事件驱动的系统。
- 虚拟机风格包括解释器和基于规则的系统。
- 仓库风格包括数据库系统、黑板系统和超文本系统。
软件架构评估方式:基于调查问卷(或检查表)的方式、基于场景的方式和基于度量的方式。基于场景的评估方式最为常用。
基于场景的方式主要包括:架构权衡分析法(Architecture Trade-off Analysis Method,ATAM)、软件架构分析法(Software Architecture Analysis Method,SAAM)和成本效益分析法(Cost Beneft Analysis Method,CBAM)。
在架构评估中,一般采用刺激(Stimulus)、环境(Environment)和响应(Response)三方面来对场景进行描述。刺激是场景中解释或描述项目干系人怎样引发与系统的交互部分,环境描述的是刺激发生时的情况,响应是指系统是如何通过架构对刺激做出反应的。
2.需求分析
简单地说,软件需求就是系统必须完成的事以及必须具备的品质。需求是多层次的,包括业务需求、用户需求和系统需求,这三个不同层次从目标到具体,从整体到局部,从概念到细节
质量功能部署(Quality Function Deployment,QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为三类,分别是常规需求、期望需求和意外需求。
需求过程主要包括需求获取、需求分析、需求规格说明书编制、需求验证与确认等。
- 需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。常见的需求获取方法包括用户访谈、问卷调查、采样、情节串联板、联合需求计划等。
- 需求分析对已经获取到的需求进行提炼、分析和审查,以确保所有的项目干系人都明白其含义并找出其中的错误、遗漏或其他不足的地方。需求分析的关键在于对问题域的研究与理解。
- 软件需求规格说明书(Software Requirement Specification,SRS)是需求开发活动的产物,编制该文档的目的