高级软件工程复习笔记

软件概述 基本定义 (1) 程序与软件的定义 程序是由程序设计语言所描述的、能为计算机所理解和处理的一组语句序列。其用程序设计语言(Programming Language)来描述的。程序严格遵循程序设计语言的各项语法和语义规定,应确保程序代码能为程序设计语言的编译器所理解,进而编译生成相应的可运行代码。 软件是指在计算机系统的支持下,能够完成特定功能与性能的程序、数据和相关文档。文档是记录软件开发活动和阶段性成果、软件配置及变更的阐述性资料。 (2) 软件的性质 复杂性 一致性:软件不能独立存在,需要依附于一定的环境(硬件网络等),软件必须遵从人为的惯例并适应已有的技术和系统,软件需要随接口不同而改变,随时间推移而变化,而这些变化是不同人设计的结果 可变性:人们总认为软件是容易修改的,但忽视了修改带来的副作用,不断的修改最终导致软件的退化,从而结束其生命周期 不可见性:软件是一种看不见、摸不着的逻辑实体,不具有空间的形体特征,开发人员可以直接看到程序代码,但源代码并不是软件本身,软件以机器代码的形式运行,开发人员无法看到源代码如何执行的。 (3) 软件的分类 类别 服务对象 软件的功能 发挥的作用 应用软件 行业和领域应用的用户 为特定行业和领域问题解决提供基于软件解决方案,创新应用领域的问题解决模式 提供更为便捷、快速、高效的服务 系统软件 各类应用软件 为应用软件运行和维护提供基础设施和服务,如加载、通讯、互操作、管理等 作为应用软件的运行环境 支撑软件 软件开发者和维护者 为软件系统的开发和维护提供自动和半自动的支持 提高软件开发效率和质量 (4) 开源许可证 软件工程概述 (1) 软件开发需要解决的问题 开发过程:基于什么样的步骤来开发软件系统 开发方法:采用怎样的方法来指导各项软件开发活动 开发管理:如何组织开发人员和管理软件产品 质量保证:如何保证软件开发活动和制品的质量 (2) 软件开发的特殊性 软件开发技术更新速度快、软件开发需求变更频繁、软件开发复杂度高、软件开发需要团队协作完成、软件开发成果需要长期维护、软件开发保证软件质量、软件开发需要评估和控制风险 (3) 软件工程的定义 软件工程是一门研究如何用系统化、规范化、可量化等工程原则和方法进行软件开发和维护的学科。系统化:提供完整和全面的解决方法,包括目标、原则、过程模型、开发活动、开发方法和技术等;规范化:支持各类软件系统的开发,包括语言标准、质量标准、编程标准、方法标准、能力极其改进标准等;可量化:工作量、成本、进度、质量等要素可以量化。 其目标是创造“足够好”的软件,对于好的软件的定义:低成本、高质量、按时交付 其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护和版本升级等。 (4) 软件工程的三要素 视角 描述 目的 过程 从管理的视角,回答软件开发、运行和维护需要开展哪些工作、按照什么样的步骤和次序来开展工作 对软件开发过程所涉及的人、制品、质量、成本、计划等进行有效和可量化的管理 方法学 从技术的视角,回答软件开发、运行和维护如何做的问题 为软件开发过程中的各项开发和维护活动提供系统性、规范性的技术支持 工具 从工具辅助的视角,主要回答如何借助工具来辅助软件开发、运行和维护的问题 帮助软件开发人员更为高效地运用软件开发方法学来完成软件开发过程中的各项工作,提高软件开发效率和质量,加快软件交付进度 计算机辅助软件工程 (1) 基本概念 全称为Computer Aided Software Engineering(CASE)。起源于20世纪80年代,最初是指在信息管理系统开发过程中由各种计算机辅助软件和工具组成的软件开发环境。随着软件工程技术、工具和开发理念的不断发展,CASE逐步演进成为辅助软件工程全生命周期的开发工具和方法集合。CASE旨在帮助软件工程从业者们进行软件开发和维护,提高软件开发和运维效率,提升软件质量,为实现软件开发全生命周期的工程化、自动化和智能化提供基础支撑。 (2) CASE工具分类...

January 18, 2025 · 10 min · 2094 words · Jagger