SE 复习列表

SE学习笔记

SE revision topics

根据老师给的复习列表和ppt

Project management

Team types and dynamics
PERT charts and critical path / slack time analysis
Risk analysis

Team types and dynamics (Lec 4)

Organization styles (Lec 4)

1.Democratic decentralized
民主下放,只有临时领导,适合小型项目

Structure: The team works as a collection of peers, with no formal leader. Temporary leaders may emerge from time to time as particular areas of expertise are required.

Benefit: A loose, informal style, which gives developers great freedom, so it is good for projects which require non-trivial research and creativity. The lack of top-level control implies that schedules may slip. There are many communication paths, so this is more suitable for small, tough projects.

2.Controlled decentralized
控制下放,有领导但还是靠团队解决问题

Structure: There is a defined leader who coordinate sactivity, but problem solving is a group activity . The team leader may partition work among subgroups. There is horizontal communication between the groups ,and vertical communication from groups to the leader.

Benefit: An organization that encourages group work and creativity ,but is mildly more rigid. Reliable software can be expected, particularly if the product is obviously modular.

3.Controlled centralized
集中控制,领导解决一切,适用于大项目
Structure: Every thing is managed by the leader . Most essential communication is between individuals and the leader.

Benefit : This organization has the benefit of great managerial control and little communication overhead .It is therefore suitable for straight forward but large projects.

Team type (Lec 4)

  • Business teams P16
    controlled decentralized team.指派了一个技术负责人来决定主要的技术决策。团队工作的其余部分由专业领域的专家组织。结构灵活,适用广泛。It does not reduce the communication overhead dramatically.。
  • Chief-Programmer teams P17
    First used by IBM in the 60s and 70s, Designed to take advantage of superstar developers,The chief programmer model places the superstar at the top of the hierarchy, 首席程序员完全负责整个项目, 团队的其他成员扮演辅助角色. Much less success for other companies
  • Skunkworks teams P18
    Crazy name, crazy structure, 完全不受约束的, 可以完全自由地进行开发,No quality system! No process! No management visibility… Such teams are essentially black boxes from the management point of view. This hands-off approach can lead to very high morale and creativity, but it is hard to monitor and control schedules.This is what academia is like 😃
  • Features teams P19
    传统结构组织,高沟通,从多个组中选拔成员
    The Features Team structure builds on a traditional basic structure of analysis, design, programming and QA groups, organized in hierarchies as usual.A collection of Feature Teams is then built by taking one or more members from each group. Each feature team is made fully and solely responsible for a particular chunk of product functionality.This is very good for empowerment: each team has all bases covered so can expect their decisions to be taken seriously. For the same reason, it leads to strong accountability: if a feature team does something wrong, there is nobody to point the finger at.There is a high communication overhead, because communication must take place between feature teams and within the traditional groups.
  • SWAT teams P20
    熟练使用高级工具 ,可能不会作为SWAT团队的全职工作,能能够非常快速地提出解决方案
    SWAT teams take their lead from the military “special weapons and tactics” teams. In software engineering, SWAT stands for “skilled with advanced tools”.A SWAT team consists of a few developers who all know a particular language, tool or application very well. They may not work full-time as the SWAT team, but are occasionally called upon to develop something in their specialist area in double quick time.On a tactical-execution project, a SWAT team may be able to produce solutions very quickly. Creativity is not expected -speed is.
  • Professional athletic teams P22
    不会在项目期间更改角色,有固定角色和组织人来决定角色
    This team structure has an analogy with sports teams. A football team has a collection of players with fixed roles: goalkeeper, centre backs, wing backs, midfield players and strikers. It also has a manager whose job is to select the team and coordinate their roles, but notto play football.In a tactical-execution project, this kind of team can be set up by choosing developers with strong individual talents and giving them each a specialist role to play. They will not change their role during the project, but will get on with their job until the product is ready.
  • Theatre teams P23
    可以自己尝试角色,该模式不善于利用个人长处。
    By contrast, in the theatre, actors audition and negotiate for their roles.A Theatre Team structure involves several individuals auditioning for a role on the project, which is overseen by a director. The director is responsible for the project’s conceptual integrity, and gives the project its focus.The main point which distinguishes such teams from business teams is that here the developers are explicitly encouraged to negotiate (audition) for the role they take, rather than always playing to their strengths. This can be good for morale and interest, but is not so good at exploiting personal expertise.Google is said to use auditions.

