热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20162317《程序设计与数据结构》第二周学习总结

20162317《程序设计与数据结构》第二周学习总结泛型的研究泛型,即“参数化类型”。将类型由原来的具体的类型参数化,类似于方法中的变量参数࿰

20162317 《程序设计与数据结构》第二周学习总结

泛型的研究

泛型,即“参数化类型”。将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

列表的泛型

1062692-20170916173212828-601722183.jpg

在图中可以看到&#xff0c;list1并没有用“<>”来确定类型&#xff0c;这也意味着可以往list1可以输入任何类型的数据。如图&#xff0c;我往list1中add String类型&#xff0c;int类型都没有产生报错。而下面的list2已经用“<>”来限定了列表可以承载的元素类型。如图&#xff0c;我向listt2中添加String类型没有报错&#xff0c;但添加int类型就报错了。这就是列表的泛型。实际上&#xff0c;由于一切的类都是Object的子类

1062692-20170916173220641-1943164841.jpg

由图中可以看出&#xff0c;list3与list1的效果是一样的。

泛型的类

1062692-20170916173228063-1393696889.jpg

这是一个叫做FanXingLei的类&#xff0c;它里面只有一个变量还有对应的getter和setter两个方法。留意类中&#xff0c;类名开头有个的标志&#xff0c;变量和方法中的参数也是T类。那T类是什么类呢&#xff1f;&#xff1f;实际上就是泛型。

1062692-20170916173234313-1650078146.jpg

可以见到在FanXingLeiTest.java中调用了FanXingLei这个类&#xff0c;<>中的类型可以为Integer亦或是String类都没有什么关系&#xff0c;但输出对应自己的类型。若如f3和f4那样调用setInformation方法填入任何类型的参数都没有问题。这就是泛型类。

其他&#xff08;感悟、思考等&#xff0c;可选&#xff09;

虽说泛型增强的代码的灵活&#xff0c;但是还得尝试着去用&#xff0c;去实践。只有实践了才能消化这些知识。

学习进度条

代码行数&#xff08;新增/累积&#xff09;博客量&#xff08;新增/累积&#xff09;学习时间&#xff08;新增/累积&#xff09;重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周20/2201/320/40

** 团队学习&#xff1a;《构建之法》**

  • 合作分工大致内容框架提出问题

     Members  Chapters
     袁逸灏  第1、2、3章
     刘伟康  第4、5、6章
     刘先润  第7、8、9章
     马军  第10、11、12章
     刘诚昊  第13、14、15章
     莫礼钟  第16、17章

第 1 章 概论

  • 1.1 软件 &#61; 程序 &#43; 软件工程
    软件工程的核心部分&#xff08;狭义&#xff0c;广义&#xff09;、软件工程的地位、软件开发不同阶段的不同表现。

  • 1.2 软件工程是什么
    软件工程的定义、软件工程所包含的领域、软件开发的难点、工程的定义、软件工程并不等于计算机科学&#xff0c;两者有着不同的侧重点&#xff0c;软件工程的知识领域&#xff0c;软件工程的目标&#xff0c;初步学会软件工程需要达到的要求。

第 2 章 个人技术和流程

  • 2.1 单元测试
    保证覆盖率为100%&#xff0c;好的单元测试的标准&#xff0c;单元测试可以提高软件开发的效率&#xff0c;回归&#xff08;回归到以前不正常的状态&#xff09;测试。

  • 2.2 效能分析工具&#xff1a;Visual Studio&#xff08;抽样、代码注入&#xff09;
    不经分析就盲目优化&#xff0c;也许会事倍功半。

  • 2.3 个人开发流程&#xff08;PSP&#xff09;
    PSP任务清单&#xff08;大学生VS工程师&#xff09;&#xff0c;PSP的特点。

  • 2.4 实践
    当前程序设计作业简单&#xff0c;无太多扩展、扩展的方面、做项目的时候需要对项目的处理&#xff1b;
    开放 – 封闭原则&#xff1a;允许扩展&#xff0c;不允许修改。

