软件工程是一门研究和应用如何以系统化的、规范化的、可靠的和经济地开发和维护软件的学科。它涉及到软件的设计、开发、测试、部署和维护等方面的活动。软件工程的目标是通过系统化的方法和工具来提高软件的质量、可靠性、可维护性和可重用性,并且保证项目按时完成和预算控制。软件工程的核心原则包括需求分析、软件设计、编码、测试、配置管理和项目管理等。软件工程师是负责软件开发的专业人士,他们需要具备扎实的编程知识、良好的沟通能力和团队合作精神,以及对软件工程原理和方法的深入理解。
软件危机的介绍:软件危机是指在计算机软件的开发和维护的过程中所遇到的一系列严重问题(软件危机包含两个方面的问题:如何开发软件,以满足对软件日益增长的需求,如何维护数量不断膨胀的已有软件)
软件危机的一些典型表现:对软件开发的成本和进度估计常常不准确,用户对“已完成”的软件不满意现象经常发生,软件产品的质量往往靠不住,软件常常是不可维护的,软件通常没有合适的文档资料,软件成本在计算机系统总成本中所占的比例逐年上升,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
产生软件危机的原因:软件本身的特点,软件开发和维护的方法不正确
消除软件危机的途径:对计算机软件有一个正确的认知,软件就是程序是错误的,充分认识到软件开发是是一种组织良好,管理严格,人员协同配合,共同完成的工程项目,推广并使用在实践中总结出来的开发软件的成功技术和方法,开发和使用更好的软件工具
软件工程的定义:把系统的,规范的,可度量的途径应用于软件开发,运行和维护的全过程,以及对上述方法的研究
软件工程的本质特性:软件工程关注于大型程序的构造,软件工程的中心课题是控制复杂性,软件经常变化,开发软件的效率非常重要,和谐的合作是开发软件的关键,软件必须有支持他的用户,在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品,
软件工程的基本原理:用分阶段的生命周期计划严格管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,结果应能清楚的审查,开发小组的人员应该少而精,承认不断改进工程实践性的必要性
软件工程方法学:通常把在软件生命周期全过程中使用的一套技术方法的集合称为方法学,常用的有传统方法学和面向对象方法学
软件生命周期由软件定义,软件开发和运行维护3个时期组成,每个时期又分成若干个阶段
生命周期每个阶段的基本任务:问题定义,可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试
软件工程的定义:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤
软甲过程的几种模型:
瀑布模型:阶段间具有顺序性和依赖性,推迟实现的观点,质量保证的观点
快速模型:不带反馈环,开发过程基本是线性顺序进行,低成本,快捷,一致性,灵活,减少技术风险
增量模型:任务或功能模块驱动,可以分阶段提交产品,有多个任务单,这些任务单的集合构成项目的一个总任务书。
螺旋模型:对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为开发的一个重要目标,减少了过多测试和测试不足所带来的风险,更重要的是维护只是模型的另一个周期,在维护和开发之间没有本质的区别。
喷泉模型:迭代和各项开发活动之间的无间隙
可行性研究的目的:确定问题是否值得去解决,从技术可行性,经济可行性,操作可行性三方面研究必要时还需要从法律,社会效益等方面考虑
可行性研究过程:复查系统规模和目标,研究目前正在使用的系统,导出新系统的高层逻辑模型,进一步定义问题,导出和评价供选择的解法,推荐行动方针,草拟开发计划,书写文档提交审查
数据流图你 → 软件结构图←层次图
数据字典概念:关于数据的信息的集合,也就是对数据流图中包含所有元素的定义的集合
数据字典的内容:数据流,数据流分量,数据存储,处理
需求分析的主要任务:确定对系统的综合要求(功能需求,性能需求,可靠性和可用性需求,出错处理需求,接口需求,约束,逆向需求,将来可能提出的要求)分析系统数据的要求,导出系统的逻辑模型,修正系统开发计划
从哪些方面验证软件需求的正确性:一致性,完整性,现实性,有效性
总体设计阶段的任务和目的:软件系统结构设计,数据结构及数据库设计,网络系统设计,软件总体设计文档,评审。目的:划分出组成系统的物理元素,设计系统的结构
设计原理:模块化,抽象
逐步求精,信息隐藏和局部化,模块独立
模块独立的两个指标:内聚,耦合
过程设计的工具;程序流程图,盒图,PAD图,判定表,判定树,过程设计语言(判定表和判定树为重点
测试目标或定义:测试是为了发现程序中的错误而执行程序的过程,好的测试方法是极可能发现至今为止尚未发现错误的测试方案,成功的测试是发现了至今为止尚未发现错误的测试
测试方法:白盒与黑盒测试法(白盒为重点)
步骤:模块测试,子系统测试,系统测试,验收测试,平行运行
调试的概念:调试是在测试发现错误后排除错误的过程
软件可靠性,可用性的概念:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行成功,软件可用性是程序在给定的时间点,按照规格说明书的规定,成功运行的概率
软件维护“:软件维护就是在软件交互使用后,为了改正错误或满足新的需求而修改软件的过程,包括改正性维护,适应性维护,完善性维护
面向对象的建模:分为对象模型,动态模型,功能模型