软件工程是一门旨在解决软件开发和维护中遇到的严重问题,即软件危机的学科。软件危机体现在产品不符用户需求、开发生产力低、产品质量差、成本和进度估算不准、可维护性弱、文档不足以及高昂的价格等多个方面。软件工程通过采用工程化的方法、技术与管理,如分阶段生命周期计划、阶段评审、产品控制、现代程序设计技术等来克服这些问题。
软件工程的目标包括定义良好的方法学,记录软件生命周期中的文件资料,预测结果,并在开发过程中定期复审,以实现高效、易维护、易理解、可靠的软件产品。软件工程的原则涉及分解、抽象与信息隐蔽、一致性以及确定性。其主要研究内容涵盖软件结构、设计与维护方法、工具与环境、标准与规范以及开发技术与管理理论。
可行性研究是软件工程的早期关键步骤,旨在评估项目的经济、技术、运行和法律可行性,以及开发方案的可行性。这一过程包括复查系统规模和目标、研究现有系统、建立新系统的逻辑模型、重新定义问题、导出和评估备选方案、推荐最佳方案及制定行动计划,并提交审查。
需求工程是分析和综合收集到的需求信息,找出需求之间的联系和矛盾,建立系统的逻辑模型。需求分析的任务不仅包括提炼和审查需求,还涉及创建系统关联图、用户接口原型、需求可行性分析、需求优先级确定、模型建立、数据字典以及质量功能配置。在这个阶段,关注的是“做什么”,而不是“怎样做”。
需求规格说明书通常包括引言、任务概述、数据描述、功能要求、性能需求、运行需求、其他要求和附录。这些部分共同构成对软件需求的详细描述,帮助明确用户需求并转化为软件设计的基础。
结构化设计方法基于将软件需求分解为可管理的模块,通过系统流程图、模块结构划分、数据结构和测试策略的确定,与软件分析阶段的输出相衔接,为详细设计和实现阶段提供指导。概要设计说明书、用户手册和测试计划等文档则在这一阶段编写,以确保所有相关人员对软件的需求和设计有清晰的理解。