软件设计的三个阶段及快速构建原型

来源:互联网 发布:成女脸型数据 编辑:程序博客网 时间:2024/05/24 07:12

软件设计的三个阶段及快速原型构建


一 : 明确几个问题

1 . 快速构建原型是什么意思?

快速 就是越快越好,火速进行。 我们可以花少量的时间去规划这个应用程序,然后便可以创建原型 ,原型实现的功能能完成最基本的功能,不考虑很多细节的东西,是一个系统的最精简的版本 。

2 . 软件设计的三个阶段指的是什么?

第一个系统 、 第二个系统 、 第三个系统

3 . 快速建立原型属于哪一个阶段 ?

第一个系统


二 : 知识学习与技能学习的区别

1 . 知识的特点

I . 知识 是“知道”或者“不知道”的问题, 比如在你眼前放一辆自行车,如果你以前没有见过自行车,就会感到好奇。此时若有一个人告诉你,这是自行车,你便从此知道了什么是自行车了,你从不知道到知道这个过程就是知识的积累的过程,再自己的头脑中增加了一点关于自行车的知识。

II . 在这个信息时代,最不缺的就是知识了,成千上万的数据库的知识可以使用互联网这个入口得到,从这个层面上来说,知识最不值钱了。

III . 这个时代,日新月异,知识不断推陈出新,知识更新的速度远胜于以往任何时代 ,获得的知识多了,可以让一个人开阔视野,在今后的人生道路上的选择和判断上变得更加明智。

2 . 技能养成因人而异

I . 前面说了,知识是本身不值钱,当我们把知识应用到具体的实践过程中的时候,那么那就能发挥显性价值了。知识到技能的转变是需要投入大量时间和精力,反复磨练才能得到的,必须经过尝试、失败、再尝试、再失败的这么一个过程的。

II . 每个人都是一个独特的个体,有不同的思维模式,生活习惯,同一件事在不同人眼中的结果是不一样的。技能的学习也是如此,每个人的学习方法不尽相同,各有优劣,适合自己的才是最好的。


三 :变化是不可避免的,没有一成不变的规格说明书

I . 几乎没有什么项目会一直遵守原有的规格说明说,而不发生任何变化。 营销需求会改变,供应商不能提供商品,关键的部件的表现可能会和原设想完全不同。

II . 发生变化是不可避免的,因为事物的发展总是在变化的,很多细节是没有办法实现具体化的,客户的需求,产品的复杂度,意外的情况等等都可能使得开发流程偏离原先预定的轨道。


四 : 尽快建立软件原型

1 . 尽快构建产品原型的优点

I . 原型的建立可以显示哪些想法是可行的,最重要的,哪些是次要的,不重要的,在早起发现设想错误,这样做的代价远远小于后期发现问题付出的代价。

II . 有了一个产品具体的原型,你就可以对产品有一个整体上的认知:“哦,产品将会是这个样子的呀。”你可以将它演示给值得信赖的顾客上,并获得他们的反馈信息,为后期软件的开发提供了宝贵建议,这比产品成型以后的建议来的更加有用 。

2 . 与传统方法相比较

I . 快速构建软件系统的想法与传统的适当工程方法背道而驰。大部分人都曾经被要求,在进入编程阶段之前,应该充分考量自己的设计,他们说:“你必撰写一份功能说明书,定期进行核查,以确保自己没有脱离正确的轨道。” 他们认为这样一份设计规范可以理清自己的思路,只有在完成设计99%之后,才开始编码。

II . 这样的原则听起来不错,但是他们都没有给予原型足够的重视。因为只有构建原型,你的构想才能首先通过可视化、现实可行的方法得到验证。在此之前,那些只不过是你脑海中零零散散的想法,尽快构建一个原型基础,使得想法依附于一个具体化的存在。


五:软件开发的 三 个阶段

1 . 阶段归纳的来源

人类设计的系统类似于人自身一样,都必须经历三个阶段:未成年、成年、老年 。

2 . 第一阶段:未成年——第一个系统

I . 这个阶段也就是快读构建原型的阶段,它的成果就是用最小的成本获得差强人意的性能和功能,它极其精简,一牺牲功能的扩展灵活性为代价来换取简洁和速度,任何和系统重要组成部分无关的事物都被排除在外 。

II . 第一个系统设计人员高度集中精力以解决目前的问题,让系统工作,甚至也不管什么具体细节,先运行起来再说,它完成一个最基本但相对完善的框架,细节的东西暂且不论。

比如 构建如下代码 C:

先写出所有的接口函数,具体实现先不写,保证一次编译通过,利用具体的数值来验证原理上正确。

#include <stdio.h>typedef int DataType;struct mystru {    DataType data;      struct mystru *next;};// all apis needed :static struct mystru * Get_Next(struct mystru *p_local_stru) ;static struct mystru *Init_Stru(void);static DataType Get_Data(struct mystru *p_local_stru);int main(void){    struct mystru *p_stru;    // init_Stru     p_stru = Init_Stru();    //    printf("%d\n",Get_Data(p_stru)) ;     return 0;}static struct mystru * Get_Next(struct mystru *p_local_stru) {    return p_local_stru->next ;}static struct mystru *Init_Stru(void){     //local  is  heap ;    // a lot of code     // ...    return &local;}static DataType Get_Data(struct mystru *p_local_stru){    DataType a = 10;     // a lot of code      // ...    return  a ;}

3 . 第二阶段:成年 —— 第二个系统

第二个系统,相对于第一个系统而言,内容更加丰富,实现了具体的细节,增加更多新的特性,虽然不一定都用得上,正因如此,相对于第一个系统而言变得臃肿而缓慢,可谓是有喜参半,它逐渐接近伟大的成就 。

4 . 第三阶段:老年 ——第三个系统

第三个系统,它将功能特性和性能完美地结合在一起,里面只包含实际上用得上的功能,对它在 磁盘空间、内存和CPU周期这些硬件资源和系统性能之间取得适当的平衡 。


六 : 传统软件工程方法和快速构建原型对比

步骤 传统软件工程方法 快速构建原型 Step 1 思考系统的设计 撰写一份简短的功能规格文件 Step 2 建立一个原型来测试既定目标 编写软件 Step 3 撰写详细的功能和设计规范 使用迭代的软件测试/重新编写代码,知道完成全部功能 Step 4 编写代码,软件测试 如果有必要的话,再撰写一份详细文档 Step 5 修复测试中的BUG和设计缺陷,更新规格文档 NULL

七 :总结

1 . Unix程序员一开始只是匆匆记一些与目标相关的事情,然后就着手去构建原型系统了。

2 . Unix的方法要优于传统工程方法,是因为在传统主义还不清楚产品是什么样子的时候,Unix开发人员已经在考虑如何处理这个工作原型了。

3 . 如果不合适,可以尽快调整设计方法,尽早调整要比晚期伤筋动骨地修改更容易。


0 0
原创粉丝点击