文章目录
- 第一章 概述(Introduction)
- 第二章 过程和生命周期(Modeling the Process and Life Cycle)
- 第三章 规划和管理项目(Planning and Managing the Project)
- 第四章 需求分析(Capture the Requirements)
- 第五章 设计体系结构(Design the Architecture)
- 第六章 模块设计(Design the Modules)
- 第七章 编程(Writing the programs)
- 第八章 测试程序(Testing the Program)
- 第九章 测试系统(Testing the system)
- 第十章 交付系统(Delivering the System)
- 第十一章 维护系统(Maintaining the System)、
- 总结
第一章 概述(Introduction)
1、软件 = 程序 + 数据 + 文档 program(instruction) , data(structure) and documents
2、软件工程:使用 系统的,有规律的,可测量的方法去开发,运行,维护软件。
Software engineering means the application of a systematic , displined and measureable approach to the development , operation and maintenance of software.
3、三个模型(常考选择题,22级考)
The McCall’s quality model concerns the quality of the software product 关注软件产品的质量
CMM concerns the quality of the process of development software product 关注软件产品开发过程的质量
ROI concerns the quality of the context of the bussiness environment 关注业务环境的质量
4、谁做软件工程:customer (consumer)+ developer + user 消费者+开发者+用户
5、系统是对象和活动的集合,加上对象和活动之间关系的描述。
system is a collection of objects and activities, plus a description of the relationships that tie the objects and activities together.
6、任何要设计的实体,我们都必须做分析,设计,施工,验证和管理
Any entity to be engineered ,we must do analyst , designer, construction, verification and managment
7、什么是软件工程:软件工程是用计算机或计算机技术来求解实际问题的研究或实践。计算机科学家研究计算机的结构及理论,以及计算机的功能,而软件工程是计算机科学的一部分,因为软件工程师应用计算机科学研究的成果来构建工具和技术以满足客户的需求。
8、软件开发步骤:需求分析和定义、系统设计、程序设计、程序实现(编程)、单元/集成测试、系统测试、交付系统、系统维护
第二章 过程和生命周期(Modeling the Process and Life Cycle)
1、过程是一系列的顺序任务,过程 = 步骤 —— 包含:活动 + 约束 + 资源
We can think a set of ordered tasks as a process, a series of steps , including activities , constrains and resources
2、当过程涉及到构建某些产品时,我们有时将过程称为生命周期
When the process involves building of some product , we sometime refer to the Process as a lifecycle
3、软件的生命周期:概念、实现、交付、使用、维护
The life cycle of a software product include conception , implementation, delivery, use, and maintenance
4、软件过程模型(software process models)超级重点!!!(每一种模型的概念、特点以及优缺点,特别是优缺点全文背诵,22年考了瀑布模型的概念及优缺点)
-
瀑布模型 waterfall model
概念:瀑布模型包括需求分析,系统设计,程序设计,编码,单元和集成测试,系统测试,验收测试以及运维步骤。
The waterfall mode include requirement analysis, system design, program design, coding, unit & integration testing, system testing, acceptance testing ,and operation & maintenance steps.
特点:有效性确保系统已实现所有要求,但验证可确保每个函数正常工作。
The validation ensures that the system has implemented all of the requirement, But the verification ensures that each function works correctly.
优点:(1)可强迫开发人员采用规范化的方法
(2)严格地规定了每个阶段必须提交的文档
(3)要求每个阶段交出的所有产品都必须是经过验证的
缺点:(1)由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要
(2)只适用于项目开始时需求就已经确定的情况
-
V模型 V model
概念:V模型更明确地说明了瀑布模型中隐藏的一些迭代和返工,是瀑布模型的变种
The V model makes more explicit some of the iteration and rework that are hidden In the waterfall
特点:(1)采用参与测试来验证程序设计
(2)采用集成测试来验证体系结构设计
(3)采用验收测试来确认需求
(4)验证过程中发现问题即可在执行后续测试步骤前重新执行左边步骤对软件修正
-
原型化模型 prototyping model
概念:在需求分析阶段对软件进行初步的分析和定义,快速开发出简单的软件原型并向用户展示,用户对软件原型进行测评后进一步提出进要求,开发人员的原型修改到用户满意为止。因此原型模型的开发更能符合需求,适合市场导向(market-driven)的产品。
A prototyping model is a partially developed product that enable customers and developers。 To examine some aspect of the proposed system and decide if it is suitable or appropriate for the final product.
优点:(1)有助于满足用户的真实需求
(2)原型系统已经通过与用户进行交互而得到验证,据此产生的规格文档能正确描述用户的需求
(3)软件产品的开发基本上是按线性顺序进行
(4)建造出原型系统后,开发人员可以加速软件开发的过程,节约软件开发成本
-
增量模型 incremental model (画大饼模型zzz)
增量:将系统功能划分为诸多子系统,先开发具有一个小功能的子系统,之后不断在子系统上增加新的功能来逐渐满足所有需求
迭代:第一次提交的产品就是一个完整的系统,之后在该系统的基础上不断修改,不断开发出新的版本,但是每个版本都是完整可运行的版本
优点:(1)能在较短时间内向用户提交完成一些有用功能的工作产品
(2)逐步增加产品的功能可以使用户有较充裕的学习时间和适应新产品
(3)项目失败的风险较低
(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来,这意味着最重要的部分将接受最多的测试
缺点:(1)与其他模型相比需要更精心的设计
-
螺旋式模型 spiral model
概念:瀑布模型与原型模型的组合,既可以周期性地验证客户的需求,又可以分阶段进行开发工作,能保证软件在遇到较大风险时停止,大大增强了软件的风险防控能力。但是过程很复杂,需要开发人员有丰富的风险评估能力和专业知识,适合大型项目的开发。
The spiral model combine the development activities with risk management to minimize and control the risk control。
优点:(1)对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标
(2)减少了过多测试或者测试不足带来的风险
(3)维护只是模型的另一个周期,因此在维护和开发之间并没有本质区别
缺点:(1)要求开发人员必须具有丰富的风险评估经验和专门知识
第三章 规划和管理项目(Planning and Managing the Project)
底下1-5理解即可感觉不常考
1、项目进度表通过列举项目的阶段,并将每个阶段分解成独立的待完成的任务或活动,来描述一个特定项目的软件开发周期。
A project schedule describes the software development cycle for a particular project by enumerating the phases or stages of the project and breaking each into discrete tasks or activities to be done.
2、计划是一个时间线,显示活动何时开始和结束,以及相关开发产品何时准备就绪。
The Schedule is a timeline that shows when activities will begin and end, and When the related development products will be ready.
3、交付物,即客户希望在项目开发期间看到的项目。
The Deliverables , that is the item that the customer expects to see during project development.
4、活动是在一段时间内发生的项目的一部分
An activity is a part of the project that takes place over a period of time.
5、里程碑是一个活动的完成,一个特定的时间点。
A milestone is the completion of an activity,a particular point in time.
6、关键路径方法 Critical Path Method 必考大题!!!!一定要弄懂,具体怎么做看笔记
7、交流线 lines of communication :如果一个工作中有n个人,那么一共有n(n-1)/ 2条交流线
8、个性 characteristics :Extrovert(外向)Introvert(内向)Intuitive(直觉 Rational(理智)
9、组织形式:(选择题)
首席程序员团队 chief programmer team:高效的组织方式
适用于:大项目 large scale,高确定性 high certainty,重复性 repetition
无私的方法??? egoless approach
适用于:小项目 small scale,新技术 new technology,不确定性 uncertain
10、
(要知道每个模块包含什么,特别是风险评估)
风险评估 risk assessment、风险识别 risk identification、风险分析 risk analysis、风险分级 risk prioritization、风险控制 risk control、减少风险 reduce risk、风险管理计划 risk management planning、风险解决 Risk resolution
11、Give some diliverables:列出一些可交付物
文件
功能演示
准确性演示
子系统演示
可靠性、性能或安全性演示
12、Briefly describe the characteristic of software development team’s individual:描述软件开发团队个体的特征
执行工作的能力
对工作的兴趣
使用类似工具或语言的经验
类似技术的经验
具有类似开发环境的经验
训练
与他人沟通的能力
第四章 需求分析(Capture the Requirements)
1、需求是期望行为的一种表达。
A requirement is an expression of desired behavior
2、The process for capturing the requirement has four steps, there are elicitation,analysis , specification,and validation。
捕获需求的过程有四个步骤,分别是抽取、分析、规范和验证。
3、There four type of requirement, they are the fundmental requirement , Quality requirements/nonfunctional requirements, design contraist and process constraist.(了解四种需求的概念,选择题可以判断,22年考了简答题,其对应的概念以及举例)
功能性需求
系统应与外部系统 X 通信。 System shall communicate with external system X.
必须满足哪些条件才能发送消息。 What conditions must be met for a message to be sent.
非功能性需求(质量需求)
在初始日期后不超过4小时分发的薪水支票将被读取。 Paychecks distributed no more than 4 hours after initial date are read.
系统限制高级管理人员的访问权限。 System limits access to senior managers.
设计约束 接口与组件限制设计
过程约束 技术和资源限制
4、用户、设计者、测试人员是需求文档的直接使用者,而程序员不是。
Users, designers, and testers are direct users of requirements documents, not programmers.
5、需求的特性:
correct、consistent 一致性 、ambigious 模棱两可的、complete、feasible 可行的、relevent 相关的、testable 可测试的、traceable 可追踪的 、unverifiable 无法验证的
6、Requirement Modeling notations 需求建模符号 必考大题!!(知道每一种建模符号的概念以及对应的uml图。22年考的是建模题,第一问好像是数据流建模,第二问是让你画uml的序列图…我没写出来)
-
Entity-relationship diagrams(ERD/E-R)
表示概念模型的一种方法,包含实体,联系,属性三个要素。对应UML中的类图。
A way to represent a conceptual model that contains three elements: entity, relationship, and attribute. Corresponds to a class diagram in UML.
-
Event traces 事迹追踪
对现实世界实体之间交换的事件序列的图形描述。对应UML中的序列图。
A graphical description of the sequence of events exchanged between real-world entities. Corresponds to a sequence diagram in UML.
-
State machines 状态机
系统与环境之间所有对话的图形化描述。对应UML中的状态图。
A graphical description of all conversations between the system and the environment. Corresponds to a state diagram in UML.
-
Data-flow diagrams (DFD) 数据流图
对功能以及从一个功能到另一个功能的数据流建模。对应UML中的用例图
Model features and the flow of data from one feature to another. Corresponding to the use case diagram in UML
7-10为大题考察可能性较低,了解即可
7、Briefly describe the functions of the two approaches of prototyping.
一次性原型是为了更多地了解问题或建议的解决方案而开发的软件,它绝不是交付软件的一部分。
throwaway prototyping:A throwaway prototype is software that is developed to learn more about a problem or about a proposed solution, and that is never intended to be part of the delivered software.
进化原型是一种软件,开发它不仅是为了帮助我们回答问题,而且是为了整合到最终产品中。
evolution prototyping:an evolutionary prototype is software that is developed not only to help us answer questions but also to be incorporated into the final product.
8、Briefly describe the function of the four types of the requirement.
functional requirement:describes required behavior in terms of required activities
根据需要的活动描述需要的行为
qualtity requirement:describes some quality characteristic that the software solution must possess
描述软件解决方案必须具备的一些质量特征
process constraint:a restriction on the techniques or resources that can be used to build the system
对可用于构建系统的技术或资源的限制
design constraint:a design decision, such as choice of platform or interface components, that has already been made and that restricts the set of solutions to our problem
一个已经做出的设计决策,例如平台或接口组件的选择,它限制了我们的问题的解决方案集
9、Briefly describe the roles of the seven groups of stakeholders.简要描述七组利益相关者的角色
客户:谁是为要开发的软件付费的人
客户:软件开发后购买
用户:使用系统
领域专家:熟悉软件必须自动化的问题
市场研究人员:进行调查以确定未来趋势和潜在客户
律师或审计师:熟悉政府、安全或法律要求
软件工程师或其他技术专家
10、Briefly describe the functions of three core construct of ERD.
entity:represents a collection (sometimes called a class) of real-world objects that have common properties and behaviors.
表示具有公共属性和行为的现实世界对象的集合(有时称为类)。
relationship:an edge between two entities, with a diamond in the middle of the edge specifying the type of relationship
两个实体之间的边缘,边缘中间的菱形指定关系类型。
atrribute:an annotation on an entity that describes data or properties associated with the entity.
实体上的一种注释,用于描述与该实体相关联的数据或属性。
第五章 设计体系结构(Design the Architecture)
1、软件体系结构=构件,连接件,约束
component(构件)、connector(连接件)、constraint(约束)
2、体系结构样式 Architecture styles 小重点!(选择题可以判别是哪种体系样式结构,这个好像考了选择没考简答)
-
pipes and filers 管道和过滤器
每个模块都有一组输入与输出,可做编译器(compiler)
-
Publish-subscribe 发布-订阅
在发布-订阅体系结构中,订阅组件通过它表达对事件的兴趣。当另一个组件发生该事件时,订阅组件将得到通知。组件component
-
Client/Server 客户端/服务端
在客户机-服务器架构中,服务器组件提供服务,而客户机使用请求/应答协议访问它们。
-
Repositories 存储库架构
用于数据存储、搜索引擎 search engine 、库 libraries 等
-
peer-to-peer
在对等体系结构中,每个对等点作为它自己的进程执行,并且作为其他对等组件的客户端和服务器。
-
layering 分层体系
High levels of abstraction 高级抽象
第六章 模块设计(Design the Modules)
1、六耦合 coupling 超级重点!!!(知道构建耦合概念,可以列举六耦合名称,选择题可以判别是那种耦合,22年考了简答,列举几个耦合类型并解释)
构建耦合 component coupling :两个构件之间相互依赖或者相互作用的程度的度量
- Content coupling 内容耦合 :一个模块直接使用或者修改另一个模块内部的数据,或者通过非正常的入口,直接进入另一个模块的内 部。比如在某个组件的分支操作,直接进入到了另一个组件之中(one component branches into the middle of another component)。
- Common coupling 公共耦合:几个模块对一个公共的数据区域进行数据上的操作
- Control coupling 控制耦合:一个模块通过传递参数,或者函数的返回值来控制另一个模块的行为
- Stamp coupling 特征/标记耦合:复杂的数据结构在模块之间传递 当复杂的数据结构在模块之间传递时,我们说模块之间存在图章耦合
- Data coupling 数据耦合 几个模块共享几个数据的值 if only data value, and not structured data, are passed, then the modules are connected by data coupling .
- Uncoupled 无耦合
2、七内聚 cohesion 超级重点!!!(知道构建内聚概念,可以列举七内聚名称,选择题可以判别是那种内聚)
构建内聚:一个构建功能强度的度量
- Coincidental cohesion 巧合内聚:模块之间毫无关系,相互之间是松散的
- Logical cohesion 逻辑内聚:逻辑内聚力,如果它的各个部分仅通过其代码的逻辑结构相关。 例如 if-else
- Temporal cohesion 时间内聚:一个模块完成的许多功能必须在相近的时间点完成,比如系统的初始化,这些功能通过时间因素关联在 一起。
- Procedural cohesion 过程内聚:允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递
- Communication cohesion 通信内聚:一个模块的所有成分都操作同一数据集或者生成同一数据集 data set
- sequencial cohesion 顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一功能元素的输出就是下一功能元 素的输入
- Functional cohesion 功能内聚:一个模块中包含对单个函数至关重要的所有元素,而该模块的所有元素对该函数的性能都至关重要。
第七章 编程(Writing the programs)
1、即使在编写代码本身时,许多人也会参与其中,并且需要合作和协调
Even when writing the code itself, many people are sually involved, and a great deal of coorperation and coordination is required
2、程序三要素:控制结构 Control Structural 算法 Algorithm 数据结构 Data Structure
3、文档 Documentation(要知道标题注释块包含的内容)
第八章 测试程序(Testing the Program)
1、测试步骤 testing steps (重点,理解并记住,大题,选择):单元测试和集成测试后进行系统测试,系统测试包含四个步骤
-
单元测试 unit testing :测试单个模块
-
集成测试 Integration testing :测试集成的模块
-
系统测试 System testing :测试整个软件系统
- 功能测试 function test:检查集成的系统是否按照需求中指定的那样执行它的功能
- 性能测试 performance test :将集成的构建与非功能呢个需求进行比较
- 验收测试 acceptance test:客户参与的测试,目标是确保系统复合它们对需求的理解
- 安装测试 installation test :在实际运行环境中的测试
补充知识点:回归测试 regression test:回归测试适用于新的版本或发布的一种测试,以验证与旧版本或发布相比,他是否仍然以同样的方式执行相同的功能。由于在测试过程中可能在修复已有故障的同时引入新的故障,故需要进行回归测试。
2、 测试技术 Testing techniques(选择)
穷举测试 exhaustive test
3、代码审查 code review(重点,会考大题)
代码走查:程序员向评审小组提交代码及其相关文档,然后评议小组评论其正确性。
代码审查:与走查类似但是更正式。按照一个事先准备好的问题清单来检查代码和文档
4、Logic flow :这个的解法很简单,就是找到所有可能走完的路径就行了。 (大题必考!!!!22年没考)
5、集成测试的几种方式 Integration testing(小重点,选择题)
-
自下而上的集成 Bottom-up integration
先测试软件最底部的各个独立组件再向上测试集成的组件。测试每一个集成的组件都要连带其下所属的 底层组件一并测试一遍,即将他们看作一个整体进行测试。 需要注意的是这种测试需要为编写驱动(driver components)
-
自上而下的集成 Top-down integration
测试主控模块,由桩模块代替所有直属模块。利用广度优先遍历或深度优先遍历,从根节点开始向下遍历,遍历结点的顺序就是测试的顺序。
-
大爆炸集成 Big-bang integration
类似于黑盒测试,直接将所有组件组装成一个整体,对整个系统进行测试。
-
三明治集成 Sandwich integration
目标层(中间层)的选择问题。混合使用自底向上和自顶向下的测试方式,先采用自顶向下测试单个组件,再利用自底向上将已测试的 单个组件组装成一个整体测试。
eg:
第九章 测试系统(Testing the system)
1、性能测试的种类 Types of performance testing(选择题居多,也有答题,要理解概念;回归测试概念考过简答)
- 压力测试 stress test :在常规条件下运行软件,而是在计算机数量较少或系统资源匮乏下测试软件的性能,通常测试的 资源包括内部内存、CPU可用性、磁盘空间、网络带宽
- 容量测试 Volumne test:产生大量测试数据来测试软件某项指标的极限值,在给定时间内能够处理的最大负载量,从而让开 发商和用户了解该软件系统的承受能力或提供服务能力。
- 配置测试 configuration test:对电脑硬件的测试,通过对被测系统的软硬件环境进行调整,了解各种不同环境对系统性能的影响 程度,进而找到系统各项资源的最优分配原则。
- 兼容性测试 compatibility test :检查软件之间能否相互正确地交流共享信息。测试内容主要为不同软件版本的兼容性;不同操作系 统下软件的兼容性;新旧数据之间的兼容性等。
- 回归测试 regression test :回归测试是用于软件新版本的一种测试,在修改了旧代码后,重新对相同的功能进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。 由于在正常情况下,对旧代码的修改往往会引入新的错误,因此回归测试的很必要的
2、可靠性、可用性和可维护性 Reliability, availability, and maintainability(超级重点!!大题选择题)
可靠性:指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率
Mean Time To Failure R = MTTF/(1+MTTF)
可维护性:在给定的使用条件下,在规定的时间间隔内,使用规定的过程和资源完成维护活动的概率
Mean Time between Faulure A = MTBF(1+MTBF)
可用性:在给定的时间点上,一个系统能够按照规格说明正确运作的概率
Mean Time to Repair M = 1/(1+MTTR)
第十章 交付系统(Delivering the System)
没啥重点,略过
第十一章 维护系统(Maintaining the System)、
1、Four types of maintenance activities (重点,选择,22年考了大题好像)
-
Corrective maintenance 改正性维护
为了控制日常系统功能,维护团队对故障引起的问题做出响应。这种维护称为纠正性维护。
-
Adaptive maintenance 适应性维护
保持对系统修改的控制 假设现有的数据库管理系统升级到新版本,这种维护称为适应性维护。
-
Perfective maintenance 完善性维护
完善现有功能 如果客户想添加新功能,这种维护称为完善维护。
-
Preventive maintenance 预防性维护
防止系统性能下降到不可接受的水准
总结
概念性的东西比较多,需要背诵。22年选择题考的比较怪反正,有几题我是蒙的,简答题如果上述都掌握完全没有问题,建模题就是Requirement Modeling notations 需求建模符号 那一部分,建议把ppt和书上的图都看一下。大题是一个判定表和关键路径。