软件工程笔记完整版

合集下载

软件工程笔记(完整版)

软件工程笔记(完整版)

第一章软件工程概述1. 软件危机(software crisis) :是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

即“两低一高” 问题:质量低、效率低、成本高。

软件危机也成为“软件萧条(depression)”或"软件困扰(aflication) ”2. 软件危机主要表现1) 开发成本和进度估计不准2) 用户对“已完成的”软件系统不满意3) 软件质量往往靠不住4) 软件常常是不可维护的5) 软件通常没有适当的文档资料6) 软件成本逐年上升7) 软件开发生产率滞后于硬件和计算机应用普及的趋势3. 产生软件危机的原因1) 与软件本身的特点有关a. 软件不同于硬件,是逻辑部件而不是物理部件缺乏可见性难于测试管理和控制开发过程困难不会因使用时间过长而被“用坏” 难以维护b. 软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升2) 和软件开发与维护的方法不正确有关a. 对软件开发和维护有关的错误认识和作法忽视软件需求分析的重要性认为软件开发就是写程序轻视软件维护b. 对软件开发过程与方法的认识与应用软件开发要经历一个漫长的时期(编程占10-20%) 程序仅是完成软件配置的一个组成部分软件开发方法要有利于软件维护4. 软件的特点(1) 软件是无形的( intangible )(2) 软件副本的大批量生产轻而易举(3) 软件业是劳动密集型的(4) 一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件(5) 软件本身很容易修改。

但由于它的复杂性,又很难正确地修改。

(6) 软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化5. 消除软件危机的途径1) 对计算机软件的正确认识2) 认识到软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目3) 推广使用成功的软件开发技术和方法4)开发和使用更好的软件开发工具总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

软件工程笔记

软件工程笔记

软件工程笔记软件工程是一门关于构建和维护软件系统的学科。

在这门学科中,我们需要掌握一系列的原理和方法,以确保软件的质量和可靠性。

本文将对软件工程的基本概念和常用工具进行笔记总结,帮助读者更好地理解并应用软件工程的知识。

一、软件生命周期软件开发的过程可以被看作是一个生命周期,其中包含了多个阶段。

常见的软件生命周期模型有瀑布模型、迭代模型和敏捷模型等。

1. 瀑布模型瀑布模型是最经典的软件开发模型之一,它将软件开发过程划分为需求分析、设计、编码、测试和维护五个阶段。

开发团队需逐个完成这些阶段,且每个阶段的结果是固定的,即前一阶段的输出作为后一阶段的输入。

2. 迭代模型迭代模型是在瀑布模型基础上发展而来的一种软件开发模型。

该模型将整个开发过程划分为多个迭代周期,每个迭代都包含需求分析、设计、编码、测试和维护等阶段。

每个迭代的输出可作为下一次迭代的输入,以此循环进行。

3. 敏捷模型敏捷模型强调快速迭代和反馈,鼓励团队协作和灵活性。

开发团队通过短周期的迭代,不断交付可用的软件版本,并根据用户反馈进行调整和改进。

敏捷开发方法有Scrum、XP等。

二、需求工程需求工程是软件工程的重要环节,它包括需求获取、需求分析、需求规格和需求验证等过程。

1. 需求获取需求获取是指通过各种技术手段和方法,从用户、领域专家和相关文档中获取软件系统的需求信息。

常用的需求获取技术包括访谈、问卷调查、原型设计和场景分析等。

2. 需求分析需求分析是对获取的需求进行理解和分类的过程。

分析人员需要识别出用户的需求,确定需求的优先级和约束条件,并将其转化为可操作的规格说明。

3. 需求规格需求规格是将需求写入规范文档的过程。

通常采用的规格化方法有自然语言、用例和面向对象建模等。

4. 需求验证需求验证是确保规格所描述的需求能够满足用户期望的过程。

常用的验证方法包括检查列表、原型演示和用户评审等。

三、软件设计软件设计是将需求转化为软件结构和组件的过程。

软件工程复习笔记整理

软件工程复习笔记整理

软件工程复习笔记整理1.软件工程三要素:方法、工具(case、VSS)、过程2.软件危机:①定义:软件开发和维护过程中遇到的一系列严重问题,包括两个方面:如何开发软件以满足不断增长、日趋复杂的需求;如何维护数量不断膨胀的软件产品。

②产生原因:与软件本身特点有关;软件开发与维护方法不正确3.软件=程序+数据+文档4.软件工程:① 软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

② 特点:强调规范化、文档化5.软件生命周期:软件生命周期即软件定义、运行、维护,最终到废弃的整个过程。

软件定义:问题定义、可行性研究、需求分析运行阶段:总体设计、详细设计、编码及测试、综合测试维护阶段:持续满足用户需求6.软件过程:为了获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

① 瀑布模型:适用范围:需求明确、一般不会更改的软件开发特点:阶段间具有顺序性、依赖性;推迟实现(物理上);质量保证(严格的文档要求以及文档评审)②快速原型模型:适用范围:需求不明确的软件开发特点:快速建立原型;线性顺序开发③增量模型:适用范围:特点:分批逐步向客户提交产品;技术要求高;本身自相矛盾。

