软件设计的三个阶段及快速构建原型
来源:互联网 发布:成女脸型数据 编辑:程序博客网 时间: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 . 如果不合适,可以尽快调整设计方法,尽早调整要比晚期伤筋动骨地修改更容易。
- 软件设计的三个阶段及快速构建原型
- 创业的三个关键阶段及重要性
- 平台+插件软件设计思想及基于COM的原型实现
- 平台+插件软件设计思想及基于COM的原型实现
- 平台+插件软件设计思想及基于COM的原型实现
- 平台+插件软件设计思想及基于COM的原型实现
- 平台+插件软件设计思想及基于com的原型实现
- 软件设计不同阶段的关注点
- 程序员的三个阶段
- 推荐的三个阶段
- 工作的三个阶段
- ACMer 的三个阶段
- gcc的三个阶段
- Event的三个阶段
- 事件的三个阶段
- 编程的三个阶段
- 反射的三个阶段
- 事件的三个阶段:捕获阶段 目标阶段 冒泡阶段
- 杭电oj(java版)——1087 Super Jumping! Jumping! Jumping!
- RactiveJS-11 Transitions
- HDU 1863 畅通工程(最小生成树)
- RactiveJS-10 Partial + Animation +SVG
- 设计模式之工厂模式
- 软件设计的三个阶段及快速构建原型
- android进程通信IPC机制之Binder详解
- matlab串口采集数据
- hdu3791--二叉搜索树
- memset
- 杭电oj(java版)——1090 A+B for Input-Output Practice (II)
- Android Apk重签名教程
- C语言复习笔记 8
- Java同步工具类——闭锁