软件工程第一次作业

.设计一个支持自动生成四则运算的程序,并且包含实现真分数四则运算,我采用的程序设计语言是c++,以下是我的程序链接:

https://git.coding.net/mmxf/12345.git

 

选取三个软件并分析各自特点:

一、游戏

游戏的开发初衷可能是为了单纯的消遣娱乐,后来演变成今日这种与商业化紧紧连接的产物,它变得更像是一种“商品”,随着人们对设备需求的不断更新,到如今游戏中的主军力量变成了移动游戏。下面这一组数据可以显示当今游戏市场中移动游戏的重要地位。移动游戏,也就是手机游戏,典型如手机版本的梦幻西游、奇迹等。市场研究公司 App Annie 发布的一份最新数据报告显示,2015年,移动游戏收入占移动应用市场总收入的 85%,达到 348 亿美元。数据报告还显示,2016年,移动游戏的收入将达到 415 亿美元,2020年 将增至 746 亿美元。

所以就游戏来说,通过热度的带动来促使我们在移动端上下载是我们获取这类软件的主要途径。

从游戏的内部特性来说:

1.游戏是程序语言与动画效果相结合的产品。在网络上我们看到的一些大型游戏都是通过3DMAX、MAYA、FLASH等动画软件与JAVA、C++、VB、等程序语言相结合而开发出来的。

2.与用户最直接相关的虚拟数值应该是游戏内部设计中最应该注重的部分。从用户的体验和需求出发,用户当然希望在游戏中角色获得的虚拟装备或者增长值等的用户精神利益不出意外,所以在游戏软件设计过程中对于这些数值的处理就显得的尤为重要。可能一点小小的数值累加差错就会使用户得到不完美的体验。

3.需要详尽的性能测试。

从游戏的外部特性来说:

1.首先,游戏软件的拥有潜在的庞大用户群。这一点主要是针对移动端游戏软件来说的,移动设备的普及以及迅速发展,再加上人类对于娱乐的必要追求,游戏软件拥有一个庞大的需求市场。

2.其次,针对移动端游戏软件来说,它又具有便捷性和移动性。数据调查显示,29.8%的用户在用手机玩游戏以后,电脑玩游戏的时间减少,22.4%的用户手机游戏时间越来越长,仅有10%的用户时间变短,由此可见,移动端游戏已经成为一种普遍的娱乐方式。

3.支持网络。现今的游戏大多支持网络实现,又由于网络为信息的载体,游戏也可以实现网络在线的多用户互动。

二、手机应用

当移动行业还未兴起,APP的种类也并不是很多,最初的APP主要是和移动通讯相关联,用途的方向也比较单一,获取的主要方式也是手机自带,人们获取APP满足自己的各种需求的意识也比较薄弱。随着移动互联网的迅速发展,APP的开发越来越多,也越来越宽泛。这种“寄居”在智能手机系统上的软件,目的是为了完善手机系统中功能的不足。目前的手机系统以Google公司的Android系统和Apple公司的ios系统为主流。

手机APP不是制定好计划,去编程就可以完美实现的,它的开发需要考虑多个方面。其中最重要的一点就是APP要适应手机系统。比如Apple公司的产品中,无论是iphone还是ipad,这些移动设备中的APP获取都来自自家的Apple Store,而Apple Store中的APP绝大数都是不支持Android系统用户的下载获取的,只支持ios系统,而且各个APP支持的ios系统代级还不近相同,所以从这里可以看出APP的开发一定是基于一个特定的系统的。

我们可以在自己的移动设备上观察到APP都有各自的大小。这些大小绝不会比移动设备的内存大,反而是远远小于移动设备的内存,这就决定了APP可以在移动设备上流畅运行。所以这样就丢给开发者一个缩小程序大小的问题。

对于手机应用的测试,它的侧重点可能与一般电脑软件的测试不同。它主要考虑的是交互性方面的bug。比如一个手机通信APP,它一定是基于网络应用的,那么当突然出现断网的情况,那么我APP中通信的信息怎么办?该存储在哪里以便下次打开是还能返回上次用户状态?这些关于交互的问题,如果考虑不周,都会造成APP程序开发的bug。