第 3 章 软件工程师的成长

  • 3.1 个人能力的衡量与发展
    个人能力在团队中的作用与影响、个人应当承担的责任、个人的成长记方式。

  • 3.2 软件工程师的思维误区
    不要总想着在短时间内搞个大新闻&#xff0c;要结合自身实际&#xff0c;求稳&#xff0c;然后再扩展。

  • 3.3 软件工程师的职业发展

  • 3.4 技能的反面
    注重自己的技术&#xff0c;要避免懂得“技术”但仍然经常犯一些低层次的问题。

第 4 章 两人合作

  • 4.1 代码规范&#xff08;风格、设计&#xff09;

  • 4.2 代码风格规范&#xff08;简明、易读、无二义&#xff09;
    缩进&#xff08;4个空格&#xff09;、行宽、括号、断行与空白的{}行&#xff08;每个{}独占一行&#xff09;、分行、命名、下划线、大小写、注释&#xff08;What、Why&#xff09;。

  • 4.3 代码设计规范
    函数、goto、错误处理&#xff08;参数处理、断言&#xff09;、处理类。

  • 4.4 代码复审&#xff08;自我、同伴、团队&#xff09;
    为什么&#xff08;早发现早修复、互相了解&#xff09;、步骤、核查表&#xff08;概要、效能、可读性等&#xff09;。

  • 4.5 结对编程&#xff08;极致&#xff09;
    为什么&#xff08;高投入产出比&#xff09;、不间断地复审、角色互换。

  • 4.6 两人合作的不同阶段和技巧&#xff08;萌芽、磨合、规范、创造、解体&#xff09;
    影响他人的方式、正确反馈&#xff08;多层次&#xff09;

第 5 章 团队和流程

  • 5.1 非团队和团队
    非团队&#xff08;独立、乌合之众&#xff09;、团队&#xff08;共同目标、合作&#xff09;。

  • 5.2 软件团队的模式&#xff08;窝蜂模式&#xff09;
    主治医师、明星、社区&#xff08;众人拾柴火焰高&#xff09;、业余剧团&#xff08;不同角色&#xff09;、秘密团队&#xff08;无干扰&#xff09;、特工团队&#xff08;高手&#xff09;、交响乐团&#xff08;各司其职&#xff09;、爵士乐&#xff08;个性化表达&#xff09;、功能团队&#xff08;小组交流&#xff09;、官僚&#xff08;不提倡&#xff09;。

  • 5.3 开发流程&#xff08;统一体系&#xff09;
    写了再改、瀑布模型&#xff08;分析-->设计-->实现-->销售-->维护&#xff09;、统一流程、渐进交付&#xff08;MVP&#xff09;、TSP原则

第 6 章 敏捷流程

  • 6.1 敏捷的流程简介&#xff08;找出待解决的问题 --> 决定当前目标 -->冲刺&#xff08;每日例会&#xff09;--> 改进&#xff09;

  • 6.2 敏捷流程的问题和解法&#xff08;计划&#xff1a;体现依赖关系-->描述细化到技术层面 --> 跟踪三个时间 --> 总结教训&#xff09;

  • 6.3 敏捷的团队
    自主管理&#xff08;自己挑选任务&#xff09;、自我组织&#xff08;联合负责&#xff09;、多功能&#xff08;全面负责&#xff09;。

  • 6.4 敏捷总结
    质量控制、短时间迭代、极致编程、经验教训。

  • 6.5 敏捷的问答
    敏捷是一种价值观、总结思想、最佳实践TDD、适用范围、宣言&#xff08;左项&#xff09;。