④螺旋模型:适用范围:内部开发的大规模软件项目特点:风险驱动7.可行性研究(一个简单的需求调研过程),包括技术可行性、经济可行性和操作可行性。

8.需求分析:需求分类:大致分为功能性需求和非功能性需求;其中非功能性需求包括:性能需求、可靠性需求、出错处理、接口需求、约束、逆向需求以及将来可能提出的需求。

9.数据流图和ER图:参考作业储蓄系统10.数据字典:①定义:包括四个方面,数据流、数据流分量、数据存储、处理。

②用途:分析阶段的工具11.概要设计的任务:确定模块以及模块之间的关系。

12.内聚与耦合:进行结构化设计的有力工具① 耦合:对一个软件结构不同模块间互联程度的度量,其强弱程度取决于模块间接口的复杂程度,是影响软件复杂度的一个重要因素。

软件工程(同等学历复习笔记)

软件工程(同等学历复习笔记)

第一章:软件工程概述1.软件特点软件是计算机系统中的逻辑成分,具有无形性。

其主要内容包括:程序、配臵文件、系统文档、用户文档等。

2.软件分类(1)按功能划分:系统软件、支撑软件、应用软件。

(2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。

(3)按规模划分:微型软件、小型软件、中型软件、大型软件。

(4)按服务对象划分:通用软件、定制软件。

3.软件发展阶段(1)程序设计时代(20世纪50年代)。

(2)程序系统时代(20世纪60年代)。

(3)软件工程时代(20世纪70年代起)。

4.软件危机(1)危机现象:开发成本与进度估计不准确,产品与用户要求不一致,产品质量可靠性差,文档不完整不一致,产品可维护性差,生产率低。

(2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不够,对维护不够重视,开发工具自动化程度低。

5.软件工程软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经济、高效地开发高质量的软件产品提供最有效的支持。

(1)工程方法:结构化方法、JSD方法、面向对象方法。

(2)软件工具:具有自动化特征的软件开发集成支撑环境。

(3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、软件验证、软件维护。

(4)工程管理:项目规划,项目资源调配,软件产品控制。

(5)工程原则:分阶段生命周期计划,阶段评审制度,严格的产品控制,采用先进的技术,成果能清楚地审查,开发队伍精练,不断改进工程实践。

(6)工程目标:开发成本较低,软件功能能满足用户需求,软件性能较好,软件可靠性高,软件易于使用、维护与移植,能按时完成开发任务并及时交付使用。

(7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

第二章:软件工程过程模型1.软件生命周期如同任何事物都有一个发生、发展、成熟直至衰亡的全过程一样,软件系统或软件产品也有一个定义、开发、运行维护直至被淘汰这样的全过程,我们把软件将要经历的这个全过程称为软件的生命周期。

软件工程学习笔记

软件工程学习笔记

第一章一、软件的特点1、软件:计算机程序及其说明程序的各种文档2、程序:是计算机任务的处理对象和处理规则的描述3、文档:是有关计算机程序功能、设计、编制、使用的文字或图形资料4、软件的特点:1)软件是一种逻辑产品2)软件产品的生产主要是研制3)软件产品不会用坏,不存在磨损、消耗问题4)软件产品的生产主要是脑力劳动5)软件费用不断增加,软件成本相当昂贵二、软件生产有几个阶段,各有何特征1、程序设计时代生产方式:个体手工劳动工具:机器语言、汇编语言开发方法:追求程序运行效率硬件特征:价格贵、存储容量小、运行可靠性差软件特征:只有程序、程序设计概念,不重视程序设计方法2、程序系统时代生产方式:作坊式的小集团合作生产生产工具:高级语言开发方法:个人技巧,开始提出结构法方法硬件特征:速度、容量、工作可靠跃居第一明显提高软件特征:程序员数量猛增加,导致软件危机出现。

3、软件工程时代生产方式:工程化的生产生产工具:数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件硬件特征:向超高速、大容量、微型化以及网络化方向发展三、什么是软件危机,其产生的原因是什么?1、软件危机软件发展到第二阶段末期,一些复杂的、大型的软件开发项目提出来了,但是,软件开发技术进步一直不能满足发展的要求。

在软件开发中遇到的问题找不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。

2、软件危机的表现1)经费预算经常突破2)开发的软件不能满足用户的要求3)开发的软件可维护性差4)软件的软件可靠性差3、原因1)软件的规模越来越大,结构越来越复杂2)软件开发管理困难而复杂3)软件开发费用不断增加4)软件开发技术落后5)生产方式落后6)开发工具落后四、什么是软件工程,其目标和内容是什么?1、软件工程用科学知识和技术原理来定义、开发、维护软件的一门学科2、目标建造一个大型软件系统,一般有以下几个目标1)付出较低的开发成本2)达到软件要求的功能3)取得较好的软件性能4)开发的软件易于移植5)需要较低的维护费用6)能按时完成开发任务及时交付使用7)开发的软件可靠性高3、内容软件开发技术:主要研究软件开发方法、软件开发过程、软件开发工具和环境软件开发管理:软件管理学、软件经济学、软件必理学4、面临的问题1)软件的费用2)软件的可靠性3)软件的维护4)软件的生产率5)软件的重用五、什么是软件的生存周期,它有哪几个活动1、软件的生存周期一个软件从提出开发要求开始直到该软件报废为止的整个日期。

