作者ggg12345 (ggg)
看板Programming
标题[结论2]不能卖os,也要学写os:从程式实作教软工
时间Tue Jul 3 19:04:42 2007
从程式实例教软体工程
是否需以 OS 为例, 有无其他可能是 "纯软体" 的实作例 ?
1.多数看重 OS
2.很多人也强调 软工实作 不必是OS , 可考虑如课程成绩系统
===================================================================
※ 引述《ggg12345 (ggg)》之铭言:
: 可是, 为甚麽是以 OS 为例 ? 可以做为上面这种实例练习的也很多,
: 如 Compiler , 资料库, 多线程的Web server(不是网页) 也是有模组.
: 还有, 动到 OS kernel, 常涉及使用的 Language Compiler 版本与
: Library 的支援, 不仅机器相当於重灌 kernel , 使用的程式语言还
: 会更动到 include 底下的 .h 档与 lib 档, 会让原来其他的 AP 或
: 程式因此受波及变得编译时不正常. 使得机器必须特别安排工作目录
: 与工作区, 让每位学生专用一个大大的独立工作区, 甚至是配属一台
: 专门练习的机器. (当然, 这是很好的系统支援与管理实例)
: 挑 OS 这个课做实例, 就会有配备与帐号管理的问题. 虽然 Nachos
: 使用工作站会很方便, 而且是使用模拟程式代替实质系统, 但要提供
: 这种环境的人力与配备, 支援上还是会让这个 OS 课变得 "特权".
: : 没有模组,无法再度被使用,老是在抱怨bug太多做不完。
: : 真的!!做越多的规划,越能够避免掉房子盖了又拆再重盖,直接在纸上走这条路
: : 就会让我们在软体系统的设计上顺畅许多,bug也能够在控制的范围内
: OS 这个软体可能是模组数量与复杂度最高者之一, 要让学生练习换模组,
: 总要先知道模组大概彼此相关的部份, 教师或助教的熟练是避不了的, 靠
: 教学相长故然是个办法, 但学生若耗太多时间在此课, 别的老师也会受波
: 及而哇哇叫 !
: 此外, 这个课可以发表研究论文的地方较不容易, 老师要被数论文批, 教
: 这种课又要知道很多, 还要能对付实例疑难杂症, 不是很容易生存.
: 为甚麽从实例教软体工程, 却是要挑明以 OS 为例 ?
: 有教软体工程的教师就强调现在要发展的软工是要为软体的发展而服务的,
: 而 OS 先天就是为硬体而服务的软体(这句话是有问题的, OS 也支援所有
: 的软体. 但这表明了部份研究软工者的情结).
===================================================================
※ 引述《clliu168 (风)》之铭言:
: 要学 OS 很多系统的东西都得要懂,所以如果以後做的是系统相关的工作
: OS 这门课的帮助就很大
:
: 以目前的市场生态来说,你自己重写一个 OS 也不可能打的赢 MS,要比
: Linux 受欢迎的难度也很高。但是对於了解系统来说,帮助却是很大
: ( Compiler 也是一样道理 )
:
========================================================================
※ 引述《ggg12345 (ggg)》之铭言:
: : 以目前的市场生态来说,你自己重写一个 OS 也不可能打的赢 MS,要比
: : Linux 受欢迎的难度也很高。但是对於了解系统来说,帮助却是很大
: : ( Compiler 也是一样道理 )
: 是这样没错 ! 不过就不能找那种 "能赢的" 又能学到 "软体工程" 与 "纯软体
: 系统" .
========================================================================
※ 引述《nedbob (狗腿)》之铭言:
: 我倒是觉得
: 单以一个人能力来说 台湾人很强....
: 但是以分工合作来说 台湾人很弱....
: 一个 project 1个人来写 很简单
: 但是同样分给5个人写 那就非常困难了
: 所以台湾的教育再分工的这方面要在加强
:
: 拉回主题
: OS这课程为何会这麽重要
: 写OS就是因为他不是"纯软体"
: 他必须去了解许多的知识(包含硬体软体)
: 才有办法写的出OS或写出好的OS
:
: 我们老师说过 去看看其他科系 应数 物理 电子 电机 资管 ......等等
: 他们一定也有人会写程式 写出来的光鲜亮丽 不会输给资工本科系
: 那资工要怎麽混勒
: 资工要混就是会知道这个领域许多其他科系不知道的知识
:
: OS 为什麽要这样设计
: Compiler 为什麽要这样设计
: 各个 Program Language 各有什麽好坏 设计理念在哪
: .......一大堆知识 这些知识其他科系绝对不会教
:
: 但是这些知识能让资工人写的程式就是比其他科系出身的还要"好"
:
: 结论:
: 所以对一个只要求会写程式的人 现在买本书给他 他就会写了
: 但是要写出资工系水准的程式 你就必须学一大堆有的没的知识了
:
: 所以 OS ....等等的课程重不重要 当然重要了
: 推 abcdefghi:现在软体开发工具做的太好了,只要有兴趣
: → abcdefghi:随便都可以写出程式,不过这些半路出家的
: → abcdefghi:写出来的code,很多都是一条龙,没有layer
: → abcdefghi:,也没有block,更不用讲design pattern的
: → abcdefghi:东西,至於其他CS的基本功,就更不用讲了,
: 推 FlyinDeath:上OS课写OS很好啊..但是软工课用OS当作
: → FlyinDeath:业就不太合适了...
: 推 abcdefghi:没在业界team work过的教授教SE,就像没
: → abcdefghi:写过 C 的人,跑去教大一写 C 一样好笑.
===============================================================================
※ 引述《MasterChang (我爱ASM)》之铭言:
: : 有过经验的应该可以分享一下看法.
: 那为什麽要trace code?就是要用吧?我也很讨厌Trace code,当
: 然有文件更好。只是有文件的code通常很少。所以要trace code。
: 无助於取得技术?软体技术开发能力提升有限?...分析OS 核心可
: 以印证教科书上的东西,让理论贴近现实运作,了解实务上的冲突
: 与妥协。
:
: 虽然市面上讲Linux Kernel分析的书不少,不过真的要了解核心的
: 运作大概需要牛人级的耐心去玩。
: 软体工程,在我看来是广义的系统工程开发,没有妥善的设计规划
: ,没有完整的文件与分析。大概最後就是只是一陀大家都不想要,
: 也没人要的shit。
===================================================================
※ 引述《ggg12345 (ggg)》之铭言:
Trace OS program 主要的一个原因可能是因为最早的 UNIX OS Source 可
以从 Bell Lab 取得, 这对学校的教学与教师都是一种方便. 如果没有这种
Open Source , 又没有参与开发大型软体的经验, 那对教师根本就不太可能
有软体工程的经验, trace code 试着修改模组可以有参与一个大团队, 使用
团队工具与感受内在规范的团队纪律, 这可能是这个标题扯到 OS 的原因吧!
近来的软工都强调与突出是为了要发展 "纯软体" 的软体工程.
纯软体已经排除 OS , Compiler , 甚至 Network 软体.
====================================================================
※ 引述《ggg12345 (ggg)》之铭言:
: ※ 引述《nedbob (狗腿)》之铭言:
: : 一个 project 1个人来写 很简单
: : 但是同样分给5个人写 那就非常困难了
:
: 人月神话的 外科手术式的团队 建议就不是 "分" 给很多人写 !
: 如果不该分的乱分一通, 单一个 coupling 造成的沟通就把程式
: 设计师搞得没效率了. 分模组分工是要讲究 "凝聚" "核心".
:
: 但是 OS 这种课的领域非常清楚, 就是 "制御硬体提供方便性与效率性的软体"
: 是电子计算机这种硬体装置的延伸功能, 是 EECS 含软硬体的范筹 !
:
: 范例是不是因为 Open Source 在起主导作用 ?
:
=========================================================================
※ 引述《MasterChang (我爱ASM)》之铭言:
: ※ 引述《ggg12345 (ggg)》之铭言:
: : OS 是软体, 而且跟硬体有关, 多数 compiler 也是. 如果动 OS 多数就是涉及
: : porting , 那更是会动到 compiler. 嵌入式系统就明显是三者免不了.
: : 使用实例教软体工程, 可不可以举 "纯软体" 的实例, 或者是都不碰硬体的 ?
:
: 不能同意更多了。
:
: 说写OS不用碰硬体,不用碰组译器、编译器、定位器?那是自欺欺人。
: 这种跟硬体关连性这样大的东西跟「软体春天」有个X关系?学校教OS
: 老师哪几个做过Porting的工作?
:
: 既然要找软体产业的春天,定位就要明确,投入资源要确定,每个区域
: 都分一点就是通通发展不起来。应用软体这样多,为什麽一定要拿OS做
: 例子?
:
: 推 nedbob:写个课程成绩系统如何....而且是全班一起写
: → nedbob:我们大一有挑战过....花了2/3学期
: → nedbob:当然最後得成品没有很好.....
: → nedbob:不过模组化的概念倒是表达的很清楚
: 推 MasterChang:课程成绩系统真要写的好,考虑的东西
: → MasterChang:不少呢!!
※ 引述《ggg12345 (ggg)》之铭言:
原来的刘先生建议是 "学国外OS的 使用教学用作业系统 教学法"
假设那个范例就是 UCB 的 nachos ,
1.这个范例公开其 source program 可以透过阅读程式学习.
2.使用 C++ 高阶语言, 使用模拟器简化硬体环境, 使用同一套之追踪除错工具.
3.使用 功能化模组, 设定单一架构, 使用同一套工具与规范.
4.在同一平台与环境但不同之机器上, 学生每个人都能独立各做各的, 不互相干扰,
各替换模组也不相依, 不同学生做不同块模组可以并成一个新系统.
5.强调测试与量测.
软工可以自己找一套符合上面 5 点的 AP source program 来提供软工教学 ! 课
程成绩, 或选课系统 都有很高的契合度.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.1.146
※ 编辑: ggg12345 来自: 140.115.1.146 (07/03 19:05)