Group dynamics (Lec 4)

团队价值Division of labour, Cooperation ,Mutual learning ,Shared ,experience ,Support ,Social belonging ,Enjoyment ,Creativity ,Interaction
好的团队合作让任务更简单

PERT charts and critical path (Lec 3)

PERT (Lec 3)

Program Evaluation and Review Technique 是一种管理技巧 P11
PERT chart: “activity on arrow”

箭头,The tasks are shown by arrows. Task names are shown by letters, in this case.
节点,The circles are called nodes. The nodes indicate the startor endof tasks.
Task durations are the shown by the numbers.

PERT 做什么 It provides useful information: P14
1.Expected project completion time 预计项目完成时间
2.Critical pathactivities that directly impact completion time 关键路径活动直接影响完成时间
3.The difference in the latest and earliest finish of each activity is that activity’s slack 每个活动的最晚和最早完成时间取决于slack
4.Activities that have slack time and can lend resources to critical path activities
5.Activity start and end dates

PERT 怎么做 It provides useful information: P15
1.Estimate how longeach task will take 估计时间
2.Assign dependencies. If task A cannot begin until task B is complete, then A depends on B. 分配依赖关系
3.Assign deadlines to tasks as appropriate. 分配ddl
4.Draw a dependency networkfor the tasks.画依赖网络。
5.Calculate the earliest possible finishand latest allowable finishfor each task. 最早完成时间和最晚完成时间
6.Calculate the critical path, …and look at it in despair. 计算关键路径

Critical paths (Lec 3)

A critical path is a chain of tasks which must be completed on time if the project is to finish at the time predicted.
Critical path: path where any delay impacts on the overall timescale for the task
A task is on a critical path precisely when its earliest finish is the same as its latest finish: No slack!
If you change the PERT chart during the project, perhaps to reflect a missed deadline, new critical paths may emerge.
The project manager (and QA) will pay particular attention to the tasks on the critical path.

Risk analysis (Lec 2)

Risk management is the process of identifying risks and drawing up plans to minimise their effect on a project
Risk can impact:
– Resources and timescales
– Quality and performance of software
– Organisational stability

Risk types (Lec 2)

风险种类P16

Risk monitoring (Lec 2)

风险监控P19
定期评估每个已识别的风险,评估风险的影响是否已改变
Assess each identified risk regularly to decide whether or not it is becoming more probable.Also assess whether the effects of the risks have changed .Key risks should be decided at management meetings

Risk indicators (Lec 2)

风险指标P 20
risk indicators

Process models

Waterfall methodology – what is it and what projects is it suited for?
Agile – what is it and what projects is it suited for?
Agile – Extreme Programming/Pair wise programming/Scrum/sprints
Agile – user stories, task cards, the Agile manifesto

Waterfall (Lec 5)

Waterfall methodology – what is it and what projects is it suited for?
P4
It works well in the right circumstances, Where we can actually generate a full and proper set of requirements
客户知道他们要什么,并能够将其传达
创造力并不重要但是 strength of planning, delivery and reliability很重要
适合大型项目

Agile (Lec 5,6)

what is it and what projects is it suited for? (Lec 5)

The aim of agile methods is to reduce overheads in the software process (e.g. by limiting documentation) and to be able to respond quickly to changing requirements without excessive rework
减少软件过程中的开销,并能够快速响应不断变化的需求而无需过多的返工
适合小项目

Extreme Programming/Pair wise programming/Scrum/sprints (Lec 6)

  • Extreme Programming (Lec 5 P15)

Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.In XP, a customer or user is part of the XP team and is responsible for making decisions on requirements.

  • Pair wise programming (Lec 6 P8)

代码共有性
programmers work in pairs, sitting together to develop code.This helps develop common ownership of code and spreads knowledge across the team.It serves as an informal review process as each line of code is looked at by more than 1 person.It encourages refactoring as the whole team can benefit from this.Measurements suggest that development productivity with pair programming is similar to that of two people working independently

  • Scrum (Lec 6 P11)