软件工程知识点总结

软件工程知识点总结

软件工程〔简要知识点〕一、. 软件过程五个模型比照〔瀑布模型、快速原型、增量、螺旋、喷泉模型〕二、可行性研究:1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。

2、四个方面:技术、经济、操作可行性、法律3、数据流图四种成分:1、源点/终点2、处理3、数据存储4、数据流三、需求分析:1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。

2、构造化方法就是面向数据流自顶向下逐步求精进展需求分析的方法。

3、实体联系图:1、数据对象2、属性3、联系〔1:1、1:N、M:N〕四、总体设计:1.任务:答复“概括的说,系统应该如何实现〞,用比拟抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序构造。

2. 系统设计阶段〔确定系统具体实施方案〕、构造设计阶段〔确定软件构造〕3.模块独立:内聚和耦合4. 耦合表示一个软件构造内各个模块之间的互连程度,应尽量选用松散耦合的系统5. 内聚 (Cohesion): 一个模块内各元素结合的严密程度6.面向数据流的设计方法:变换流和事务流五、详细设计:1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的准确描述,从而在编码阶段可以把这个描述直接翻译成用*种程序设计语言书写的程序。

2.过程设计的工具〔程序流程图、盒图、PAD图、判定表、判定树〕七、测试:1、单元测试:又称模块测试。

每个程序模块完成一个相对独立的子功能,所以可以对该模块进展单独的测试。

由于每个模块都有清晰定义的功能,所以通常比拟容易设计相应的测试方案,以检验每个模块的正确性。

2、集成测试:在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试完毕之后还要进展集成测试。

这个步骤着重测试模块间的接口,子功能的组合是否到达了预期要求的功能,全程数据构造是否有问题等。

软件工程知识点总结

软件工程知识点总结

软件工程(简要知识点)软件生命周 期:软件定义 软件开发问题定义(确定题目) 可行性研究 需求分析 概要设计 系统设计 详细设计系统实现编码和单元测试 综合测试运行维护:主要任务是使软件持久地满足用户的需要一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。

2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要 求。

2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。

3、实体联系图:1、数据对象 2、属性 3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系 统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定 组成系统的每个程序结构。

2. 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的 系统5. 内聚 (Cohesion): 一个模块内各元素结合的紧密程度6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计 工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。

2.过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。

每个程序模块完成一个相对独立的子功能,所以 可以对该模块进行单独的测试。

由于每个模块都有清晰定义的功能,所以通常 比较容易设计相应的测试方案,以检验每个模块的正确性。

软件工程学习笔记

软件工程学习笔记

第1章软件工程基本观念1.1 软件工程的目标与常用模型1.2 软件开发的基本策略1.2.1 复用软件复用可以表述为:构造新的软件系统可以不必每次从零开始,直接使用已有(稳定)的软构件,即可组装(或合理修改)成新的系统。

1.2.2 分而治之分而治之是指把一个复杂的问题分解成若干个简单的子问题,然后逐个解决。

诸如软件的体系结构设计,模块化设计等都是分而治之的表象。

1.2.3 优化-折衷软件的优化是指优化软件的各个质量因素,比如提高软件运行速度,提高对内存资源的利用率,改善用户界面效果,使三维图形的真实感更强等等。

但是软件优化比较复杂,当所有因素不能都得到优化的时候,就需要“折衷”策略。

软件中的“折衷”策略是指通过协调各个质量因素,实现整体质量的最优。

在保证其他质量因素不变差的前提下,使某些质量因素变得更好。

第2章程序员与程序经理2.1 了解程序员2.2了解程序经理好的程序经理应具备以下品质:1)技术水平是程序员当中的最高级别2)能做最多且最难的工作3)有人格魅力程序员升为经理后一定要保持编程的习惯。

2.4 软件团队建设技术级别和管理级别都划分为四个等级:第3章项目计划与质量管理在可行性分析之后,项目计划与质量管理将贯穿需求分析,系统设计,程序设计,测试,维护等软件工程环节。

软件的高质量是“设计”出来的,不是“管”出来的。

3.1 项目计划只有知己知彼才能做出合理的项目计划。

“知己”是指了解有多少可用资源,包括:人;可复用的软构件;软硬件环境。

“知彼”是指了解项目的规模,难度与时间限制。

3.2 零缺陷质量管理的理念“零缺陷”质量管理有两个核心内容:高目标;可执行的规范。

3.3 软件的质量因素3.4 质量检查质量检查应该在每个实践环节(里程碑)都执行。

检查工作要预防被检查者弄虚作假。

检查工作要有科学的评审方式。

第4章可行性分析与需求分析可行性分析是要决定“做还是不做”。

需求分析是要决定“做什么,不做什么”。

软件工程笔记

软件工程笔记

有特殊(执行者)指向一般(执行者)扩展用例指向基本用例基本用例指向包含用例关联、聚合组合(关联的特例)、泛化、依赖、实现现在符号表示:0..1 0或1; 0..*或* 0或多 1..* 1或多由多对多的关系变为多对一的关系(或一对多变成一对一的关系),称为限定关联。

也称为共享聚集。

