软件功能设计
来源:互联网 发布:淘宝开专卖店 编辑:程序博客网 时间:2024/05/16 16:17
软件功能设计:
针对软件中某一具体的功能,所进行的设计。包括:这个功能的实现方式,实现的基本结构,类的组成,职责划分等,是软件设计中最最重要的基本功。
功能设计在整个软件设计中的层次:
软件设计的层次很多,不同的软件设计过程有不同的划分层次,大致可分为:架构设计,api/spi设计,数据库设计,功能设计,类设计,方法设计。
从难度上说:公共类库》公共框架》基础平台/框架》应用(产品》项目)
功能设计在整个软件设计中的地位:
功能设计从属于详细设计,是整个系统功能实现的基石。
功能设计与设计模式的关系:
功能设计通常会综合应用多种设计模式,是各种设计思想的具体体现的载体。由于功能千变万化,因而要有较高的设计技巧和功力,才能设计出正确的,易用的,灵活的, 扩 展性高的,高性能实现。
设计模式是业界公认的,优秀的设计经验和设计理念,理解、掌握、融会贯通、并能熟练变形应用设计模式,对于功能设计是由极大的帮助的。
功能设计与详细设计的关系:
功能设计只是详细设计中的一部分,详细设计还包括很多其他的设计,比如:流程设计、对api/spi的完善和细化,对数据库设计的完善和细化,对多个功能交互的控制,事 务 的规划,权限/安全的规划,例外的控制。。。很多很多
功能设计要考虑的东西/评价标准:
这个业界没有统一的标准,而且不同类型、不同业务的系统考虑的东西并不完全一样,但还是有一些通常要考虑的东西:
“正确性”,易用性,可扩展性,复杂性(易理解,开发难度等),易维护,安全,性能,可重用,可测试。。。
软件设计的实战方法---经验总结
1,基本的功能实现方式,并进行细化;
2,分析每个步骤,每个细节中,哪些是可变的,哪些是不可变得。通常分析3个部分:数据的输入,具体实现,数据产出;
3,分析这个细节功能和其他步骤的关系,比如:顺序,平行,依赖等,已确定这些职责的粒度和分离方式,从而考虑他们之间的组合方式,也需要分离这些组合方式的变 与不变
4,根据前面分析的结果,进行相应的类,方法的设计、进行职责的划分,并通过合适的方式把他们组织起来。
通常这个时候,就会融合进一个或多个设计模式的应用。当然也可能是没有现成的设计模式,需要自己来灵动的组织和实现。
5,按照前面讲述的评价标准,进行系统的思考和调整,以形成最终的设计方案。
关于软件设计的一些思考:
设计的基本技巧:发现和封装变化,进行抽象和封装,实现高内聚和低耦合。
设计是危险的平衡艺术,尽可能的找到最佳平衡点。
没有完美的设计,设计总是在不断的演变中
设计是没有标准答案的,只要能更好的实现功能,更好的满足那些评价标准,就是好东西。
不要过度设计不等于不设计,而是更要精巧设计。
关于重构的思考:在设计角度讲,重构是打补丁的思想。
关于敏捷的思考:
设计是否增加了复杂度:
设计是否增加了软件成本:好的设计是会降低软件成本的。
- 软件功能设计
- 软件的需求与功能设计
- 软件系统功能设计实战训练
- 自用数据库软件(3-1功能设计)
- 开发人员系统功能设计常用办公软件分享
- 开发人员系统功能设计常用办公软件分享
- 软件功能设计实战-订单管理系统(1)
- 软件系统功能设计(实战)训练(6个设计案例)
- 软件系统功能设计(实战)训练(6个设计案例)
- 电子书功能设计
- 功能设计指导思想
- 聊天功能设计
- 参数设置功能设计草案
- IP地址屏蔽功能设计
- MSP430自毁功能设计
- SNS网站Feed功能设计
- app 新手引导功能设计
- paip.转账功能设计流程
- 实验4:栈和队列的基本操作实现及其应用3
- Codeforces Round #443 (Div. 2)A. Borya's Diagnosis
- MAC平台下cocos2d-x项目打包相关流程(自己总结的)
- [ACL2017]Adversarial Multi-Criteria Learning for Chinese Word Segmentation
- 很好用的Xpath插件
- 软件功能设计
- 贪心算法---打酱油
- HDU 5952 Counting Cliques(s元的完全子图)
- 我的学习记录21
- [bzoj2648][kd树]SJY摆棋子
- pandas.read_csv参数详解
- (一)从零搭建maven+spring+mybatis项目之maven安装与本地库设置
- select左移右移的实现
- git学习