第 7 章 MSF

  • 微软解决方案框架&#xff08;Microsoft Solution Framework&#xff0c;MSF&#xff09;,是微软公司通过吸取各部门积累的业务经验并随着时代更新的软件开发方法。其主要原则有9点&#xff1a;推动信息共享与沟通、为共同的远景而工作、 充分授权和信任、各司其职&#xff0c;对项目共同负责&#xff08;不仅要完成本职工作&#xff0c;更要对项目负责&#xff09;、重视商业价值、保持敏捷&#xff0c;预期变化、投资质量&#xff08;投资的效率&#xff0c;时期并要求长期&#xff09;、学习所有的经验&#xff08;要坚持总结和分享&#xff09;、与顾客合作&#xff08;从用户角度出发&#xff09;。

  • 用户调研&#xff08;User Study&#xff09;&#xff0c;A/B测试&#xff0c;通过态度、行为、定性、定量来规范调研的尺度。
    1062725-20170917150606578-217139513.png

第 8 章 需求分析

  • 软件需求
    将需求进行分类、清楚软件产品的利益相关者、获取用户需求&#xff08;用户调研&#xff09;、竞争性需求分析的框架、功能的定位和优先级、目标估计和决心、找出估计后面的假设、最后分而治之。

  • 经验公式&#xff1a; Y &#61; X ± X ÷ N
    工程师的经验公式实际时间花费主要取决于两个因素—对 某件事的估计时间X&#xff0c;以及他做过类似开发工作的次数N。

  • 提案&#xff0c;评估和WBS
    NABC model&#xff08;N--need需求、Approach--做法、Benefit--好处、Competitors--竞争、Delivery--推广方式&#xff09;
    评估&#xff1a;目标&#xff08;根据实际的需求来定&#xff09;、决心&#xff08;它承诺在特定日期交付预定义的功能&#xff0c;作为特定的质量级别&#xff09;、估计&#xff08;单个任务花费的人力、时间&#xff09;
    WBS – Work Break Down
    分而治之&#xff0c;顶层&#xff08;产品&#xff09;→中层&#xff08;功能&#xff09;-用户视角→较低级别&#xff08;功能实现&#xff09;-团队透视图&#xff08;PM&#xff0c;test&#xff09;→最低级别&#xff08;模块&#xff09;-开发透视图

第 9 章 项目经理

  • 风险管理
    第一步&#xff1a;确认风险、根据不同的来源对风险进行分类&#xff1b;
    第二步&#xff1a;分析和优先级划分&#xff1b;
    第三步&#xff1a;计划和管理风险
    应对风险的方法&#xff1a;进一步研究、接受、 规避、转移、 降低、制定应急计划

  • 项目经理&#xff08;PM&#xff09;&#xff0c;PM负责除产品开发和测试之外的所有事情&#xff0c;包括正确地做产品和正确地做流程。
    PM的作用&#xff1a;收集需求、设计用户界面&#xff0c;编写规范、协调市场、文档、测试、定位、带领团队达成决策
    【注】项目经理是和大家平等工作&#xff0c;并且做具体工作&#xff0c;和其他团员一起形成决议&#xff0c;只管事不管人的&#xff0c;和领导型经理是不一样的。

第 10 章 典型用户和场景

一、典型用户

  • 1.典型用户
    定义&#xff1a; 描述了一组用户的典型技巧&#xff0c;能力&#xff0c;需要&#xff0c;工作习惯和工作环境。
    电影用户的角色&#xff1a;也有受欢迎的和不受欢迎之分。
    典型用户的完善&#xff1a;定义了一部分典型用户后继续与其中代表进行沟通&#xff0c;进一步完善需求理解。

  • 2.从典型用户到场景
    场景&#xff1a;也可以是故事&#xff0c;用户为达到目标使用系统时经历的所有过程。
    场景的使用&#xff1a;设计者模拟用户&#xff0c;设计一个场景入口&#xff0c;描述用户在这个场景的内外部因素&#xff0c;给场景划分优先级并写场景。

  • 3.从场景到任务
    分层&#xff1a;沿着子系统/模块的所属关系把场景划分开。&#xff08;例如&#xff1a;P221.UI层&#xff0c;逻辑层&#xff0c;数据库&#xff09;
    任务与场景&#xff1a;不同的任务将会把一个场景编织起来&#xff0c;得到开发任务后&#xff0c;可以创建和分配测试任务。