例:课题组没了,人员还在例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。

需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

也称为组合聚集(简称组成)。

窗口类没了,则窗口上的文本框、列表框等也消失课程变化,课表也随之变化。

依赖类指向独立的类对象是类的实例。

对象图也是类图的实例。

注意图形,每个小图都是这样!!!软件过程模型:瀑布模型。

最早的软件开发模型,它将软件生命周期的各个阶段线性相连,自顶向下进行。

上一个阶段完成才能开始下一个阶段,同时当前阶段出现问题,就会返回上一个阶段进行修改。

优点:有利于对软件开发过程中人员的组织和管理,也极大地提高了软件开发效率。

缺点:不适应用户需求的变化;最终产品可能不能满足用户真正的需要适用:用户的需求非常清楚全面,且在开发过程中没有或很少变化。

快速原型模型:先对整个系统中的部分功能来设计一个初步的原型系统,将原型给客户试用,再从客户的反馈中对原型进行改进。

优点:可以得到比较良好的需求定义,容易适应需求的变化。

缺点:客户与开发者对原型理解不同;不利于开发人员的创新。

适用:预先不能确切定义需求的软件系统的开发。

增量模型:增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。

优点:可以分批次地提交软件产品,了解软件的进展;开发顺序灵活,可以按需调整。

缺点:需要软件具备开放式的结构,能被模块化。

适用:软件产品可以分批次地进行交付;软件系统能够被模块化。

喷泉模型:一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

软件工程笔记

软件工程笔记

软件工程笔记软件工程,作为一门致力于开发高质量软件的学科,涵盖了从需求分析到软件维护的整个生命周期。

它不仅需要掌握各种技术和工具,还需要具备良好的团队协作和项目管理能力。

接下来,就让我详细地聊聊软件工程的各个方面。

首先,需求分析是软件工程的第一步,也是最为关键的一步。

在这个阶段,我们需要与客户或者用户进行深入的沟通,了解他们的需求和期望。

这可不是一件简单的事情,因为用户往往并不能清晰地表达自己的需求,或者他们的需求可能会随着时间的推移而发生变化。

所以,我们需要通过各种方法,比如问卷调查、用户访谈、现场观察等,来挖掘出真正的需求。

而且,在需求分析的过程中,我们还要对需求进行优先级排序,区分出哪些是核心需求,哪些是次要需求,以便在后续的开发过程中合理分配资源。

有了明确的需求之后,就进入了软件设计阶段。

这个阶段就像是给软件搭建一个框架,决定了软件的整体结构和模块划分。

良好的软件设计应该具有高内聚、低耦合的特点,也就是说,每个模块内部的功能应该紧密相关,而模块之间的联系应该尽量简单。

这样可以提高软件的可维护性和可扩展性。

在设计阶段,我们还需要考虑软件的架构,比如是选择分层架构、微服务架构还是其他的架构模式。

同时,还要设计数据库结构、接口规范等。

接下来就是编码实现阶段了。

在这个阶段,开发人员根据设计文档,使用选定的编程语言和开发工具,将软件的功能逐步实现。

编码的过程中,要遵循良好的编程规范,保证代码的可读性、可维护性和可测试性。

而且,要注意代码的效率和安全性,避免出现常见的编程错误,比如内存泄漏、缓冲区溢出等。

软件测试是确保软件质量的重要环节。

测试可以分为单元测试、集成测试、系统测试和验收测试等不同的类型。

单元测试是对软件中的最小单元——函数或者模块进行测试,确保它们的功能正确。

集成测试则是测试各个模块之间的接口是否正常。

系统测试是在整个系统的层面上进行测试,验证软件是否满足需求规格说明书中的要求。

验收测试则是由用户或者客户来进行,确认软件是否符合他们的期望。

读书笔记——软件工程基础知识

读书笔记——软件工程基础知识
模块间耦合 模块内聚
内聚性的7种类型
功能内聚(FC,Function Cohesion) 信息内聚(IC,Information Cohesion) 通信内聚(CC,Comunication Cohesion) 过程内聚(PC,Procedural Cohesion) 时间内聚(经典内聚,Classical Cohesion) 逻辑内聚(LC,Logical Cohesion) 巧合内聚(偶然内聚 Coincidental Cohesion) /koˌɪnsɪˈdɛntl:/ FIC PC LC
③填人条件项。(二进制的真值表)。 ④填人动作桩和动作顶。这样便得到形如图 的初始判定表。
徐二毛的读书笔记
10
软件工程基础知识
决策表实例:
1 条 件 动 作 功率大于 50 马力吗? 维修记录不全吗? 运行超过 10 年吗? 进行优先处理 作其他处理 初始判定表 Y Y Y x 2 Y Y N x 3 Y N Y X X 4 Y N N 5 N Y Y X x 6 N Y N 7 N N Y X x 8 N N N
设计测试用例通常有两种方法: 黑盒测试(功能测试、数据驱动测 试),软件接口测试、功能测 试、性能测试,是否有数据结 构错误或者外部信息访问错误 不考虑程序内部逻辑和特性,只依 据程序的需求规格说明书 白盒测试(结构测试、逻辑驱动测 试) 允许利用程序的内部逻辑结构等相 关信息,对程序所有逻辑路径 进行测试。程序模块进行测试, 测试内部结构的有效性 2. 3. 4. 边界值分析 错误推测发 因果图
P代表总投资 n代表系统使用寿命 j就是投资回报率 Fi 是第i年年底收益
徐二毛的读书笔记
6
软件工程基础知识
• 需求建模
– 用图形表示需求就是 需求建模,获得分析 模型。有助于检测需 求的不一致性、模糊 性、错误及遗漏