The Scrum approach is a general agile method but its focus is on managing iterative development rather than specific agile practices.
The 3 phases of Scrum
–Outline planning phase where you establish the general objectives for the project and design the software architecture.建立项目的总体目标并设计软件体系结构。
–A series of Sprint cycles: each cycle develops an iteration of the system.Sprint周期
–Project close phase: documentation produced, produce user manuals and review lessons learned.制作了文档,制作了用户手册并回顾了所学到的经验教训

  • sprints (Lec 6 P19)
    冲刺周期,长度固定,对应版本
    Team organises itself

user stories, task cards the Agile manifesto (Lec 5)

user stories Lec 5 P19
task cards Lec 5 P20
manifesto Lec 5 P13

Requirements analysis

User requirements
System requirements – functional /non-functional / domain, mandatory and desirable
Requirements engineering and getting the requirements right. The spiral model
Domain requirements – what to do about them

User requirements (Lec requirement 1)

requirement could be quite a high level abstract statement of a detailed mathematical description, Describes some useful aspect of what we wish to achieve,Could for the basis for a legal contract and thus form part of a set of contractual undertakings
描述了希望实现的方面,可以作为合同的基础

Types of requirement (Lec requirement 1)

User requirements

Expressed by the end user in their own words. Written by the end user.

System requirements

写冲刺文档会用到
A structure document that lays out detailed descriptions of the system services and operational constraints. Will ultimately form part of a contractual relationship between end user and developer

  • Functional
    Services the system needs to provide, how it should react to particular inputs and how to behave in a particular situation
  • Non-functional
    Constraints such as languages, standards, timings
  • Domain
    Things to do with the environment in which this system will operate, and issues that we may not exactly have a full understanding of。
    What do we need to do to take this domain requirements into account
    可能要询问领域专家要求具体是什么
    Domain需求需要转换为Functional 和Non-functional

Design

Object oriented programming principles面向对象的编程原理
Cohesion, coupling, responsibility driven design, encapsulation, abstraction
UML – use cases, domain models, class diagrams, sequence diagrams, activity diagrams
Choosing classes for a sample problem

UML (Lec software design 1)

Unified Modelling Language
可帮助分析师了解系统的功能,并使用模型与客户进行沟通。

  • Context models
    how a system that is being modeled is positioned in an environment with other systems and processes.
  • Use case diagrams and sequence diagrams are used to describe the interactions between users and systems in the system being designed.
    Use cases describe interactions between a system and 外部参与者.
    sequence diagrams 通过显示系统对象之间的交互为这些序列图添加更多信息
  • Structural models show the organization and architecture of a system.
    Class diagrams are used to define the static structure of classes in a system and their associations

design examples (Lec software design 2)

At the component level: it should be clear how each component is supposed to function –allows us to develop unit tests
At the system level –allows us to define system level or release level tests

Design patterns

What are they and why are they useful?
Software design patterns
Architectural design patterns
Client server
3 tier and N-tier
Model View Controller

design patterns (Lec design patterns 1)

不是代码,流程图或算法,只是做某事的一种方式
Subject Observer pattern P8
Adapter pattern P11
Façade pattern P14
Bridge pattern P17
Composite pattern P19

Architectural design patterns (Lec design patterns 2)

一种在架构级别组织解决方案以使其有意义的方法
This has become increasingly important as software systems get ever bigger
•Some well known examples:
–Client server architecture
–N-tier architectures
–Model View Controller

Client server architecture(Lec design patterns 2)

Starts with one of the most important ideas in modern computing
CLIENT Request SERVER
SERVER Response CLIENT

3 tier and N-tier (Lec design patterns 2)

在这里插入图片描述
Web pages(html)显示给用户,获取信息以动态显示适当的网页
Apache server running PHP,提供网页,并连接到数据库以提供用户要求的内容,并在下订单时根据需要更新数据库。在Linux操作系统上运行
MySQL database 保持存储在表中的数据以及用于维护数据库状态的存储过程

The 3 tier model is just a specific case of the more general n-tier architecture
其基本思想只是将软件系统划分为一组相互通信的组件

