北邮果园(国院)电商大三下软件工程复习思维导图(详尽版)上部分

  以下为思维导图的md格式,阅读起来会比较抽象。推荐大家将内容复制后使用xmind等软件,将其转化为思维导图形式阅读。详细操作可以参考https://zhuanlan.zhihu.com/p/267234783

  本思维导图按照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)

## 先写测试

### 经常对系统运行所有测试

## 步骤

### 用代码写一个规范,其验证代码的一个功能

### 证明测试失败

### 写代码来实现规范

### 证明测试成功

### 重构代码保证干净

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值