软件工程课堂笔记

软件工程课堂笔记

1.、软件工程管理是对软件项目。

的管理(√)2.SA是什么?面向数据流的进行数据分析的:结构化分析。

(√)3.可行性研究需要进行一次:简化压缩的需求分析。

4.系统流程图是描述:体系结构的工具。

5.程序三个基本控制结构是:顺序、选择、循环。

6.程序三个基本控制的共同特点:只有一个入口和一个出口。

7.产生软件维护的副作用是:因修改软件而造成的错误。

8.维护中因误删除一个标示符造成的错误是:编码错误。

名词解释1:1、渐增式测试逐个把未经测试的模块组装到已经测试的模块上进行集成测试,每加入一个新的模块,进行一次集成测试,重复此过程直到程序组装完毕。

2、结构化设计面向数据流的设计,是以需求分析阶段产生的数据流,因为基础按一定的步骤映射成软件结构,因此称为结构化设计。

3.结构化分析是根据分解与抽象的原则,按照系统中数据处理的流程,用数据图来建立系统的模型,从而完成系统分析的工作4、模块化模块化是指解决一个复杂问题,自顶向下逐层把软件系统划分为若干模块的过程每个模块完成一个特定的子功能,所有的模块按照某种方法组装起来成为一个整体完成系统要求的功能。

问答题1:1、什么事软件危机?软件危机的表现是什么?软件危机的原因是什么?答:软件发张第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量、可靠性都有显著提升,生产成本显著下降,为计算机广泛应用创造了条件。

一些复杂的、大型的软件项目的提出,但是软件开发技术的进步一直未能满足发展的需要,在软件开发中遇到的问题一直得不到解决办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。

软件危机表现在以下四个方面:一、经费预算经常突破,完成时间一再拖延;二、开发的软件不能满足用户的要求;三、开发的软件可维护性差;四、开发的软件可靠性差。

软件危机的原因:一、软件的规模越来越大,结构越来越复杂;二、软件开发管理困难而复杂;三、软件开发费用不断增加;四、软件开发技术落后;五、开发工具落后,生产力度提升缓慢。

张海藩《软件工程导论》(第6版)笔记和课后习题详解

张海藩《软件工程导论》(第6版)笔记和课后习题详解
第 11 章 面向对象设计................................................................................................................................ 119 11.1 复习笔记...................................................................................................................................... 119 11.2 课后习题详解...............................................................................................................................125
第 3 章 需求分析 ......................................................................................................................................... 28 3.1 复习笔记 ........................................................................................................................................ 28 3.2 课后习题详解 ................................................................................................................................. 32

(完整版)(考研复试)软件工程笔记

(完整版)(考研复试)软件工程笔记

1:软件危机:问题1:如何开发软件,以满足对软件日益增长的需求。

问题2:如何维护数量不断膨胀的软件。

表现:对软件开发成本和时间估计不准,用户对已完成软件不满意,软件质量不可靠,软件不可维护,软件缺少文档,软件成本过高,软件跟不上硬件发展速度。

原因:与软件本身特点有关,缺乏可见性,质量难以评价,规模庞大难以维护。

与软件开发维护的不当方法有关,轻视需求分析和维护,对用户的要求没有完整准确的认识就编写程序,忽视程序,文档,数据等软件配置。

2:软件工程:采用工程的概念,原理,技术和方法开发与维护软件,把正确的管理技术和软件开发技术结合起来,经济的开发出高质量的软件并有效的维护。

即把系统化的,规范的,可度量的途径应用于软件开发,运行和维护的过程。

3:软件工程7条基本原理:用分阶段的生命周期计划严格管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,结果应能清楚地审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性。

4:软件工程领域:软件需求,设计,构建(写代码),测试,维护,配置管理,工程管理,工程过程,工程工具,软件质量。

5:软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(概要设计,详细设计,编码和单元测试,综合测试),运行维护(改正性维护,适应性维护,完善性维护,预防性维护)。

、生命周期模型6:瀑布模型:就是把一个开发过程分成收集需求,分析,设计,编码,测试,维护六部分,只有完成前面一步才能开始后面一步,上一步的输出的文档就是这一步的输入文档,每一步完成都要交出合格的文档,每一步都会有反馈,如果反馈有错误就退回前一步解决问题。

瀑布模型的缺点:实际的项目开发很难严格按该模型进行;由于用户只能通过文档来了解产品,客户往往很难清楚地给出所有的需求,而瀑布模型不适应用户需求的变化;软件的实际情况必须到项目开发的后期客户才能看到。

7:快速原型模型:就是根据用户的需求迅速设计出一个原型系统,原型系统具有基本的功能,然后用户使用原型并对原型提出需求和改变,开发人员再对原型进行修改和完善知道用户满意。

软件工程笔记

软件工程笔记

