这周我们小组学习了第十一章学习内容-----软件设计与实现

 

首先我们要分析与设计方法

   

在“需求分析”阶段,我们要搞清楚:在问题领域中的现实世界里,都有哪些实体?如何抽象出我们真正关心的属性?实体之间的关系是什么?用户关心的是什么?

   

    在“设计与实现阶段”,我们要搞清楚:软件是怎么解决这些需求的?

 

    在“测试”和“发布”阶段,我们要搞清楚:软件真的解决了这些需求吗?

 

    软件团队的所有相关人员都需要处理,了解这些信息,如果在处理的过程中有误解和遗失,就会导致开发过程出现问题,以至最终产品不能满足用户的需求。

   

分析与设计有许多方法:

    以文字为主的:Word、PowerPoint文档。

    以图形为主的:Mind Map,ERD,DFD,UML的各种图

    用数学语言描述:Vienna Development Method

    用类自然语言+代码构造的描述,如Literate Programming

 

图形建模和分析方法

 

    我们要给事物建造出一个“模型”,描述事物、事物的属性、事物之间的关系以及各个事物之间的信息传递。

 

思维导图:人们经常用图形来帮助他们了解概念,强化记忆。思维导图没有严格的语法意义,一般来说都是从图形的正中开始写下一个概念,然后按照绘图者所关心的属性扩展。

 

实体联系图:当我们注重与表达现实世界中的实体和他们之间的关系,那么就需要用到实体关系图ERD。这是一个理解和抽象的过程。

 

UCD:用例图的元素简单,绘图简明,它的主要目的是尽快让团队成员和利益相关者理解系统的需求。

 

从SPEC到实现

 

n         一个开发人员拿到设计文档(Spec)他会做以下几件事情:
    估计开发所需的时间。

n         试着写一些快速原型的代码。

n         看到初始效果后开始设计文档。

n         按照设计文档写代码,并从中发现意外的问题。

n         写好代码后进行自我复审。

n         进行单元测试。

n         交给相关的测试人员。

n         修改测试人员发现的问题,然后交给同时进行复审。

 

开发阶段的日常管理

 

闭门造车

    当场景,功能都计划好的时候,要给员工足够多的时间,让他们投入到工作中去,而不要经常打断他们。要尽量减少非开发时间,团队成员自我时间管理也很重要。

 

每日构建

    在我们的全球调查中,我们发现成功公司中有94%每天或至少每周完成构建,而不成功公司绝大多数每月甚至更少去构建。当有一个能运行的系统时,即使只是一个简单的系统,团队积极性也会上升。

 

小强地狱

    在开发过程中,开发人员一定会遇到很多小强。但是如果我们每遇到一个小强就去修复的话太过于浪费时间。这就导致有些开发人员积攒了大量的小强,进而影响了其他测试人员的任务。因此就要进行小强地狱!如果开发人员的小强数量超过一规定值,则此开发人员将被送入“小强地狱”,在“地狱”中,只能进行小强的修复,不能进行开发,直到小强数量低于规定阈值。当然,阈值由团队根据实际情况来定,不能过低而让全队人员都去“地狱”,也不能过高影响测试进度。

  目前小组的实践项目进度:正努力实现计算一年内两天间隔天数的代码,目前得出以下实现功能的模块

  //日期结构体

typedef sruct D

{

int year;

int month;

int day;

}Date;

//判断是否闰年

int IsLeapYear(int year)

{return(year%400==0||year%4==0&&year%100!=0)};

//获得某年某月最大天数

int GetMaxDay(int year,int month)

{

switch(month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

return 31;

case 4:

case 6:

case 9:

case 11:

return 30;

case 2:

return IsLeapYear(year)?29:28;

default:

return -1;

}

}

 posted on 2017-05-21 15:27  Excelent_RJ  阅读(174)  评论(0编辑  收藏  举报