现代软件工程 第一章 【概论】练习与讨论
http://blog.csdn.net/haoel/article/details/1688104
1. 从第一章的 “四则运算程序” 例子出发, 逐步构建一个能解决实际问题的 “软件”。
http://www.cnblogs.com/xinz/p/7417960.html
2. 软件有很多种,也有各种分类办法:
ShrinkWrap (在包装盒子里面的软件,软件在软盘/CD/DVD上); Web APP (基于网页的软件); Internal Software (企业或学校或某组织内部的软件);Games (游戏); Mobile Apps (手机应用); Operating System (操作系统); Tools (工具软件)
选取对你最相关的一类软件, 请回答:
1) 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的? 他们的目标都是盈利么? 他们的目标都是赚取用户的现金么?还是别的?
2) 你个人第一次用此类软件是什么时候,你当时多大,具体在什么学校读几年级,老师是谁,同桌叫啥?软件是如何到你手里的?例如:邮购,下载,互相拷贝,从应用商店购买,等等。 (这个部分必须详细写,不然这道题目得0分,我要看看全世界的学生怎么抄袭这一段的)。
3)我们知道有些软件是收费的,有些是“免费” 的, 那么,软件公司为何会给你免费使用这个软件呢? 写这个软件的工程师们,他们的工资如果不从你(用户)这里来, 从哪里来呢? 目前你们当地的软件工程师的工资大约是多少,请给出尽量详细的分析,精确到年收入多少万元人民币。
4) 你是如何学会用这软件的?它给你什么好处,坏处? 这些软件是如何处理 bug 的? 如何更新新版本的? 你估计软件团队更新一个主要版本花了多少 人月? 请写上人月的定义. 如果你们宿舍(或者你和另外三四个同学)要做同样水平的软件,请估计你们需要多少时间?
5) 同一类型的软件之间是如何竞争的?你现在还用它么,你为何选择这个产品,而不是它的竞争对手?
6)5年后, 这种软件运行的硬件会有什么变化, 软件再过 5 年还会存在么,为什么?
7)列举你在使用上述软件的时候观察到的 “特殊”现象,它们和硬件有什么不同? 这些能说明软件的某些本质特性么?
同学在写文献综述类的文章的时候, 要参考很多别人的描述或研究成果。 这是无可厚非的, 因为一个人无法亲自经历或验证那么多事情,总要援引间接经验、论断、描述。 关键是 -- 注明引用来源。引用来源不能简单地说 “百度”,而是要指向具体的文章。 如果不注明,就会出大问题。 虽然很多同学以后不会去写科研论文, 但是这个要求坚持,重要引用没有说明的,文章要扣分直到 0 分为止。
3. 成功的程序,成功的软件,成功的软件企业
“写程序” 这个活动大多数情况下是个人行为。 我们听说的优秀程序员似乎都是单打独斗地完成任务。同学们在大学里也认识一些参加ACM 比赛的编程牛人, 他们写的ACM 比赛的程序是软件么? “写程序” 和 ”做软件“ 有区别么? 请采访这些学生。
Edsger Dijkstra 曾经提到:“Software engineering, of course,presents itself as another worthy cause,but that is eyewash: if you carefully read its literature and analyse what its devotees actually do,you will discover that software engineering has accepted as its charter ‘How to program if you cannot.’”[i]
软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看? 请采访一个编程特别厉害的学生 (例如学校ACM 队的队员)。
4. 科学(science),工程 (engineering)和手艺 (craftsmanship)[这个题目可以在期末的时候做]
你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?采访这些不同专业的老师/同学。
如果是计算机系,问老师: 你发现了计算机科学的什么客观规律?
如果是软件工程,问老师:你构建了什么样的软件?你发现了工程的什么规律?
如果是搞ACM 等算法比赛的同学,问他们:你最近又在练习什么手艺?
阅读本书有关软件工程和计算机科学的区别的内容,并看其他文章,谈谈你的看法。
文章举例:http://www.drdobbs.com/architectureand-design/software-engineering-computer-science/217701907
http://www.computer.org/cms/Computer.org/ComputingNow/homepage/mostread/MostRead-SW-SoftwareEngineeringAnIdeaWhoseTimeHasCome.pdf
http://www.exceptionnotfound.net/software-development-is-not-software-engineering-do-we-want-it-to-be/
【或者】我反对作者的观点(提出作者的观点,自己的观点,二者差别,以及理由)。
大学生应该能写出自己的思考, 而不是摘抄书本内容。
8. 软件工程的各种名词、工具的起源和变化
http://en.wikipedia.org/wiki/John_Tukey
在Unix,PC,Mac 上面大家都用什么编程, 按时间先后,列出各个工具第一版出现的时间, 鼎盛时期的用户量(估计),和主要优缺点。
搜索一下 Unix SCCS, Microsoft Visual Source Safe, Microsoft TFS、Git & GitHub,Mercurial、Bitbucket、Trac、Bugzilla、Rationale, Issue,Jira)
按时间次序,列出各个工具出现的时间,鼎盛时期的用户量(估计),和主要优缺点。
- 网页 (只要有浏览器就可以访问软件或服务)
- Windows 平台 (例如最新的Windows 10 支持 PC,Surface,Mobile,甚至Xbox 运行)
- 安卓平台
- iOS 平台 (Mac 和 iPhone)
请找一个同学结对 (参看本书结对编程的内容),两人共同工作 (不能分开干活),从上面的列表中选取两个平台,在每个平台上,写一个最简单的 "Hello World" 类型的程序,把写程序的经历写成博客发布出来,内容包括:
- 什么平台, 用什么编程语言,什么软件构建环境 (IDE),什么软件工程的工具,开发的流程大概是什么,最后程序的源码,和用户界面是什么?
(可以从网上查找相关资料,甚至源程序都可以参考其他人的, 但是要自己把程序编译,运行)
[i] 来源: http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html
现代软件工程 第一章 【概论】练习与讨论相关推荐
- 现代软件工程 第一章 概论 第9题——邓琨
我采访了一只开发了天津8890便民服务网站系统的团队. - 当时的项目有多少用户,给用户多少价值? 现在还有人用吗? 答:当时项目有近万用户,为天津市民提供便民服务平台,例如联系修理家电.水电气.咨询 ...
- 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案
<<c语言数据结构>第一章概论自测题答案>由会员分享,可在线阅读,更多相关<<c语言数据结构>第一章概论自测题答案(4页珍藏版)>请在人人文库网上搜索. ...
- 数据结构与算法——慕课作业——第一章 概论 + 第二章 线性表
重点题: 第一章:小测-2.4.7 第二章:小测-3 & 编程-2.3 第一章 概论 part 1: 小测验 答案: 1.C你选对了 解析: A.向量:直接访问型线性结构 B.散列表:目录 ...
- 【操作系统】第一章 概论 冲鸭!!
第一章 概论 1.1 操作系统做什么? P1 操作系统是? 操作系统的目标 1.2 操作系统的功能 P2 计算机系统的组成 操作系统设计目的 用户视角 系统视角 操作系统的定义 1.3 计算机系统体系 ...
- 分子生物学 第一章 概论
文章目录 第一章 概论 1.1.1分子生物学的概念以及发展简史 1.2.1分子生物学研究概况 第一章 概论 1.1.1分子生物学的概念以及发展简史 广义的定义: 在分子水平上解释生物学现象. (难以与 ...
- 数据结构 第一章 概论
第一章 概论 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合 数据:描述客观事物的符号.是能被计算机识别.处理的符号的集合. 数据对象:数据元素集合.数据子集 数据元素:是组成数据 ...
- 模式识别与机器学习·第一章——概论
模式识别与机器学习·第一章--概论 开篇 模式识别 模式 识别 机器学习 研究目的 发展历史 模式识别简史 机器学习简史 系统方法 系统目标 假说的获得 系统的构成 小结 开篇 这系列博客主要用来回忆 ...
- 软件工程第一章绪论————(2019.12.27学习笔记)
第一章绪论 第一节软件工程概念的提出与发展 1. 软件危机 1968年,北大西洋公约组织(NATO)在联邦德国的国际学术会议创造软件危机(Software crisis)一词.用来描述因为软件生产率, ...
- 软件工程 | 第一章:软件工程学概述
软件工程学概述 一.前言 二.软件危机 1.典型表现 2.产生原因 3.消除危机途径 三.软件工程 1.概述 2.软件本质特征 3.软件工程基本原理 4.软件工程方法学 1️⃣传统方法学 2️⃣面向对 ...
- 语音识别原理与应用 洪青阳 第一章 概论
目录 第一章 语音识别概论 1.1 语音的产生和感知 1.2 语音识别过程 1.3语音识别发展历史 第一章 语音识别概论 语音识别的基础理论包括语音的产生和感知过程.语音信号基础知识.语音特征提取等. ...
最新文章
- 如何通过网站SEO诊断来做竞争对手的分析?
- 【学习笔记】JAVA IO与NIO(new IO)的对比与不同IO模型的理解
- 劫起|再谈Linux epoll惊群问题的原因和解决方案
- 【安富莱二代示波器教程】第8章 示波器设计—测量功能
- 剥开比原看代码09:通过dashboard创建密钥时,前端的数据是如何传到后端的?
- 开发 Windows 8 Bing地图应用(2)
- dajngo3新建app,并且访问
- Flutter 系列文章:Flutter Text 控件介绍
- 深度学习TensorFlow生产环境部署(模型部署篇)
- matlab2c使用c++实现matlab函数系列教程-prod函数
- matlab 传递函数 画出频率响应,MATLAB环境下频率响应曲线的绘制方法
- Linux下Gogs二进制安装配置
- 数列收敛,极限值唯一
- 手机开机后android,手机开机后出现Android字样然后就自动关机了
- server2008服务器进不了桌面,解决windows server 2008 r2 登录进入桌面只显示一片蓝色背景...
- 矢量网络分析仪的基本原理
- Xtrabackup 数据备份工具使用方法
- S5P4418 Android实时时钟框架介绍
- 六年如逆旅,我亦是行人:一个顾问的六年安全从业经历
- centos7 下greenplum 安装初始化使用