软件工程5.1软件危机和软件工程5.1.1软件危机一、产生软件危机的历史背景1.计算机系统发展的早期(60年代中期以前)个体化的软件环境:软件规模小,编写者和使用者往往是同一个人,除程序清单外,无其它文档资料。

2.计算机系统发展的第2代时期(60年代中期到70年代)"软件作坊":比较广泛使用产品软件,仍沿用个体化开发方法。

软件维护工作很难进行,甚至不可维护(不能修改运行时发现的错误,不能适应新的硬件环境)由于软件的"不可维护",而导致了"软件危机"。

3.软件工程学诞生(1968年)北大西洋公约组织的计算机科学家,在联邦德国召开国际会议,讨论软件危机问题。

正式提出"软件工程"这个名词──新兴工程学诞生了。

二、软件危机的内涵:1.软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

主要是两个方面的问题:如何开发软件──怎样满足对软件日益增长的需求如何维护软件──数量不断膨胀的已有软件2.软件危机的内涵:(1)软件开发成本和进度的估计常常很不准确(2)用户对"已完成的"软件系统不满意的现象经常发生(3)软件产品的质量往往靠不住(4)软件常常是不可维护的(5)软件通常没有适当的文档资料(6)软件成本在计算机系统总成本中所占的比例逐年上升(7)软件开发生产率提高的速度远远跟不上计算机应用迅速及深入普及的速度三、产生软件危机的原因:1. 软件本身的特点:规模庞大,开发软件不仅涉及许多技术问题(诸如分析方法,设计方法,形式说明方法,版本控制等);更重要的是必须有严格而科学的管理。

2. 软件人员的主观原因:开发与维护的方法不正确。

早期软件开发个体化。

至今,忽视软件需求分析的重要性,轻视维护。

(切记:要充分、完整、准确地认识用户的要求,不要匆忙着手编写程序。

要做大量深入细致的调查研究工作,反复多次地与用户交流信息,准确具体了解用户的要求。

(完整版)软件工程导论知识点概要

(完整版)软件工程导论知识点概要

1.1软件危机软件危机的表现软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。

1)成本难以估计、成本高。

2)软件开发进度估计不准确,项目延期比比皆是。

3)软件质量得不到保证(功能和性能)。

4)用户对“已完成的”软件系统不满意的现象经常发生。

5)维护非常困难(多样性、复杂性、副作用)。

6)软件通常没有适当的文档。

7)软件产品供不应求,跟不上计算机普及速度。

产生软件危机的原因(1)与软件本身的特点有关(逻辑复杂,成本高,风险大,难于维护)。

(2)与软件开发与维护的方法不正确有关:软件≠程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期)各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目)1.2软件工程定义软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。

软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。

软件工程的特性:1. 软件工程关注于大型程序的构造(传统的程序设计技术和工具是支持小型程序设计的)2. 软件工程的中心课题是控制复杂性(问题分解)3. 软件经常变化(考虑将来要发生的变化)4. 开发软件的效率非常重要(寻求更好、更有效的工具)5. 和谐地合作是开发软件的关键(运用标准和规程)6. 软件必须有效地支持它的用户(软件要服务于用户)7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的7条基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。

软件工程重点笔记

软件工程重点笔记

软件⼯程重点笔记
软件测试步骤
V模型
W模型
软件测试的作⽤:
软件测试是软件开发过程的最后⼀个阶段,它是在软件开发过程中保证软件质量、提⾼软件可靠性的最重要的⼿段之⼀,它是软件系统在正式交付⽤户使⽤前,对系统分析、设计、代码等开发⼯作的
最后检查和复审。

为什么要做软件维护?软件维护⽬的是什么?
为什么:软件系统交付使⽤以后,为了改正错误或满⾜新的需求⽽修改软件的过程。

⽬的:
1. 在软件系统运⾏过程中发现测试阶段未能发现的、潜在的软件错误和缺陷。

2. 随着软硬件环境的改变,与系统交互的外部系统的改变,⽹络通信技术的发展,系统数据或⽂件格式、存储⽅式、读取步骤的变迁,
要求软件系统适应这些变化。

3. 根据实际情况的发展,⽤户操作、流程发⽣改变,需要改进软件设计,增强软件功能,提⾼软件性能。

4. 不断扩⼤软件系统的应⽤范围。

UML的⽤例视图有什么作⽤?⽤例之间的关系有哪些?这些关系的表⽰什么意思?
作⽤:描述系统的外部特征、系统功能和性能需求,从⽤户⾓度描述系统。

该视图定义了系统的需求,因此约束了描述系统设计和构造的某些⽅⾯的所有其他视图。

关系:泛化关系,扩展关系《extend》,包含关系《include》。

意思:
泛化关系:不同参与者或不同⽤例间的继承关系。

UML中的⽤例泛化过程是将不同⽤例之间的可合并部分抽象成独⽴的⽗⽤例,并将不可合并部分单独成各⾃的⼦⽤例。

扩展关系《extend》:允许⼀个⽤例扩展另⼀⽤例提供的功能,表⽰扩展⽤例对基本⽤例的特殊服务。

包含关系《include》:p—个基本⽤例⾏为包含另⼀个⽤例⾏为。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.第一章软件工程概述1.软件危机 (software crisis):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

