`
baseline
  • 浏览: 42712 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

教你如何开发--方法论

阅读更多

偶然(最近这个词用的很多)发现了一篇好文。完全是方法论的东西。也不知道是哪个牛人写的。我觉得这篇文章完全可以指导我们平时的开发工作。

 

原文地址 : http://ee.sjtu.edu.cn:8080/os/lab1.asp

 

 

实验指导书
() 实验的目的和要求
    操作系统是一门实践性很强的课程,只有把理论和实践紧密地结合在一起,才能取得较好的学习效果。学生们通过课堂学习或自学,并在完成书本每一章后面的一些习题后,理解了操作系统的基本概念。但仅有这一方面的训练还是很不够的。一个普遍的规律是学生们似乎已掌握了书本内容,也能完成一些基本的习题甚至很轻松地通过了一些测验,但一旦需要编制一个稍为复杂的实用系统软件,哪怕只有近百行的不大的程序,就会碰到很多难以克服的困难,甚至不知从何处下手。即使绞尽了脑汁,花了很多时间才编写出来的程序,在计算机上却怎么也调试不出来。程序中不仅有不少平时不注意的语法错误,更含有一些严重的逻辑错误,改正了一个又暴露出了另一个。好多小时过去了,不少学生还坐在终端前面束手无策。即使勉强调试出了程序,但程序结构性差,效率低,也经不起较为严格的测试。
    上机实验是一种更全面更严格的训练,是学习环节中的一个不可缺少的组成部分。实验对于提高学生用学到的书本知识解决实际问题,培养实际工作所需要的动手能力,对于提高以科学理论和工程上的技术规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性的作用。机器是最为严厉的老师,通过上机实验,学生可以在程序设计方法、上机操作等基本技能和科学的作风方面受到比较系统和严格的训练。
    很多学生认为上机实验就是编写一个程序,上机通一通。有少数学生甚至不作准备,直接在终端前“打草稿”,边运行边修改。这些学生以为按实验步骤规范地做是添了麻烦,做“文章”比编程更吃力。对以往的教学实验中的问题分析表明,规范化的实验步骤不但可以培养科学、正规化的工作方法和作风,为今后设计编制复杂、庞大的应用程序和系统程序打下扎实的基础,即使在现阶段的实验中也能有效地少犯和避免犯大错误,节约上机准备和上机调试时间。
    在工厂中,一个产品的开发需要经过分析、设计、制造、测试等一系列的过程,一个软件开发的步骤与其很相似。因此上机实验要规范化地进行,以保证实验顺利完成。
 
() 实验步骤
    1. 问题分析
    在正式的程序设计之前首先要分析和透彻地理解问题本身,用结构化的分析方法分析问题的结构。要克服急于编程的欲望,开始时必须保证有一段时间集中精力分析软件应当做什么,而不是如何来做。根据问题的性质和要求构造一个满足问题要求和限制的系统。
    结构化分析的基本方法就是“分解”和“抽象”。把一个大问题分割成若干个小问题,然后分别解决,这就是“分解”。先考虑问题的本质和功能,暂把问题的细节略去,以后再考虑实现的细节,这就是“抽象”。自顶向下逐层分解的分析体现了分解和抽象的原则,使人们不至于一下子陷入细节,这样有助于正确地理解问题,避免走“冤枉路”。
    在结构化分析阶段,学生应先画出问题流程图,导出系统的逻辑模型,用约定的图型和记号,对问题进行逻辑上的模拟和描述。
    2. 结构化设计
    在导出了问题流程以后,就可以进行系统结构设计,即把问题模型转化为系统结构模型。这个阶段的工作是将系统划分成一个个模块,选择数据结构,定义在其上进行的操作,利用这些操作便可以实现系统所要求的功能。每一个操作是一个过程或函数,其对应于一个模块,以完成系统的子功能。所有模块应按从上向下调用的原则构成层次型的结构图,并与问题的逻辑结构相对应。
    在结构化设计过程中要列出过程和函数间的调用关系,过程的接口部分说明,模块之间的输入输出方式,模块之间传递什么数据类型,求精所得出的模块结构图。
    用结构化的自然语言描述模块所要做的工作和输入输出。
    在把系统划分成模块时,要考虑以下几个因素: 模块内部数据联系度要大,模块问的联系度要低,模块尽量通过少数参数联系,模块间的共享信息应尽量少。
    3. 过程设计
    即确定每个模块的内部特征,即怎样做的问题。按照在前一阶段规定的逻辑模块设计程序和控制结构,使程序结构清晰、流畅。
    按照操作的要求确定数据结构及其算法。
    使用顺序,选择和循环三种基本的单入口和单出口的控制结构描述过程的内部流程,使程序的基本结构与问题的流图结构保持一致,使程序的静态结构与动态执行保持一致,使过程流图易读、易编码、易修改。
    过程设计主要有图形描述方法和设计语言描述方法两种,前者有流程图、 N-S盒图和PAD(程序分析图)。如采用C语言来进行程序设计,在过程设计阶段可采用三个基本的控制结构和自然语言来描述程序流程,用这种方法进行过程设计,其结构与最终的程序接近,很容易进一步细化,编写正式的语言程序。
    4. 结构化编程
    在完成了过程设计之后,就可以着手编写C程序了。在编程时除了要求源程序的语法正确、程序逻辑无误,还要求程序有较好的可读性、可靠性、健壮性、可测试性和可修改性。
    结构化程序设计支持自顶向下、逐步求精的思想,采用顺序、选择和重复三种单入口、单出口基本控制语句和它们的嵌套组合来构成具有复杂层次的结构化程序,用这种方法编制出来的程序具有较好的可读性、可靠性和可测试性。结构化编程方法严格限制goto语句的使用。
    (1) 结构化编程要求程序员有良好的程序设计风格,程序结构友好,层次分明,思想清晰。
    (2) 采用良好的程序书写文体和格式,程序行按程序的层次结构合理安排缩格,使其按锯齿形排列。程序中插入必要的空行,使逻辑结构更加清晰、易读。
    (3) 在程序中加上必要的注释。注释有序言性和功能性两类。注释要包含程序模块的功能、界面接口及进入及离开模块的参数的说明、调用语句的格式。对程序中的数据结构及重要变量和一些主要语句要加以说明。一般讲注释的总量约占全部源程序的三分之一到一半以上。注释要在开发过程中形成,而不能在上机完成后补写。
    (5) 选用有意义的常量、类型和变量标识符,并使这些标识符按一定的规律排列,尽量避免采用容易混淆的英文字母和数字字符作为变量标识符,如英文字母o和数字0、英文字母I、l和数字1等。
    (6) 语句代码要简单,直接,清晰,不要追求奇特怪巧的“技术”。
    (7) 避免过多的循环或条件嵌套,避免复杂的条件测试。一般情况下逻辑运算“非”总令人头痛一些。在多条件测试时,使用括号可增加条件测试的清晰性和可靠性。
    (8) 合理的对用户友好的输入输出格式。交互式I/O中,输入要有提示,并采用自由格式。输出语句要带有输出值的说明,格式要整齐,美观。
    (9) 不要修补结构不好的程序,要忍痛割爱,从新编写。
    5. 上机调试
    一个程序输入后,经过排除了语法错误,能初步地正常运行,并非大功告成了,还要对程序进行一系列的测试。测试是软件开发中很重要的环节,学生通过上机要提高程序调试技术。测试方法有两大类,即黑盒法和白盒法。
    采用黑盒法,测试者不关心程序内部是如何做的,只对程序的接口进行测试,检查程序是否能得到它的“功能说明”所预期的结果。在进行黑盒法测试时,将输入数据按“定义域”分成若干个等价类,在定义域内和定义域外各设计一组有代表性的数据对程序的行为进行测试。程序往往在处理边缘情况时最易犯错误,故检查边缘情况的测试最能暴露出程序中隐含的问题,测试效率也较高。一程序如在各个定义域之中和之外的边界处运行正常的话,一般在其它部分也能正常地运行。
当采用黑盒法测试时发现了错误,根据程序的内部逻辑,凭经验和直觉,用“猜错”技巧对测试方案进行选择和推断,对一些认为是可疑的、易错的路径进行测试。白盒法就是针对程序的各种判断和分支语句设计多组输入数据,对程序的执行进行跟踪,尽量覆盖程序的逻辑。测试时可在怀疑的部分插上标准的打印语句以显示程序的动态行为; 也可利用调试、排错软件帮助定位错误点,以便修改、排除。
 
    6. 整理和完成实验报告
    按照以上步骤写出实验报告,包括问题分析、总体设计、过程设计、数据结构及算法思想、编程、测试步骤、测试数据、对测试中主要问题的解决方法、输出结果。各种文档要求在开发过程中形成,而不能在最后阶段补写(但可誉清)。为了便于他人运行程序,最后还要写出用户使用说明和使用时的注意事项。
    作为实验报告,还应写出通过本次实验所获得的经验、心得、体会、本次实验中存在的问题和尚待改进之处。
分享到:
评论

相关推荐

    Java毕业设计-基于jspm开发的烘焙爱好者网站--论文-附源代码和说明文档.rar

    本资源是一个基于jspm开发的烘焙爱好者网站的Java毕业设计项目,包括完整的源代码、论文以及详细的说明文档。该资源为烘焙爱好者们提供了一个互动交流、分享烘焙经验、展示烘焙成果的平台。 项目采用jspm作为模块...

    macOS应用开发基础教程+源码Swift4.0

    macOS 应用开发基础教程,对 macOS 平台中应用开发的 AppKit 系统...最后介绍了几个小型项目的 demo 开发过程关键代码和开发思路,力求让读者从基础知识,方法论,项目实践多纬度去理解和掌握 macOS 平台的应用开发。

    软件测试方法论

    贝尔实验室开发部 李中超 工程师的软件测试方法论PPT教程

    毕业设计论文_教职工管理系统

    该系统的制作涉及一个数据库、两个数据表及其相关的对话框的制作开发,涉及在工程中增加对话框、调用对话框的方法以及应用程序向导的使用方法。最重要的是,在我的毕业设计中,我将介绍一种新的数据源引用方法,即使...

    ANDROID移动开发基础案例教程

    本书从初学者的角度出发,采用案例驱动式教学方法,对Android基础知识进行讲解。在案例设计上力求贴合实际需求,真正做到把书本上的知识应用到实际开发中,非常适合初学者学习。 本书共10章,第1~2章主要讲解...

    Book.zip macOS应用开发基础教程

    macOS应用开发基础教程 张帆 macOS 应用开发基础教程,对 macOS ...最后介绍了几个小型项目的 demo 开发过程关键代码和开发思路,力求让读者从基础知识,方法论,项目实践多纬度去理解和掌握 macOS 平台的应用开发。

    计算机专业毕业设计-微信小程序案例-微信小程序的食堂线上预约点餐系统--论文-毕设源码+说明文档.rar

    该系统旨在提供一个方便快捷的平台,让学生和教职工能够提前在线预约点餐,减少排队等待时间,提高食堂的运营效率。 资源内容包括完整的论文、毕设源码以及详细的说明文档。论文部分详细介绍了项目的背景、需求分析...

    论文研究-机器人相机空间智能编程方法研究.pdf

    传统的示教编程方式存在操作复杂、效率低、危险性高等不足,严重限制了工业...最后,基于自主开发的机器人平台,开展基于相机空间的虚拟智能编程实验,验证了提出的相机空间工业机器人智能编程方法的可行性及正确性。

    MyEclipse 6 Java 开发中文教程.pdf

    第一章介绍常见的Java软件以及数据库和MyEclipse开发工具的下载和安装方法; 第二章则带领读者通过手工和开发工具对比的方式开发简单的应用; 第三章对Eclipse 开发环境进行介绍;第四章则介绍如何用 MyEclipse 管理...

    java大数据-教程.docx

    认为数据挖据必须需要非常高深的分析技能,需要精通高深的数据挖掘算法,需要熟练程序开发设计。 这两种认知都有一定的偏颇。实际上,数据挖掘本质上是人们处理商业问题的方法,通过适量的数据挖掘来获得有价值的...

    论文研究 - 基于信息工程专业需求的分析开发ESP教材

    本研究旨在分析中国工科本科生对ESP课程的需求,并探讨如何开发ESP教材并相应地改革ESP教学方法。 根据我们的调查,EMI(英语作为教学语言)课程和英语工作场所所要求的沟通能力是最理想的专业英语能力。 大约85%...

    毕业设计论文-基于ASP.NET的在线考试系统的开发

    对实现安全性的途径、方法也提出了更高的技术要求。通过 Internet 来实现网上考试, 是现代教育技术的一个具体实现,具有很重要的现实意义。可以实现教考分离以及考务 工作的全自动化管理,可以有效利用校园网的软...

    AUTOSAR详细介绍.rar_AUTOSAR pdf_autosar_autosar开发环境_autosar教程_autosa

    详细介绍AUTOSAR入门、AUTOSAR方法论、AUTOSAR实时开发环境、AUTOSAR基础软件和Vector AUTOSAR实现。

    学术界的可持续思想管理:学生免费的学生教科书-研究论文

    本文报告了一种创新的方法,以使学生参与开发教科书,并将其作为信息系统课程的一部分。 华盛顿大学(UW)信息学院的学生与毕博(全球管理咨询公司)的顾问和经理合作,开发了变革管理教科书,作为其课程的一部分–...

    使用佛教理论对心灵进行新的计算机模拟-研究论文

    在本文中,我们设计并开发了一个计算机程序,该程序体现了系统的关键组件,包括 Python 编程语言中的意识、心理状态、基于感觉和基于思维的认知过程。 通过利用定时事件、由大脑、特征和对象记忆的中央队列调节的五...

    论文研究 - 当观察数不相等时,开发新的LSD公式

    如果在不等重复的样本之间进行比较[n1#n2#n3#... #nk],统计学家应该多次使用LSD(最小有效差)来实现这些比较,这种方法会消耗更多的时间和精力。... 建议在统计教科书和程序中批准Al-fahham公式。

    软件架构师教程 软件架构

    11_软件架构方法论.pdf ............... 15_数据库设计.pdf ................. 18_开源框架研究.pdf 19_国际商用软件架构权威分析.pdf 20_数据库系统架构研究.pdf 22_面向组件的大规模软件架构.pdf 23_软件构架设计...

    Apect c++ 教程 + 实例 +论文 +期刊 AOP 打包下载

    方法,它是面向过程、面向对象方法的进一步发展。通过引入方面概念,改进关注点的分离(separation of concerns),减少代码缠结(code tangling)解决横切关注点(cross cutting concerns)的问题, 提高软件...

    阿里巴巴 Java开发手册(嵩山版)

    从方法论到业务实战教你在编程中快速协同,避免踩坑; 阿里巴巴《Java开发手册(嵩山版)》今日重磅发布!1300个日夜兼程,虚静出内功,嵩山版首次新增前后端规约等内容,全面助力开发者码出规范,码出质量! 《Java...

    论文研究 - 笔友现在在您的指尖中—开发写作技能的全球协作在线项目

    这项研究探索了通过在线协作项目在英语作为第二语言(ESL)课堂中使用名为PenPal Schools的在线材料开发与世界各地同龄人写作技能的潜力。 进行了一项研究,以提供对PenPal学校有用的方面的见解,这些方面对发展...

Global site tag (gtag.js) - Google Analytics