软件工程复习思维导图(详尽版)上部分"/>
北邮果园(国院)电商大三下软件工程复习思维导图(详尽版)上部分
以下为思维导图的md格式,阅读起来会比较抽象。推荐大家将内容复制后使用xmind等软件,将其转化为思维导图形式阅读。详细操作可以参考
本思维导图按照ppt进行总结,一个部分对应一个ppt。
ps:有部分图片会缺失,可以ppt里寻找!
第一部分(从下一行开始复制)
# software process
## software process
### a set of structured activities that leads to the production of the software.
- requirement specification
- defining what the system should do
- Aim: a complete description of the problem and of the constraints imposed by/on the environment
- development
- Analysis
- Aim: analyse requirements to create a conceptual model of the software system.
- Design
- Aim: an implementable model of the software system.
- Architecture 系统依据结构被分解为组件
- implementation
- Aim: implementation of all design elements.
- 从组件规范开始 尊重设计
- Code should be well documented and easy to read,flexible, correct, reliable AND fully tested.
- validation
- test
- 单元测试
- 功能测试
- 集成测试
- 系统测试
- acceptance testing
- development
- avoid outage
- 安装在计算机或者deploy到服务器
- live testing in real environment
- document and manuals
- Training
- evolution
- Aim: keeping the system operational after delivery to the customer; changing the system in response to changing customer needs.
- Corrective
- fault的识别和排除
- Adaptive
- 适用于多个系统
- Perfective
- 新功能提升性能
- Preventive
- usability和maintainability
## software process models
### waterfall model
- Seperate and distinct phases
- 好处
- 好监管process
- documentation is well produced
- Structured approach
- 每个环节可以用专业团队
- 问题
- 难以适应变化
- 浪费时间
- global understanding影响力小
- non-realistic
- 适合的情况
- 需求基本不变
- 已有系统改进改编
- 高风险,安全最重要的系统
### Evolutionary development 演化式开发
- Activities are interleaved
- 快速反馈
- 通过迭代完善
- 完成一个comprehensive产品不可能
- 只有core function 没有extension
- 核心功能缓解商业压力
### The rational unified process 合理的统一过程
- 四个阶段
- inception 初始阶段
- feasibility and feature scope
- elaboration 精进
- architecture、plan、risk
- construction(iterative)
- bata system
- transition
- introduce it to users
- 好处
- generic
- separation of phases and workflows
- 坏处
- overhead 开销
第二部分:
# Agile
## Rapidly SD
### 没有稳定consistent 系统要求
### 软件产出要快 甚至可以质量低一点
## agile process
### The processes of specification, design, implementation and testing are concurrent
### 没有细节的规范
### documentation is minimized
### Develop in a series of increments 每个用户evaluate increment 并给予proposal
### end user is involved
- User interface 使用 interactive development system
- 随开发随体验
### 专注于code
### 基于iterative approach
### deliver working software quickly 并快速evolve来满足需求
### 轻量、简化
## Agile team
### 各司其职、多种角色
### easy communication
### collective code ownership
### common vision
### pace and standard
## 步骤
### plannning
- Emphasis on steer 强调引导
- release planning
- 由customer priority 和 feature difficulty 决定release content
- iteration planning
- two week delivery cycle
### user story
- 表达用户需求
- break down into implementation task
- 计划和成本估计的基础
- 通过优先级与时间确定接下来要干的故事
### Design improvement
- simply design and refactoring
- remove duplication
- 增加cohesion
- 降低coupling
## extreme programming
### work in pairs
- common ownership
- spread knowledge
- 多人审查
- encourage refactoring
- development productivity
### 先写测试
### 每个bulid都要测试通过了可以
### TDD
### 多integration
### 多release提升business value
## 问题
### keep customer interest
### team member may be unsuited to intense involvement
### contract
### 许多stakeholder情况下难确定priority
### 保持simplicity需要更多工作
## 合适项目
### 中小型项目
### 需求不明确或者老变
### rapid delivery
### customer involvment
### 没有external rules affect software
第三部分:
# requiremnt
## 定义
### a feature that your system must have in order to satisfy the customer.
- high-level abstract statement
- low-level detailed specific system constraint
## 提供者
### customer
### end user
### development team members
### management
### Technology providers
### market demand
## 理解需求是最难的,用户不知道需求,并且需求不断变
### 决定干什么是最难的
## requirement engineering
### 帮助更好理解问题
### stakeholders参与
### 省钱省时间
## 需求分类
### functional requirement
- service
- 问题:imprecision 问题描述会存在误解
- completeness:对项目完整描述
- consistency:描述不存在冲突
### non- functional requirement
- product requirement
- organisational requirement
- external requirement
## requirement conflict 需求冲突
### 需要trade-off
## requirement document
### software requirement specification
- The official statement of what is required of the system developers.
- 系统该做什么
## requirement capture 需求采集
### starting point 起点
- 每个项目起点不同
- 需要什么系统
- 这个系统被哪个组织需求
- 技术
- Determine boundary and interfaces.
- Elaborate functions, features, behaviours 详细阐述功能等
- Identify data, data transformations.
### fact-finding techniques
- background reading
- 多了解这个系统的目标公司或部门
- 公司报告
- 组织结构图
- 。。。
- interviewing
- 专注采访的角色
- 专注于识别用户完成的任务
- 从开放问题到特定问题
- observation
- 观察系统用户
- 提供更好的理解
- 用户不同结果可能被distorted(扭曲)
- document or record sampling
- 获取资料(details)
- 鉴定系统需要的patterns
- Developer should be aware that the existing forms may not be the best way to model the new system.
- 适合non-fuctional requirement
- questionnaire
- The aim of questionnaire design is to pose questions where misinterpretation is not possible and there is no bias
- 经济 economical way
- analysed by computer
- questionnaire fatigue 问卷疲劳
- 不好写一个好的问卷
第四部分:
# requirements in agile
## user stories
### In Agile process, user requirements are expressed as user stories.
- a series of conversations about the desired functionality.
### 用户依据proirity和schedule estimate选择下版本的story
- 团队将其分解为implementation task
- 其为schedule和cost的estimate
### As a
I want
so that
### 重点不是写feature是discussing他们
### non-functional requirement也可以写成story
### 谁都可以写story
## project glossary 项目术语表
### 统一key terms 并解决synonyms and homonyms(同义词和同音词)
## epcis
### 无法在一次iteration中完成
### 拆分为许多小用户故事
## acceptance criteria
### Acceptance Criteria is simply a high-level acceptance test that will be true after the agile user story is complete.
### 写在story后面保证story被充分理解
### 让客户看看有没有价值
## backlog 待办事项
### 未来要加入的功能
### story间proirity
- 依据bussiness value(通过return on investment反应)
- consider risk
## MoSCoW
### A method of prioritisation favoured by the DSDM (dynamic systems development method).
### 将优先级分为:
- Must have 没有工作不了
- should have 重要但是如果时间、resource有限可以omit(省略)
- could have 增强系统但是不着急
- want to have 只有一部分人需要
## estimating
### 要干多久
- small medium …
- Ideal time
- Hours
- Story point
- Fibonacci sequence
- Abstract and negotiable
## prototyping
### physical user-interface design 画出来
- low-fidelity prototyping(低保真度)
- sketch(草图)
- early conception
- 投资少
- 早失败早重来
- medium-fidelity prototyping
- interaction and navigation of the app
- Usually built upon storyboards or user scenario
- high-fidelity prototyping
- UI 和user experiece 用计算机实现
### logical user-interface design
- 需要什么元素
- 元素间关联
- 长什么样子
- 怎么实现
第五部分:
# Analysis
## 什么是essential
### gather requirment
- analysis in real world context
- develop the architecture
- textual analysis
- 需求中的名词
- entities and concepts
- applicaion domain
- experience
- 过去的系统
## 为什么分析
### Focus shifts to developer and system internals.
### 改进需求
### Aim: precise understanding of requirements.
- Process of structuring requirements
- understand
- change
- reuse
- maintian
### 主要被开发人员使用 提供系统内部视图
## conceptual modelling
### Structured by stereotypical classes and packages. 由定型的类和包构
使用uml描述
- A conceptual model aims to identify the individual concepts (classes) which exist within a problem domain.
- analysis class
- entity class
- Used to model information that is long-lived and persistent
- 系统依靠的信息
- 存储并操作数据
- 在内存中展示数据库中数据
- boundary class
- model the interaction.
- 处理输入输出与系统其余部分连接
- abstraction of interface 界面的抽象
- control class
- Used to encapsulate control and coordination of the main actions and control flows. 用于封装控制和协调的主要行动和控制流。
- Represent coordination, sequencing, transactions and control of objects. 代表协调、排序、事务和对象的控制。
- Deal with performing tasks, getting/setting data and coordinating behaviour. 处理执行任务、获取/设置数据和协调行为。
- attributes
- Attributes are descriptions of a particular data item maintained by each instance of a class.
- 分析中只有名字和类型
- 设计中加入syntax(句法)
- operation
- Operations are abstract specifications of a class's behaviour.
- 一个operation只有一个功能
- op的功能应该被记录
- class relationship
关系提供沟通途径
- association(因果关系)
- An association is a bidirectional semantic connection between classes(双向语意链接)
- name
- role
- multiplicity
- inheritance
- generalisation 归纳(向上)
- specialisation 专业化(向下)
## Function realisation
### Outlines how to realise the functionality within the system.
## 类和对象
### Objects are entities that model some concrete or conceptual entity inside the system. 具体的或概念性的实体
### class is an abstraction of an object.
## 分析步骤
### Identify Entity, Boundary and Control classes
### Identify class relationships
### A conceptual class diagram
### Identify attributes for each entity class
### Add constraints
第六部分:
# design
## Creative work——-how(developer)
### Purpose : how something will work
- Software design is the process of planning how to solve a problem through software.
### 为implement提供足够的信息
- 解决方案的蓝图
- Design transforms the analysis model into a design model that serves as a blueprint for software construction.
- 需要考虑非功能需求
- break down the overall task
- 创造一个系统的skeleton
### 不同类型的design
### 细节程度不同
## 高质量设计
### 完成需求
### well structured
### be modular
### well documented
### Contain distinct representations of data, architecture, interfaces, and components
### be maintainable
### be traceable
### be efficient
### error free
## abstraction
### abstract class
- can have implementation code
- A class can inherit from a single abstract class
- If (almost) all classes implementing the behavior would have the same code, then you can use an abstract class to implement it.
### interface
- cann‘t have implementation code
- A class can implement multiple interfaces
## encapsulation
### Restricting of direct access to some of an object's components
### Bindling of data with the methods that operate on that data
## modularity
### Separate the functionality of a program into independent, interchangeable modules
### 只execute one aspect of the desired functionality
### module interface 表达了模块需要和提供的元素
### 接口中定义的元素可以被其他模块检测到
## coupling
### The number of dependencies between subsystems.
### strengths of interconnections
- tight 紧密
- loose 宽松 好
- minimise the impact on errors or future change
## cohesion
### The number of dependencies within a subsystem.
### level of functional integration within a
module.
- high
- All parts of the component should contribute to its logical function.
- If it is necessary to change the system, then everything to do with the component is encapsulated in one place.
- low
## refactoring
### 先让代码跑起来
### 然后保证代码clean
- 没有dupilcate code
- clean and expressive
### 经常审视改变代码,但是不变external behavior
### 目的是改善非功能属性
## 面向对象编程的优势
### 更好maintenance
- 对象间独立且可以被理解为独立的实体
### object是reusable component
### 有显示实体的映射(mapping)
## step
### 基于conceptual class diagram
### 鉴别class relationship:联合、generalisation
### identify operations
### 描述方法
### capture implementation 需求
### 产生详细的design class diagram
第七部分:
# implementation
## mapping design to code
## 目标
### 以组件形式实现系统
### 系统的实施是一个连续的可管理的小步骤
- 每个组件都可以被测试然后集成
### The system is distributed by mapping executable components onto nodes in the deployment model 系统是通过将可执行的组件映射到部署模型中的节点上而分布的。
- 主要基于设计期间发现的活动类
## component
### Physical packaging of model elements
### stereotype架构
- executable
- file
- library
- table
- document
## implementation system
### consist of components, interfaces, and other subsystems.
### 取决于packaging mechanism
## build
### 系统以可管理的步骤构建,需要集成测试
### is an executable version of the system
### version control
## Integration Build Plan
### describes the sequence of builds required in an iteration.
### 预期功能
### 预期功能需要哪些subsystem和component
## 将设计转化为代码
### 类定义
- 提供类名、属性、操作
### 方法定义
- Parameters, return type, method decomposition.
- Show the sequence of messages
## oo编程没有assosiation
### references
- one object stores a handle to another object.
- unidirectional 单向的
### collections
- reference to several objects can be stored and ordered.
## steps
### 从least coupling到most coupling
第八部分:
# testing
## 什么是testing
### 找对客户重要的error
### 系统无法被完全测试
- 测试isn't decidable
- 时间budget限制
### 耗时最长
### 目标:通过测试每个软件构建测试每个implememtation stage
- internal build
- intermediate build
- system builds
## 谁来测试
### component
- 开发者
- delivery驱动
### integration
- 独立的测试工程师或者团队(理解系统)
- 质量驱动
## 目标
### 验证性测试 validation testing
- demonstrate 软件达到需求
- 客制化:实现每个需求
- general:实现每个系统feature
### 缺陷测试 defect testing
- failure
- 与要求的behavior不一样
- error
- 放任会得到failure
- defect
- mechanical cause of an error
## test policies
### 不可能把系统全测一遍
### Test should be based on a subset of possible test cases.
### 其是一个选择系统测试的方法
## 好的测试
### 高可能性找到error,需要建立在理解系统的基础上
### 不要redundant
### best of breed,用发现错误可能性最大的测试
### 不能太简单或者太复杂
## 测试过程
### unit testing
- 组件测试
### system testing
### acceptanc testing
- 模拟实际操作环境
## 测试战略
### • What tests to run
• How to run them
• When to run them
• How to determine whether the testing effort is successful
## test case design
### a set of tests that are effective in validation and defect testing.
### 高可能性发现问题
### systematically 进行 系统的进行
### disciplined techniques来设计(规范技术来设计)
## 测试程序
### reuse很重要 依据scenario小改
### 具体程序,怎么输入
## 测试技术
### 黑盒测试
- 测试软件功能需求(行为测试)
- partition testing 分区测试
- 可以用于组件或者系统测试
- Input data and output results often fall into different classes where all members of a class are related:
- scenario-based testing
- 测试需求是否被满足(validation testing)为每个需求写一个测试
- 系统测试
- regression testing 回归测试
- 集合测试
- 每个测试阶段把所有测试跑一遍确保没有相互干扰
### 白盒测试
- 测试软件内部逻辑(基于组件)
- ensure that all statements and conditions have been executed at least once.
- 测试所有独立路径
- Cyclomatic Complexit等于条件数加1
## 测试步骤
### 每个开发步骤中都应该使用白盒测试来进行单元测试
- 建立一个测试harness
- 测试方法是否符合预期
- 是否robust
### 用黑盒进行集成测试
第九部分:
# TDD
## 定义
### define both interface and a specification
### clarify the requirement
### Incremental test development from scenarios
### 每次新版本都用Automated test测试所有component
### user involvemnet (acceptance test)
## 先写测试
### 经常对系统运行所有测试
## 步骤
### 用代码写一个规范,其验证代码的一个功能
### 证明测试失败
### 写代码来实现规范
### 证明测试成功
### 重构代码保证干净
更多推荐
北邮果园(国院)电商大三下软件工程复习思维导图(详尽版)上部分
发布评论