二、用例(Use Case)

  • 1.用例&#xff1a;与典型人物&#xff0c;典型场景的方法类似&#xff0c;同样是很常用的需求分析工具包含这样的一些基本元素&#xff1a;标题&#xff0c;角色&#xff0c;主要成功场景&#xff0c;步骤&#xff0c;拓展场景。
    用例的原则&#xff1a;
    • 1.通过简单的故事来传递信息。
    • 2.保持对全系统的理解。
    • 3.关注用户的价值。
    • 4.逐步构建整个系统&#xff0c;一次完成一个用力。
    • 5.增量开发&#xff0c;逐步构建整个系统。
    • 6.适应团队不断变化的需求。
  • 用例的局限性&#xff1a;
    1.比较适合故事/人物/场景交互的系统。但是对于算法&#xff0c;速度&#xff0c;拓展性&#xff0c;安全性以及和系统技术相关等需求则不适用。
    2.故事的粒度没有统一标准与具体项目有关&#xff0c;初学者较难掌握。
    3.既要把UI的细节嵌入每个故事&#xff0c;又要保证其简明性是一个难题。

三、功能说明书&#xff08;Spec&#xff09;

  • 1.规格说明书
    软件功能说明书&#xff1a;说明软件的外部功能和用户的交互情况。&#xff08;软件是一个黑盒子&#xff0c;看不到内部&#xff09;
    软件技术说明书&#xff1a;又称设计文档&#xff0c;说明软件的内部的设计规范。&#xff08;透明盒子&#xff09;

  • 2.功能说明书
    从用户的角度描述软件产品的功能&#xff0c;输入&#xff0c;输出&#xff0c;界面&#xff0c;功能的边界问题&#xff0c;功能的效率&#xff08;to user&#xff09;&#xff0c;国际化&#xff0c;本地化&#xff0c;异常情况等&#xff0c;不涉及软件内部的实现细节。

  • 3.制定一份Spec
    定义好相关的概念&#xff0c;规范好一些假设&#xff1b;避免一些误解&#xff0c;界定一些边界条件&#xff08;定性且定量&#xff09;&#xff1b;描述主流的用户/软件交互步骤&#xff1b;一些好的功能还会有副作用&#xff0c;服务质量的说明。

  • 4.Spec的弊端
    枯燥乏味&#xff0c;无法跟上时间的变化。

  • 5.技术说明书
    设计文档&#xff0c;用于描述开发者如何趋势线某一功能&#xff0c;或相互联系的一组功能。实现软件功能没有固定的模板&#xff0c;但总存在着一些规律。

四、功能驱动的设计

  • 设计过程&#xff1a;
    构造总体模型 --> 构造功能列表 --> 制定开发计划 --> 功能设计阶段5实现具体功能

第 11 章 软件设计与实现

一、分析和设计方法

  • 1.四个过程&#xff1a;
    • 1.需求分析&#xff1a;抽象出我们真正关心的属性&#xff0c;实体之间的关系。用户的需求&#xff0c;如何解决&#xff1f;
    • 2.设计与实现阶段&#xff1a;软件如何解决这些需求&#xff0c;现实生活中的实体和属性在软件系统中怎么表现和交换信息&#xff1f;
    • 3.4.测试,发布阶段&#xff1a;真的解决了这些需求吗&#xff0c;软件解决需求的效率如何&#xff0c;用户还有什么新的需求吗&#xff1f;
  • 2.常用方法&#xff1a;
    文档、图形为主构造的模型&#xff08;思维导图&#xff0c;流程图等&#xff09;、数学语言的描述、用类自然语言 &#43; 代码构造的描述&#xff08;Literate Programming&#xff09;、源代码加注释描述。

二、图形建模和分析方法

  • 表达实体和实体的关系
    思维导图、实体关系图、ERD.UCD&#xff1b;表达数据的流动、表达控制流、统一的表达方式&#xff08;UML&#xff09;。

