软件构建中的设计

软件的首要技术使命就是管理复杂度。以简单性作为努力目标的设计方案对此最有帮助。

简单性可以通过两种方式来获取:一是减少在同一时间所关注的本质性复杂度的量,二是避免生成不必要的偶然的复杂度。

设计是一种启发式的过程。固执于某一种单一方法会损害创新能力,从而损害你的程序。

好的设计都是迭代的。你尝试设计的可能性越多,你的最终设计方案就会变得越好。

信息隐藏是个非常有价值的概念。通过询问“我应该隐藏些什么?”能够解决很多困难的设计问题。

时间: 2024-11-02 23:13:44

软件构建中的设计的相关文章

《代码大全》学习摘要(五)软件构建中的设计(下)

这次的学习内容主要是设计过程中的启发式方法和设计实践中的一些经验. 对于具体的编程工作来说,期待确定性的行为是很正常的,由于软件设计是非确定性的,灵活熟练地运用一组有效的启发方法(试探法),便成了合理的软件设计的核心工作. 1.在确定设计方案时,首选且最流行的方法是面向对象的方法,此方法的要点是辨别现实世界中的对象以及人造的对象.这个过程分为以下几步:辨识对象及其属性.确定可以对各个对象进行的操作.确定各个对象能对其他对象进行的操.确定对象的哪些部分对其他对象可见.定义每个对象的公开接口. 2.

软件构建中的设计(一)

设计中的挑战 "软件设计"意味着去构思.创造或发明一套方案,把一份软件的规格说明书变成功能可运行的软件.设计就是把需求分析和编码调试连起来的活动.好的高层次设计能提供一个稳妥容纳多个较低层次设计的结构.好的设计对于小型项目非常有用,对于大型项目就更是不可或缺. 设计是一个险恶的问题 设计是一个险恶的问题."险恶"问题就是那种只能通过解决或部分解决才能被明确的问题.说通俗一点,就是你必须先把这个问题解决一遍以便能够明确地定义它,然后再次解决问题,从而形成一个可行的方案

软件构建工具Scons在大型项目中的几点总结

最近在为团队搭建统一的软件构建环境,目的是用scons为十几个软件模块提供统一的编译框架和命令,支持生成release/debug不同版本的可执行文件,同时支持不同的调试级别. 1.整体结构和实施过程 a.约定好不同模块在统一的代码库中的相对位置 因为软件模块之间可能存在库依赖.头文件依赖等关系,固定的相对路径能够使得模块中包含其他模块头文件或者库的脚本语句固定下来: b.为每个新增加模块写sconscript脚本,在里面利用scons.python语句实现软件构建.部署和清除: c.如果子模块

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

记软件构建之法的读书笔记

什么是软件工程? 软件工程与计算机科学有什么关系? <构建之法:现代软件工程>这本书的绪论主要就是讲解这两个问题.软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护的过程.它包括:软件需求分析.软件构建.软件测试和软件维护等多个领域.做一个合格的软件工程师,并不仅仅局限于你会多少种语言,是否会用C++写“Hello World”的程序,你还要清楚软件如何构建以及在软件构建之中不厌其烦的去做那些用户使用率为百万分之一,但却不可或缺的功能.程序是基本功,但是在算法和数据结构之上,

代码大全读书笔记1---进入软件构建的世界

构建实质建设的过程,构建的过程包含计划.设计.检查工作的一些方面. 软件开发过程中的各种不同的活动: 1.定义问题(problem definition) 2.需求分析(requirements development) 3.规划构建(construction planning) 4.软件架构或高层设计(software architecture or high-level design) 5.详细设计(detailed design) 6.编码与调试(coding and debugging)

软件构建、测试和部署自动化

不管是传统瀑布式开发模式还是现如今互联网行业流行的敏捷开发模式其整个过程必不可少存在软件代码编写.代码构建.软件测试(代码静态分析.单元测试.模块测试和系统集成测试等).软件部署等主要阶段.传统的做法往往是通过人工的投入方式一个阶段一个阶段的去执行实施,这好比传统的家庭作坊式手工生产工业品时代或劳动密集的工厂加工时代.现如今工业品的生产已逐步走向自动化生产流水线而解放出来的人力更多地是投入到自动化生产线无法替代的产品设计上.那反观软件产品的生产过程,我们会发现它在国内仍也大部分处于家庭作坊或大规

个人经验谈一谈软件构建

项目开发过程的活动:定义问题.需求分析.规划构建.软件架构.详细设计.编码与调试.单元测试.集成测试.集成.系统测试和保障维护. 当初在书上看到这些的时候,确实一头雾水,但是最近自己主管项目开发的时候确实深有体会啊. 需求真的很重要,在开始动工前就一定要确定好,不然后面经常修改的话,既做了很多无用功浪费时间,又加大了开发成本延误工期.所以,开发项目的首要工作就是出一份全面合格的需求文档. 规划构建该怎么实施呢?当然,做项目不能说走一步算一步,必须事先算好工作量,合理分配时间和工作.例如,这个项目

[读书笔记-代码大全]第1章 欢迎进入软件构建的世界

"构建"既是名词,也是动词,但在现实生活中,最好不要把它当作形容词,比方说"您真'构建'的".(Sorry,忍不住又在扯了 –_-#) 我对本章内容的概括是:在软件开发过程中,构建活动是一个程序员最最应该关注的活动.至于W-H-Y,Why,作者用了一章的篇幅来阐述这个问题. 在本章的开头(Page3的1.1什么是软件构建),可以得知研究者把软件开发过程中的各种不同的活动(acitivity)归纳为以下11种: 定义问题(problem definition) 需求分