软件工程第一次作业补充
花20分钟写一个能自动生成小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算。
代码地址:
(https://git.coding.net/zhangying1500802006/software01.git)
在一周之内快速看完《构建之法》,列出你不懂的5-10个问题,发布在自己的博客。
对构建之法的问题:
(一)书中第15页提到软件工程的目标是创造足够的软件。第十四章讲到软件工程质量保障。Bug的多少可以直接衡量一个软件的开发效率,用户满意度,可靠性和可维护性。经过查找资料,可以确定一系列的软件质量指标:
1、功能性的质量指标
功能的正确性:系统功能和用户的实际需求、已定义的产品规范一致。
功能的准确性:系统产生的结果在精度允许的误差范围内。
功能的完整性:所有功能及其定义清楚、可用。
2、可用性的质量指标
可操作性:容易使用和操作,包括理解用户界面、适应一些特殊用户的可选项等。
通用性:数据显示、网络通信接口和用户界面等都遵守已有的软件标准。
一致性:在软件开发整个生命周期内建立和使用相同的标准,保证全局变量、数据类型、出错处理的命名和使用一致。
3、可靠性的质量指标
自我恢复能力:当系统的某个功能失效发生时,系统在当前环境下能实现故障自动转移,重新自动配置、继续执行的能力,软件系统具有自我检测、容错、备份等机制,尽量做到独立于硬件的编码、硬件设备之间的通信协议一致等。
健壮性:各种恶劣环境(大数据量、大用户量)下系统能正常工作。
分布性:软件系统的某些子功能或子系统被定位于不同的处理主机、存储设备。
4、性能的质量指标
有效性:系统在通信、处理、存储等方面占有很少资源或者对所使用的资源进行了优化。
完整性:系统具有良好的安全管理,能防止不安全存取系统、防止数据丢失病毒入侵等。
易存取性:对系统的存取权限设置清楚,存取操作方便,存取操作有记录。
5、可维护性的质量指标
模块化:指讲一个复杂的软件系统分解为分别命名并具备最小耦合性、很强凝聚性、结构化的组件。
灵活性:容易为系统增加一个新功能或者新的数据而不需要进行大量的代码修改或者设计修改。
可测试性:测试软件组件或者集成产品时查找缺陷的简易程度。
可追溯性:对一个特殊需求容易找出相应的代码,反之,也可以根据代码找出特定的需求。
兼容性:软件、硬件、通信系统之间协调及兼容其他系统的能力。
可解释性:相关文档齐全、符合标准、逻辑清晰、描述准确、用词恰当,容易理解和定位。
6、可移植性质量指标
适应性:系统不依赖于环境,即系统不做修改或作很少的修改即可运行在其他环境下。
易安装性:与在指定的环境下安装软件所需努力有关的软件属性。如在线更新、安装包自动生成等。
可重用性:一个软件组件除了在最初开发的系统之外应用于其他系统的能力。
互操作性:软件系统与其他系统交换数据和服务的难易程度。
可替换性:与软件在该环境中用来替代指定的其他软件的机会和努力有关的软件属性。
衡量软件质量的那一部分指标是首先考虑的?通俗的说是不是软件质量就是客户满意的程度?
(二)软件工程都是在相互合作中完成的,第四章讲到两人合作有不同的阶段和技巧。从萌芽阶段到磨合阶段,再到规范阶段,创造阶段,到最后解体阶段。这几个阶段中有很多沟通技巧需要我们学习,而且合作对象的性格对软件的开发也有很大的影响,不同性格对合作有多大影响?应该如何应对?
(三)IT行业不能缺少创新,创新可能会给企业注入新的活力和生命周期,但是有时候人们对于新事物接受起来非常迟钝,往往会先入为主,创新可能并不会被看好,甚至结果也不尽人意。怎样让别人接受你的创新是个值得深思的问题。比如经常用的一个软件新浪微博,新浪会更新页面增加一些功能或者改变一些原有的功能。而对于改变有些会让人叫好,有些让人觉得使用起来并不方便。对于这些变化,我想知道在企业中创新的想法如果被提出来,最终是怎样被接受然后开始实行的呢?
(四)第五章介绍了软件的团队模式:主治医师模式,明星模式,社区模式,业余剧团模式,秘密团队,特工团队,交响乐团模式,爵士乐模式,功能团队模式,官僚模式等,团队开发模式:写了再改模式,瀑布模型,RUP统一流程,老板驱动的流程,渐进交付的流程(MVP和MBP),TSP的原则,团队模式和团队的开发模式有什么联系?
(五)看完第十二章用户体验是软件成功与否的关键,想追求好的用户体验就要从用户的角度考虑问题。但是用户体验有时会和软件质量冲突,比如书中提到的一个例子,为了更好的用户体验,将核磁共振机的通道加宽,只能牺牲扫描仪成像质量。如果将用户体验放在第一位,会不会出现本末倒置的错误?怎样来平衡这个问题呢?
软件有很多种:包装在盒子里的软件、基于网页的软件、企业或学校或某组织内部的软件、游戏、手机应用、操作系统、工具软件,选取三种软件,请分析它们各自的特点。
新浪微博(基于网页的软件):
1.微博可以即时发布动态,获取信息方便快捷,可以在微博上关注自己感兴趣的东西,对信息进行浏览,也可以发布信息供别人浏览,交互性很强,算得上是现在的一个主流社交媒体。
他们的目标有盈利性,会对会员用户开放一些特殊功能,引导用户充会员,还有打广告微博推广都会收费,但是普通用户也可免费使用。
2.微博可以在软件商店直接下载。
3.新浪公司的程序员会处理新的bug,根据用户需求进行优化更新版本,使用户体验更加方便功能更加强大。
4.新浪微博具有先发优势。是中国领先的门户网站,资金充裕,足以支持微博的研发和推广。微博有众多的名人活跃用户。明星,媒体人,企业高管都是新浪微博的活跃用户,这些名人带来的广告效益为新浪微博的推广带来巨大的便利。众多公司企业主流媒体入驻微博,与同类软件相比,具有很大的优势
QQ软件:
腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能,是一款很方便的社交软件。其合理的设计、良好的易用性、强大的功能,稳定高效的系统运行,赢得了大家的青睐。具有一定的赢利性。有些功能是需要收取费用。
在官网,网页或者软件商店里免费下载
程序员后台修复bug,用户下载更新。
QQ得益于注重用户体验、持续不断的微创新和一站式服务,使用户产生依赖。相比于同类软件功能强大。
WPS(工具软件):
1.WPS是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。具有内存占用低、运行速度快、体积小巧、强大插件平台支持、免费提供海量在线存储空间及文档模板、支持阅读和输出PDF文件、全面兼容微软Office97-2010格式(doc/docx/xls/xlsx/ppt/pptx等)独特优势。有安卓版可以在手机上使用,覆盖Windows、Linux、Android、iOS等多个平台。是一款免费的办公软件。
2.可以在WPS官网或软件商店直接下载使用。
3.后台修复bug,用户选择下载更新。
4.WPS Office支持桌面和移动办公。且WPS移动版通过Google Play平台,已覆盖的50多个国家和地区,WPSfor Android在应用排行榜上领先于微软及其他竞争对手,居同类应用之首。
列举你在使用上述软件时观察到的“特殊”现象,它们和硬件有什么不同?这些能说明软件的某些本质特性么?
软件的使用主要依靠硬件的支撑,它的信息反馈依靠硬件(显示器等工具)来输出、输入,而硬件的调试可以不用软件就可以完成,而且硬件的使用需要依靠外部资源(比如电,而软件主要依靠硬件,软件本身不依靠电的,和硬件相比,软件是不能真实的感受到的,软件不同于现实生活中的实体,真实地存在在某个位置、某些地方。软件功能强大、更新速度快、用户体验较好,结构也没有底层硬件那么复杂。
软件的本质属性,即为可变性,并且更新速度远大于硬件。