即“两低一高”问题:质量低、效率低、成本高。

软件危机也成为“软件萧条(depression)”或“软件困扰(afflication)”2.软件危机主要表现1)开发成本和进度估计不准2)用户对“已完成的”软件系统不满意3)软件质量往往靠不住4)软件常常是不可维护的5)软件通常没有适当的文档资料6)软件成本逐年上升7)软件开发生产率滞后于硬件和计算机应用普及的趋势3.产生软件危机的原因1)与软件本身的特点有关a. 软件不同于硬件,是逻辑部件而不是物理部件缺乏可见性难于测试管理和控制开发过程困难不会因使用时间过长而被“用坏”难以维护b.软件不同于一般程序,规模庞大,而且程序复杂性随着程序规模的增加而呈指数上升 2)和软件开发与维护的方法不正确有关a.对软件开发和维护有关的错误认识和作法忽视软件需求分析的重要性认为软件开发就是写程序轻视软件维护b. 对软件开发过程与方法的认识与应用软件开发要经历一个漫长的时期(编程占10-20%)程序仅是完成软件配置的一个组成部分软件开发方法要有利于软件维护4.软件的特点(1)软件是无形的(intangible)(2)软件副本的大批量生产轻而易举(3)软件业是劳动密集型的(4)一个没有经过充分训练的软件开发人员很容易编写出难以理解和修改的软件(5)软件本身很容易修改。

但由于它的复杂性,又很难正确地修改。

(6)软件不像其他的工业产品那样会因使用而磨损,随着反复修改,它的设计会逐渐退化5.消除软件危机的途径1)对计算机软件的正确认识2)认识到软件开发不是个体劳动的神秘技巧,而是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目3)推广使用成功的软件开发技术和方法教育资料..4)开发和使用更好的软件开发工具总之, 为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

6.对“工程”的理解:大事情,施工的过程,工程学科。

施工的过程:分析?设计?实现?维护7.软件的概念经典定义:软件 = 程序 + 文档 + 数据软件是计算机程序及其有关的数据和文档的完整集合。

计算机程序是能够完成功能的可执行的指令序列数据是程序能适当处理的信息,具有适当的数据结构软件文档是开发、使用和维护程序所需要的图文资料8.软件工程的概念概括地说,软件工程是指导计算机软件开发和维护的工程学科。

采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。

目标:项目成功(BFC,Better、Faster、Cheaper)9.软件工程的本质特征(1)软件工程关注于大型程序的构造(2)软件工程的中心课题是控制复杂性(3)软件经常变化(4)开发软件的效率非常重要(5)和谐地合作是开发软件的关键(6)软件必须有效地支持它的用户(7)在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品10.软件工程的基本原理(1)用分阶段的生命周期计划进行严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性11.软件工程方法学通常把在软件生命周期全过程中使用的一整套技术的集合称为方法学(methodology),也称为范型(paradigm)。

1)传统方法学(结构化方法学):SA,SD,SP,ST2)面向对象方法学:OOA,OOD,OOP,OOTS:结构化,structuredOO:面向对象,Object OrientedA:分析,AnalysisD:设计,DesignP:编程,ProgrammingT:测试,Test教育资料..12.软件工程方法学三要素,这就是方法、工具和过程。

其中:1)方法是完成软件开发任务的技术方法,回答“如何做”的问题;2)工具是为方法的运用提供自动的或半自动的软件支撑环境;3)过程规定了完成各项任务的工作阶段、工作内容、产品、验收的步骤和完成准则。

第二章软件过程1.过程(process):ISO9000把过程定义为,把输入转化为输出的一组彼此相关的资源和活动。

2.软件过程(Software Process): 是为了获得高质量软件所需要完成的一系列任务的框架(Framework),它规定了完成各项任务的工作步骤。

3.软件生命周期软件生命周期由软件定义、软件开发、和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。

(三个时期八个阶段)三个时期八个阶段:三个时期:软件定义、软件开发、运行维护八个阶段:(1)问题定义 (2).可行性研究 (3).需求分析 (4).概要设计 (5).详细设计 (6).编码和单元测试 (7).综合测试 (8).软件维护4.软件开发模型(在课本的14—33页,了解一下)1)瀑布模型 (Waterfall)2)快速原型模型Prototype3)增量模型(Incremental Models)4)喷泉模型5)螺旋模型6)统一过程(rational unified process,RUP)7)敏捷过程8)极限编程(extreme programming,XP)9)能力成熟模型(capability maturity model,CMM)第三章结构化的分析(SA)1.需求分析:发现、求精、建模、规格说明、复审的过程。

发现:获取需求,完备、正确、有效求精:细节建模:形式化描述规格说明:详述复审:批准2.需求分析的准则1)必须理解和表示问题的信息域,根据这条准则应该建立数据模型。

2)必须定义软件应完成的功能,这条准则要求建立功能模型。

3)必须表示作为外部事件结果的软件行为,这条准则要求建立行为模型。

4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。

教育资料..3.需求获取的方法1)访谈正式的:事先准备好的非正式的访谈:开放的,头脑风暴,情景分析2)面向数据流自顶向下求精3)简易的应用规格说明技术4)快速建立软件原型4.分析建模结构化分析实质上是一种创建模型的活动。