三、其他设计方法

  • 1.形式化的方法&#xff1a;用无歧义的&#xff0c;形式化的语言描述我们要解决的问题&#xff0c;然后用严密的数学推理和交换一步步把软件实现出来&#xff0c;或者证明我们的实现的确完整和正确地解决了问题。
    2.文学化编程&#xff1a;与“写程序&#xff0c;时不时写一些注释”相反,“写文档&#xff0c;时不时写一些代码。”

四、从Spec到实现

  • 1.预估开发时间
    2.写一些快速成型代码&#xff0c;看看成效&#xff0c;查找问题。
    3.看到初始效果与了解实现细节后&#xff0c;开始写设计文档&#xff0c;并与同事进行复审。
    4.按照设计文档写代码&#xff0c;解决遇到的问题。
    5.写好代码后先根据设计文档与代码指南进行自我复审&#xff0c;重构代码。
    6.重建或更新单元测试。
    7.得到一个可以测试的版本&#xff0c;交予相关测试人员测试或者公开测试。
    8.修复测试中发现的问题。
    9.根据代码复审的意见修改代码&#xff0c;完善单元测试和其他相关代码&#xff0c;把新的代码签入到数据库中。

  • 2. 把修改集集成到代码库中
    根据场景和开发任务来决定集成的次序、互相依赖的任务要一起集成。
    在测试场景时&#xff0c;要保证端对端的测试。
    场景的所有者必须保证场景完全通过测试&#xff0c;然后把场景的状态改为“解决”。

  • 3.开发人员的标准工作流程&#xff08;如下图所示&#xff09;
    1062725-20170917152059203-1947915845.jpg

五、开发阶段的日常管理

  • 1.闭门造车&#xff08;Leave me alone&#xff09;&#xff1a;集中于某一件事情&#xff0c;将自己投入其中&#xff0c;拒绝其他人的干扰。
    2.每日构建&#xff08;Daily Bulid&#xff09;&#xff1a;打好基础&#xff0c;精益求精。
    3.“构建大师”&#xff1a;对于一个导致构建失败的成员&#xff0c;授予这个称号&#xff0c;并让他&#xff1a;
    负责管理构建服务器 --> 调试构建&#xff0c;负责找错&#xff0c;并分析出错的原因 --> 将这个称号和责任交予下一位导致构建失败的成员 --> 构建大师为团队“构建之法基金”存入50元&#xff0c;以供大家团队构建之用。
    4.宽严皆误&#xff1a;制定宽严标准&#xff0c;以及根据团队的情况&#xff08;势&#xff09;所反映的情况。成员行为影响个人的尽量宽松&#xff0c;而影响团队的则要严格处理。
    5.小强地狱&#xff08;Bug Hell&#xff09;&#xff1a;类似于构建大师的选取&#xff1a;选出那些超过bug数标准的成员&#xff0c;让他们进入小强地狱专职于小强地狱处理bug&#xff0c;直到满足标准出狱&#xff0c;每周公布进出狱名单。

六、实战中的源代码管理

  • 软件 &#61; 程序 &#43; 软件工程
    软件的质量 &#61; 程序的质量 &#43; 软件工程的质量

  • 代码需要版本管理
    在源代码基础上进行修改后&#xff0c;留下新版本以及对应的负责人记录&#xff0c;记载bug的内容&#xff0c;处理人&#xff0c;处理时间&#xff0c;是否处理完成等内容以备查验。

七、代码完成

  • 两个阶段&#xff1a;
    1.task完成了&#xff0c;设想变成了可以运行的现实。
    2.Bug仍等待着工程师去寻找&#xff0c;修正。

第 12 章 用户体验

一、用户体验的要素

  • 1.用户的第一印象&#xff1a;5W1H来判断&#xff1a;Who When Where Why How&#xff0c;用以判断用户对产品的设计需求。
    2.从用户的角度考虑问题&#xff1a;从用户的立场上去使用自己的产品。而不是作为一个开发者&#xff0c;一个熟知产品构造的人去体验。
    3.软件服务始终都要记住用户的选择。
    4.短期刺激和长期影响&#xff1a;短期的刺激并不能成为客户长期使用的依据。
    5.不让用户犯简单的错误&#xff1a;设计能让客户尽可能地避免出错。例如航班上的阅读灯与呼叫空乘客按纽。如果把紧急弹射座椅放在常用按钮面板按错的后果。除了文字完全没有区分度的Submit&#xff0c;Cancel按钮。
    6.用户质量和体验&#xff1a;有时候质量要给用户的体验让步&#xff0c;才能让产品更具有吸引力。
    7.情感设计

