课前预习思考题

课前思考

课前思考

陈焱封3238018002 -
回帖数:0

1. 软件有哪些特征?

无形性:软件是逻辑实体而非物理产品,不可触摸,但可通过功能感知。

复杂性:软件由大量交互的逻辑部件组成,修改局部可能影响全局,维护难度高。

复制零成本:软件可无限复制且成本极低,但开发成本集中在前期。

无磨损性:软件不会因使用而磨损,但可能因环境变化(如操作系统升级)而需适配。

依赖硬件:软件需在特定硬件环境中运行,但独立于硬件制造过程。

持续演化:软件需不断更新以满足新需求或修复问题(维护成本常超过开发成本)。

人工制品:高度依赖开发人员的智力活动,难以自动化全部流程。

2. 什么是软件危机?什么导致了软件危机?
软件危机:20世纪60年代末至70年代初,软件开发面临的一系列严重问题,包括预算超支、进度延迟、质量低劣(错误频发)、维护困难(修改成本高),以及无法满足日益增长的需求。

导致原因:

复杂度管理失败:大型软件系统逻辑复杂,缺乏有效方法控制复杂度。

开发方法原始:依赖个体编程技巧,缺乏系统化工程规范(如设计、文档、测试)。

估算与计划不足:对工作量、成本、进度估算不准,项目管理薄弱。

需求管理缺失:需求不明确或频繁变更,导致产品与预期不符。

维护困境:软件结构混乱、文档缺失,修改时易引入新错误。

人才短缺:软件开发需求增长快,但合格开发人员不足。

3. 软件工程的核心内容是什么?
软件工程的核心内容是通过系统化、可量化的方法高效开发高质量软件,包括:

工程化过程:定义软件开发的生命周期模型(如瀑布、敏捷),规范活动(需求、设计、编码、测试、维护)。

方法学支持:提供具体技术方法(如面向对象、结构化分析、测试驱动开发)。

工具与环境:使用自动化工具(IDE、版本控制、CI/CD)提升效率。

质量管理:确保可靠性、可用性、可维护性(通过评审、测试、度量)。

项目管理:合理规划资源、成本、进度,控制风险。

原则与伦理:遵循模块化、抽象、分治等设计原则,并承担社会责任。

4. 软件工程包含的领域有哪些?

软件需求工程:收集、分析、规格化需求,确保与用户一致。

软件设计:架构设计(高层模块划分)和详细设计(组件接口、算法)。

软件构造:编码、调试、单元测试(实现阶段)。

软件测试:验证功能与质量(单元测试、集成测试、系统测试)。

软件维护:修正错误、适配环境、增强功能(占生命周期成本主要部分)。

软件配置管理:管理版本、变更和发布(如Git)。

软件工程管理:项目管理、风险控制、质量保证。

软件工程过程:定义和改进开发流程(如CMMI、DevOps)。

软件工程工具与方法:支持开发的工具链(如建模工具、自动化测试)。

软件质量:度量与保证质量特性(可靠性、安全性、性能)。

相关学科交叉:如人机交互、数据库、网络安全等。