通过需求分析而建立的模型必须达到下述的三个基本目标:描述用户的需求。

为软件设计工作奠定基础。

定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品。

5.模型(Model):是为了理解事物而对事物作出的一种抽象,是对事物的书面上的无歧义文字或图形的描述.5.1.模型是对问题的简化。

5.2.要从多个角度认识事物。

6.分析模型:数据模型(实体联系图)、功能模型(数据流图)、行为模型(状态转换图)。

需求分析成果:软件需求规格说明7.)要求会画(P41,ER联系图(图,entity-relationship diagram)-8.实体)数据模型的主要成分:数据对象,数据对象的属性,数据对象彼此间相互连接的1(关系数据对象:对软件必须理解的复合信息的抽象。

教育资料..属性:定义了数据对象的性质。

联系:数据对象彼此之间相互连接的方式称为联系,也称为关系。

类型:一对一联系、一对多联系、多对多联系。

联系也可以有属性。

)实体-联系图的符号表示:(2实体属性联系9.数据流图(DFD,Data Flow Diagram):描绘信息流和数据从输入移动到输出的过程中所经受的变换(书本P43—47,要会画)10.数据字典(DD:,Data Dictionary):是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合(书本P49—51,要会画)11.状态转换图(SD,State Diagram):通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。

用于建立行为模型。

状态:是任何可以被观察到的系统行为模式。

状态规定了系统对事件的响应方式事件:是在某个特定时刻发生的事情,是引起系统做动作或(和)转换状态的控制信息。

(书本P47—49)教育资料..结构化设计第四章性能DFD设计过程功能将来分析环境ERD DDSTD 接口数据(五大需求)架构数据(四大设计) DS 内存 DB 数据外存 fileC/S,B/S 架构构件之间的接口四大设计接口接口人—机Process过程Procedure(步骤)三型两化行为模型功能模型三型数据模型系统化两化层次化如何设计:必须依据原理、原则、规则、准则模块:是由边界元素限定的相邻的程序元素的序列,而且有一个整体标识符来代表它。

把这就是把程序划分成可独立命名且独立访问的模块,每个模块完成一个子功能,模块化:些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

一组相邻元素)(1)一个边界(2 ))(3一个名字(标识符IDWhy模块化?降低复杂度1)有利于团队分工协作)2How to 模块化? 5模块化Meyer 标准教育资料..模块可分解性(降低复杂性)1))模块可组装性(可重用,reuse2)) (模块可理解性易于维护3))模块连续性(副作用小)4 )模块保护性(屏蔽异常)5 abstract):抽出事物的本质特征,而暂时不考虑它们的细节抽象(找共性,略特性抓主要,略次要有效降低模块数量逐步求精:为了集中精力解决主要问题而尽量推迟对问题细节的考虑。

大小粗细Miller法则:一个人在任何时候都只能把精力集中在7±2个知识块上。

7±2全局变量信息隐藏局部变量块内:高内聚,一个模块只做一件事模块独立参数少块间:低耦合,KIS(keep it simple)类型简单结构化设计原理:1)模块化2)抽象3)信息隐藏4)逐步求精启发原则:1)改进软件结构提高模块独立性2)模块规模应该适中(LOC<30)LOC:lines of code note>code3)深度、宽度、扇出和扇入都应当适中(7±2原则)4)模块的作用域应该在控制域之内5)力争降低模块接口的复杂度(接口KIS)6)设计单出口单入口的模块7)模块的功能应该可以预测设计结果描述工具:建模工具软件工具工具建模工具开发工具IPO图(Input Process Output):描述模块(总体)教育资料..C/S,B/S ,层次架构表示: = HIPO图层次图 + IPO图 P76)结构图:(提出的结构图是进行软件结构设计的另一个有力工具Yourdon 面向设计流的设计方法三种设计方法面向数据结构的设计方法面向对象的设计方法设计优化:无有好优精人—机界面设计问题MI CUI GUI AUI MMI1.系统响应时间(长度、易变性)集成式(内含,开始就设计在软件中)2.用户帮助措施嵌入式/附加式(联机文档)1)完备性2)选择性(menu, F1 , help)3)如何显示帮助信息4)返回/退出(ESC escape , 按钮)平面5)怎样组织帮助信息层次结构(导航)Web页(超链接)3.出错信息处理1)可理解性2)建设性3)警示性4)视听性5)友好性4.命令交互UI设计的重要性:1)用户评价产品的依据2)占总设计量的50%以上3)涉及到美学、人—机工程学、心理学4)UI工程师成为一种岗位UI设计原则:以人为本、人性化、美、方便和谐美一致对称教育资料..人—机界面设计过程:用户界面设计是一个迭代的过程 UML建模(的状态图)powerpoint,dreamvever)建立原型(试用评估界面设计指南(看看微软的界面设计)1)一般交互2)信息显示3)数据输入结构化方法学SA SD SP ST1965GOTO语 1968 (书本P89)1972如果一个程序的代码块仅仅通过顺序、选择和循环这三种控制结构进行连接,并且每一个代码块只有一个入口和一个出口,则称这个程序是结构化的。

相关文档
最新文档