二、用户体验设计的步骤和目标

  • 用户体验设计的一个重要目标就是降低用户的认知阻力&#xff0c;即用户对于软件界面的认知和实际结果的差距。
    如下表&#xff1a;
    1062725-20170917152802391-1834101254.png

三、评价标准

  • 1.尽快提供可感触的反馈。
    2.系统界面符合用户的现实管理。
    3.用户有控制权。
    4.一致性和标准化。
    5.适合各种类型的用户。
    6.帮助用户识别&#xff0c;诊断并修复错误。
    7.有必要的提示和帮助文档。

四、贯穿多种设备的用户体验

第 13 章 软件测试

  • 测试方法名称非常多&#xff0c;但只不过是从各个方面描叙了软件测试&#xff0c;并不是说有这么多独立的测试方法&#xff0c;只要分类处理&#xff0c;也就不会很难理解。

  • 13.1 基本名词解释与分类
    三个基本名词&#xff1a;
    • Bug&#xff1a;软件的缺陷
    • Test Case&#xff1a;测试用例
    • Test Suite&#xff1a;测试用例集
  • Bug又可分解为&#xff1a;症状(Symptom)、程序错误(Fault)、根本原因(Foot Couse)。-
    测试设计有两类方法&#xff1a;黑箱(Black Box)和白箱(White Box)。
    【注】是测试的“设计”方法&#xff0c;而非测试方法。

  • 黑箱从软件的行为&#xff0c;而非从内部设计出发来设计测试&#xff1b;白箱则可“看到”软件系统内部。
    按测试的目的分类&#xff1a;功能测试、非功能测试。
    按测试的时机和作用分类&#xff1a;测试“烽火台”&#xff0c;以及其他测试方法。

  • 13.2 各种测试方法&#xff08;该部分书中为举例了解&#xff09;
    ① 单元测试(Unit Test) 和 代码覆盖率测试(Code Coverage Analysis)
    ② 构建验收测试&#xff1a;验收系统的基本功能。
    ③ 验收测试&#xff1a;拿到一个“可测”的构建以后&#xff0c;按测试计划测试各自负责的模块和功能。
    ④ “探索式”测试&#xff1a;为了某一特定目的而进行的测试&#xff0c;且仅此一次&#xff0c;以后一般不重复测试。
    ⑤ 回归测试
    ⑥ 场景/集成/系统测试&#xff1a;在开发一定阶段对软件进行一个全面系统的测试以保证软件的各个模块都能共同工作。
    ⑦ 伙伴测试
    ⑧ 效能测试&#xff1a;软件在设计负载能否提供令人满意的服务质量。
    ⑨ 压力测试&#xff1a;严格地说不属于效能测试&#xff0c;验证软件在超过设计负载的情况下能否返回正常结果。
    ⑩ 内部/外部公开测试&#xff1a;让特定用户使用正在处于开发阶段的版本&#xff0c;以便收集更多反馈。
    ? 易用性测试
    ? “Bug”大扫荡

  • 13.3 实战中的测试观念&#xff1a;
    1.从项目开始测试人员便要开始介入&#xff0c;从源头防止问题的发生。
    2.测试并非一定要根据规格说明书来测&#xff0c;更要从用户的角度出发来测试软件。
    3.测试人员的代码质量一定要特别高&#xff0c;因为测试人员是最后一道防线。
    4.若为了让问题尽快显现&#xff0c;用Debug版本&#xff1b;若为了尽可能测试用户所看到的软件&#xff0c;用Release版本。
    文档&#xff1a;在计划阶段就写出测试总纲与测试计划&#xff0c;它们主要说明产品是什么&#xff0c;要做什么样的测试&#xff0c;时间安排如何&#xff0c;谁负责哪方面&#xff0c;各种资源在哪等。

  • 13.4 运用测试工具
    运用工具记录手工测试及自动测试。
    测试效能&#xff1a;除功能方面的测试&#xff0c;还有“服务质量”
    【例子】效能测试&#xff1a; 100个用户的情况下&#xff0c;产品搜索必须3S内返回结果。
    负载测试&#xff1a; 2000个用户的情况下&#xff0c;产品搜索必须5S内返回结果。
    压力测试&#xff1a; 压力高峰期&#xff08;4000个用户&#xff09;持续48小时的情况下&#xff0c;产品搜索必须保持稳定而不至于崩溃