三、操作系统

操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。操作系统的种类相当多,各种设备安装的操作系统可从简单到复杂,可分为智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。在服务器方面Linux、UNIX和WindowsServer占据了市场的大部分份额。在超级计算机方面,Linux取代Unix成为了第一大操作系统。在智能手机市场,以Android和ios为主。

其实在用过多年的计算机后我们就可以发现计算机的操作系统有如下特点:

1.并行。计算机可以同时处理两个或多个作业,就像你在听歌的同时浏览购物网页一样。这种在同一环境下,多道程序同时运行,这也是操作系统的一大特点。

2.共享。系统中的资源可供内存中多个并发执行的进程共同使用。由于资源的属性不同,故多个进程对资源的共享方式也不同。

3.异步。在多道程序设计环境下,允许多个进程并发执行,由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。

 对于《构建之法》一书提出的一些问题:

1.书上的86页第四章提到了结对复审和团队复审各自存在的问题,结对复审确实是会在软件开发的过程中出现一些编程者的一方对另一方程序代码的理解不能够深入的问题,而团队复审又会有时间、环境、心理等方面的各种冲突,那么我想知道的是,如果在实际软件开发过程中,我们应该选择哪一种复审方式才能使复审效率最大化?或者说采取什么样的方式才能使复审效率最大化?在复审中其实影响效率的最大原因应该是复查者对编码者代码的理解不深入,但是复查者与编码者又有必要剥离(为了避免书中提到过的编码者对自己的代码过于自信的问题),那么这种影响效率的原因是无法避免的吗?

2.本书第七章的一整章都在主要论述微软公司的软件开发的思想和宣言,这一章中提到了MSF的思想基本框架还有过程模型、团队模型等,实际上我们知道这些框架的诞生都是类似微软这样的极具社会实践经验的业界大牛公司的经验得来的,那么对于刚刚接触开发软件的业界小白来说,这样团队的开发思想核心或者一些原则的制定是完全从新开始还是搜罗模板仿照?哪一种方式更有利于团队的未来发展,更能为团队开发铺垫一条好路?

3.书上167页第八章中介绍了9种用户调研的方法。在最后提到了如果用户调研“做过头了会怎样?”这一问题,作者给出了很好的事例和解释,但是没有提到一个恰到好处的用户调研是怎样的,所以针对软件开发中的需求分析这一环节中恰当的用户调研是如果进行的?并且我们获得这些重要的信息后,应该如果去应用才可以起到最正确的辅助开发的作用,而不至于变成作者提到的“互联网给我们带来了用户和数据,我们有这么多各式各样的工具,这是好事,但也会有副作用。”?

4.书中第12章叙述的是用户体验方面。在实际生活中,我们手中拿到的软件除了它的用途适合我们的需求外,对于软件功能符号、界面等视觉上的合理舒适设计也有很大一部分影响。那么设计这些东西的设计者一定是开发人员吗?如果不是的话,那么在开发过程中肯定会遇到一些带功能图标的加入,才能使程序完整实现的情况,那这种时候是程序开发者与设计图标者一起进行软件的开发吗?那么两者之间对这些功能图标的设想是否一致呢?如果基本不会出差错,那么这种图标的设计能够达到客户的需求吗?他们在这种问题上是如果处理和沟通的呢?

5.书中的第16章开头部分讲解了创行,还有“灵光闪现”,书中讲的灵感都是从设计之初的大方向上来说的,如果将“灵光闪现”放到程序开发中,比如我在做一个字符串比较的程序,一开始用的是数组对比的方式,后来中途想到了是不是可以用栈来实现,于是我又重新开始实现我的“灵光闪现”,那如果在程序开发中出现这样的情况了,我应该采取什么样的做法才是正确的?推翻重来的代价实在是太大,如果在软件开发中我原定的设计思路被新的灵感冲击,而我的设计完成了将近一半,这样的情况又该如何选择和应对呢?

原文地址:https://www.cnblogs.com/mmxf/p/8622145.html