Model View Controller (Lec design patterns 2)

Widely adopted architectural design pattern when there a software system has a non trivial user interface element
Particularly in computer gaming and mobile development
试图将软件系统划分为
Model:基础应用程序或业务逻辑
View :呈现模型可视外观的部分
Controller:接受用户输入并将其转化为模型操作的部分
Each component has a clear and dedicated purpose

Testing

Unit testing
Using Junit in the Java language, including how to write Java unit tests
System level testing
Other types of testing
Test driven development

Testing is intended to show that a program does what it is intended to do and to discover program defects before it is put into use.

Unit testing (Lec testing)

Testing individual components in isolation.
Defect testing process.

Units may be:对象中的方法,具有几种属性和方法的对象类,具有定义的接口的组合组件

  • Individual functions or methods within an object
  • Object classes with several attributes and methods
  • Composite components with defined interfaces used to access their functionality.

Junit (Lec testing)

用junit可以自动化测试
设置:使用测试用例初始化系统。
调用:调用要测试的对象或方法。
结果:将调用结果与预期结果进行比较。
•A setup part:–You initialize the system with the test case.
•A call part:–you call the object or method to be tested.
•An assertion part:–You compare the result of the call with the expected result. If the assertion evaluates to true, the test has been successful if false, then it has failed.

Test driven development (Lec testing)

Test-driven development (TDD) is an approach to program development in which you inter-leave testing and code development.
逐步开发代码,并对该增量进行测试。在开发的代码通过测试之前,不会继续进行下一个增量。
TDD was introduced as part of agile methods such as Extreme Programming. However, it can also be used in plan-driven development processes.
好处:
Code coverage
您编写的每个代码段都至少具有一个关联的测试,因此编写的所有代码都至少具有一个测试。
Regression testing
回归测试套件随着程序的开发而逐步开发。
Simplified debugging
如果测试失败,那么问题出在哪里就很明显了。新编写的代码需要检查和修改。
System documentation
测试本身是一种文档形式,描述了代码应该做什么。

Other types of testing (Lec testing)

Regression testing

Regression testing is testing the system to check that changes have not ‘broken’ previously working code.
手动测试regression testing很贵
自动化测试 简单又直接
每次对程序进行更改时,所有测试都会重新运行。
提交更改之前,测试必须“成功”运行。

User testing

user or customer testing is a stage in the testing process in which users or customers provide input and advice on system testing.
即使进行了全面的系统测试,用户测试也是必不可少的。

  • Alpha testing
    该软件的用户与开发团队一起在开发人员的站点上测试该软件。
  • Beta testing
    用户可以使用该软件的发行版,以允许他们进行实验并提出与系统开发人员一起发现的问题。
  • Acceptance testing
    客户对系统进行测试,以确定是否准备好被系统开发人员接受并部署

System level testing (Lec testing)

着重于发现系统中的错误(defect testing)
发布测试的目的是检查系统是否满足其要求(validation testing)
对代码级别不感兴趣,仅对整个系统感兴趣。
要写相关文档P22

React and React Native

What are they and what problems do they solve?
What kind of projects are they useful for?
Basic elements of React and React Native application
Node.js – what is it and why might it be useful?

React –a library for making interactive user interface components
React Native –a framework for building platform agnostic applications

React (Lec ReactIntro2021)

React is a fast-changing landscape,是一个用于构建用户界面的JavaScript库
React可用作开发single-page或移动应用程序的基础

  • React: A JS library
  • React element: an element that describes something that you want to see on the screen
  • React component: a function or a class that takes some input and returns a react element
  • JSX: JavaScript XML –allows you to create HTML in JavaScript with a low code overhead
  • Babel: A compiler that turns non JavaScript code (e.g. JSX, ECMAScript) into JavaScript for execution by browsers

ReactNative (Lec ReactIntro2021)

React Native is an open-source mobile application framework created by Facebook
React Native通常广泛使用JavaScript XML(JSX)
•JSX是JavaScript的语法扩展–
JSX使我们能够描述外观,并注释React组件
具有适用于React和React Native应用程序开发的标记集

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值