第 14 章 质量保障

  • 14.1 软件的质量
    软件质量 &#61; 程序质量 &#43; 软件工程质量
    程序质量体现在软件外在功能。例如一个字处理软件能否拷贝/粘贴等
    软件工程质量&#xff1a;软件在功能、成本、时间三方面满足利益相关者的需求。
    软件工程的质量以一套比较成熟的理论CMMI进行衡量。
    质量成本组成部分包括预防、评审、内部故障、外在故障四个方面。

  • 14.2 软件质量的保存工作
    软件的质量保障&#xff08;QA&#xff09;和软件测试&#xff08;Test&#xff09;是有很大区别的&#xff0c;因此——测试的角色要独立出来&#xff0c;所有人都可以参与QA工作&#xff0c;但最后要有一个人对QA这件事负责&#xff0c;最后软件发布时&#xff0c;必须得到此角色的签字保证。尽管有专人负责测试工作&#xff0c;但保证质量仍是所有成员的职责。
    不能盲目信任“专业人士”扮演的角色&#xff0c;即使有专业人士扮演的角色&#xff0c;还得有专人独立地检查验证质量。
    分工不能“画地为牢”&#xff0c;为了避免出现局部最优而全局未必最优&#xff0c;同时也避免由于软件被切碎而导致整体不太行。
    分工不能无明确责任。

第 15 章 稳定和发布阶段

  • 15.1 从代码的完成到发布
    软件生命周期的最后阶段往往是最考验团队的&#xff0c;不但考验团队项目管理水平、应变能力&#xff0c;也考验团队的“血型”。
    原计划的软件发布时间快到了&#xff0c;但是软件还存在各种问题&#xff0c;于是有了4种团队血型&#xff1a;
    A型&#xff1a;他们知道优秀的软件公司会发布有已知缺陷的软件。
    B型&#xff1a;他们不相信这一点。
    O型&#xff1a;他们不知道这一点&#xff0c;因此嘴巴惊讶成O型。
    AB型&#xff1a;他们对于自己开发的软件是A型&#xff0c;对于别人开发的软件是B型。
    1062725-20170917161739313-401490864.png

    从代码完成到最终发布软件
  • 会诊小组&#xff1a;软件团队的各个代表组成会诊小组&#xff0c;处理每个影响产品发布的问题&#xff0c;对于每一个Bug&#xff0c;会诊小组要决定采取何种行动&#xff1a;1.修复 2.设计本来如此 3.不修复 4.推迟
    复杂项目的会诊招数&#xff1a;
    设计变更、搞定所有已知Bug、最后回归测试、砍掉功能&#xff08;不能因为以前花了成本&#xff0c;就要求以后一定要完成某个任务&#xff09;、修复Bug的门槛逐渐提高、逐步冻结。

  • 15.2 使用不同频率和不同覆盖范围的渐进发布
    产品同时对不同的目标用户用不同的频率发布&#xff0c;以适应不同群体的需求。

  • 15.3 发布之后——事后诸葛亮会议
    这个软件生命的周期结束以后&#xff0c;如尸体解剖一样&#xff0c;把给软件的开发流程剖析一下。

第 16 章 IT 行业的创新

第 17 章 人、绩效和职业道德

问题集锦

1、软件构建的过程中&#xff0c;何为链接参数&#xff1f;

