软件工程师学习笔记—— 数据库系统
Posted 菅兮徽音
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程师学习笔记—— 数据库系统相关的知识,希望对你有一定的参考价值。
软件工程学习笔记(考试版)
软 件 工 程 笔 记
第一章
² 一个软件产品必须由一个完整的配置组成,软件配置主要包括:程序,数据及相关文档。程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当的处理信息的数据结构;文档是开发使用和维护程序所需要的图文资料。
² 软件危机的定义:软件危机是指在计算机软件开发、使用、维护过程中遇到的一系列严重问题和难题。它包括两方面:1.如何开发软件以满足对软件日益增长的要求 2.如何维护数量不断膨胀的已有软件
² 软件危机的具体表现:1. 对软件开发成本和进度的估计往往很不准确
2. 用户对“已完成”的软件系统不满意的现象经常发生
3. 软件产品的质量往往靠不住
4. 软件常常是不可维护的
5. 软件通常没有是适当的文档资料
6. 软件成本在计算机系统总成本中所占的比例逐年上升
7. 软件开发生产率提高的速度往往跟不上计算机应用迅速普及的深入的速度
² 软件危机出现的原因:1. 来自软件自身的特点。是逻辑部件缺乏可见性;规
模庞复杂,修改维护困难
2. 软件开发与维护的方法不当。忽视需求分析;认为软件开发等于程序编写;轻视软件维护
3. 供求矛盾将是一个永恒的主题。面对日益增长的软件需求,人们显得力不从心
² 软件工程的定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理。、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够的到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它,这就是软件工程。
² IEEE对软件工程的定义:软件工程是1把系统的,规范的,可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2研究1中所提到的途径。
² 软件工程的本质特征:1. 软件工程关注于大型程序的构造
2. 软件工程的中心课题是控制复杂度
3. 软件经常变化
4. 开发软件的效率非常重要
5. 和谐的合作是开发软件的关键
6. 软件必须有效的支持他的用户
7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
² 消除软件危机的途径:1. 对计算机软件有一个正确的认识(软件!=程序)
2. 必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、结构严密、各类人员协同配合、共同完成的工程项目
3. 推广使用在实践中总结出来的开发软件的成功技术和方法
4. 开发和使用良好的软件工具
² 软件工程的基本原理:1. 用分阶段的生命周期计划严格管理
2. 坚持进行阶段评审
3. 实行严格的产品控制
4. 采用现代程序设计技术
5. 结果应该清楚的审查
6. 开发小组的人员应该少而精
7. 承认不断改进软件工程实践的必要性
² 软件工程包括(管理)和(技术)两方面的内容
² 软件工程方法学定义:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学。
² 软件工程方法学包含三个因素:方法、工具和过程
² 软件工程方法学分为传统方法学(生命周期方法学或结构化范型)和面向对象方法学(面向对象范型)
² 面向对象范型的要点:1. 把对象作为融合了数据及在数据上的操作行为的统
一的软件构件
2. 把所有的对象都划分成类
3. 按照父类(或称为基类)与子类(或称为派生类)的关系把若干个相关类组成一个层次结构的系统(也称为类等级)
4. 对象彼此间仅能通过发送消息互相联系
² 结构化范型的优点:把软件生命周期划分为若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员的分工协作,从而降低了整个软件开发过程的困难程度
² 结构化范型的缺点:当软件规模庞大时,或者对软件的需求是模糊的或会因为时间而变化时,开发出的软件往往不成功,而且维护起来依然很困难
² 面向对象范型的优点:降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作,促进了软件重用
² 软件工程与软件工程方法学有何关系:软件工程是为了开发出高质量的软件产品所需完成的一系列任务的框架,他规定了完成各项任务的工作步骤。而后者,通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。 软件工程是软件工程方法学的三个重要组成部分之一。
² 什么是软件生命周期模型:软件生命周期模型是跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。
² 软件生命周期模型由:软件定义(问题定义,可行性研究,需求分析);软件开发(总体设计,详细设计,编码与单元设计,综合测试);运行维护
² 软件定义阶段要回答的关键问题是“要解决的问题是什么”可行性研究阶段要回答的关键问题是“对于上一个阶段所确定的问题有行得通的解决办法吗”需求分析阶段的任务仍不是解决问题而是准确的确定“为了解决这个问题,目标系统必须做什么”总体设计阶段回答的关键问题是“概括的说应该怎样实现目标系统”详细设计阶段把解法具体化回答“应该怎样具体的实现这个系统呢”编码和单元测试的关键任务时写出正确的容易理解、容易维护的程序模块综合测试的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求
² 运行维护的实质(对比可行性研究实质):一次压缩和简化了的定义和开发过程。维护时期不在进一步划分阶段
² 瀑布模型的优点:它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。虽然有不少缺陷,但比在软件开发过程中随意的状态要好的多
² 瀑布模型的缺点:1. 实际的项目大部分情况难以按照该模型给出的顺序执行
,而且这种模型的迭代是间接的,这很容易由微小的变化
而造成大的混乱
2. 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎二义性存在的
3. 客户要等到开发的晚期才能看到程序运行的测试版本,而在这是发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的
² 瀑布模型的特点:1. 阶段间具有顺序性与依赖性
2. 推迟实现的观点
3. 质量保证的观点(1>每个阶段都必须完成规定的文档2每个阶段结束前都应该对所完成的文档进行评审,以便尽早发现问题,改正错误)
² 快速原型模型优点:使用户能够感受到实际的系统,使开发者能够快速的构造出系统的框架
² 快速原型模型的缺点:产品的先天性不足,因为开发者常常需要做实现上的折中,可能采用不合适的操作系统或程序设计语言,以使原型能够尽快工作
² 增量模型的优点:1. 人员分配灵活,刚开始不用投入大量的人力资源,当核
心产品很受欢迎时,可增加人力实现下一个增量
2. 当配备的人员不能在设定的期限内完成产品时,他提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇定剂的作用。
² 增量模型的缺点:自始至终开发者和客户纠缠在一起,知道完全版本出来,适用于软件需求不明确,设计方案有一定风险的软件项目
² 增量模型最佳分解的方法因软件产品特点和开发人员的习惯而异。分解时唯一必须遵守的约束条件是,当把新构件集成到现有软件中时,所形成的产品必须是可测试的
² 螺旋模型的基本思想:使用原型及其他方法来尽量降低风险
² 螺旋模型的优点:对于大型系统及软件的开发,这种模型是一个很好的方法,开发者和客户能够较好的对待和理解每一个演化级别上的风险
² 螺旋模型的缺点:1 需要相当的风险分析评估的专门技术,且成功依赖于这
种技术。
2 很明显,一个大的没有被发现的风险问题将会导致问题的发生,可能导致演化的方法失去控制
3 这种模型相对比较新,应用不广泛,其功效需要进一步验证
适用于内部开发的大规模软件项目
² 需求分析阶段应该用正式的文档准确地记录对目标系统的需求,这份文档通常称为“规格说明书”
² 螺旋模型=瀑布模型+增量模型
² 螺旋模型由风险驱动
² 为什么说喷泉模型较好的体现了面向对象软件开发过程无缝和迭代的特性?
因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号,因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性。
² Rational统一过程的优点:提高团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则。模板和工具指导,并确保全体成员共享相同的知识基础。他建立了简洁和清晰的过程结构,为开发过程提供较大的通用性。
² Rational统一过程的缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。
² Rational统一过程主要适用于“大型的需求不断变化的复杂软件系统项目”
² 敏捷过程适用于“商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束”
² 微软过程适用于“商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式”
第二章
v 可行性研究的必要性(原因):开发一个软件时,需要判断原定的系统模型和目标是否实现,系统完成后所能带来的效益是否大到值得开发投资这个系统的程度,如果做不到这些,那么花费在这个工程上的任何时间、人力、软硬件资源和经费都是无谓的浪费。可行新研究的实质是在较高层次上以较抽象的方式进行的系统分析和设计的过程,可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。
v 可行性研究的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。
v 可行性研究的目的(不是)解决问题
v 可行性研究的实质:进行一次大大压缩简化了的系统分析与设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
v 可行性研究的内容:1. 技术可行性(对要开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目能否实现)
2. 经济可行性(进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发)
*(长期更新)软考网络工程师学习笔记——Section 19 计算机软件基本知识