2、在程序理解阶段&#xff0c;为了能够使不同的人接手非自己的代码&#xff0c;打代码的时候应该要注意什么方面&#xff1f;

3、商业模式是否真正地直接能够决定一个软件企业地成败&#xff1f;

4、在软件开发阶段中爱好者怎么才能晋升为先行者&#xff1f;

5、软件工程开发有着较高的难度&#xff0c;但不代表不能进行开发&#xff0c;如何能使我们能够克服软件开发过程中的难题呢&#xff1f;

6、该如何使单元测试给自动化&#xff1f;

7、主治医师模式&#xff1a;在一个团队中如何避免一个学生干活&#xff0c;其余学生跟着打酱油&#xff1f;

8、明星模式&#xff1a;如何使团队的利益最大化&#xff0c;而不是在明星光芒四射时使自身利益最大化&#xff1f;

9、如何在不影响效率的情况下有效记录三个跟踪的时间值&#xff1a;实际剩余时间、预估剩余时间、实际花费时间&#xff1f;

10、如何培养一个人或者一个团队把重要和有效的做法发挥到极致的能力&#xff1f;

11、软件工程和我们的课程程序设计与数据结构有什么不同&#xff1f;构建之法上的哪些内容可以完全应用到我们的课程中&#xff1f;

12、在进行用户调研的过程中&#xff0c;为什么不能调研细微到毫厘&#xff0c;即做调研做过头&#xff1f;

13、一个团队成熟的标记&#xff0c;就是对风险的管理&#xff0c;在《构建之法》中如是说&#xff0c;我们对待风险该采取什么样的态度呢&#xff1f;

14、关于项目经理PM&#xff0c;书中提到一个团队可以有很多PM&#xff0c;如果一个团队中针对一个项目形成了多个决议&#xff0c;这种窘况该如何解决呢&#xff1f;

15、project manager 和 program manager 的区别在于前者管事也管人&#xff0c;后者只管事不管人&#xff0c;所以PM需要有很强的领导力吗&#xff1f;

16、在设计用例时如何既镶嵌UI的细节又保证故事的简明性&#xff1f;

17、用户的体验和产品的质量同样重要&#xff0c;那么他们冲突时应该平衡至什么地步&#xff1f;

18、在设计典型场景时需要保持模拟内容的简明性还是模拟所有可能发生的事件&#xff0c;无论是否与需求有关&#xff1f;

19、成本的主要组成部分是由什么而产生&#xff1f;

20、结构和实现又有什么样的关系&#xff1f;

21、代码覆盖率是什么&#xff1f;它重要在哪&#xff1f;

22、理想的覆盖率分析工具是怎样的&#xff1f;

转:https://www.cnblogs.com/VersionP1/p/7531933.html



推荐阅读
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 深入解析十大经典排序算法:动画演示、原理分析与代码实现
    本文深入探讨了十种经典的排序算法,不仅通过动画直观展示了每种算法的运行过程,还详细解析了其背后的原理与机制,并提供了相应的代码实现,帮助读者全面理解和掌握这些算法的核心要点。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在Java编程中,`AbstractClassTest.java` 文件详细解析了抽象类的使用方法。该文件通过导入 `java.util.*` 包中的 `Date` 和 `GregorianCalendar` 类,展示了如何在主方法 `main` 中实例化和操作抽象类。此外,还介绍了抽象类的基本概念及其在实际开发中的应用场景,帮助开发者更好地理解和运用抽象类的特性。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • Java服务问题快速定位与解决策略全面指南 ... [详细]
  • 一.名称二.问题(为了解决什么问题)很好辨认,举一些常见的例子:猫鼠游戏广播收音机事件监听等等三.解决方案࿰ ... [详细]
  • 1、UNIX 入门指南 – 什么是 UNIX ?
    UNIX操作系统是一系列的程序,将计算机和用户联系在一起。分配系统资源和协调计算机内部的所有详细信息的计算机程序被称为操 ... [详细]
author-avatar
潜水的飞机537
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有