软件开发 问题 软件开发面试常问问题
摘要:软件开发的问题软件开发语言多种多样,不能很直观的说那种语言的优劣。只是他们适用的场合略有差别,如果你想做企业级应用(企业的管理BS或者CS系统)最好使用java(BS)、net(CS)的语言标准来完成...
发布日期:2021-04-25软件开发的问题
软件开发语言多种多样,不能很直观的说那种语言的优劣。
只是他们适用的场合略有差别,如果你想做企业级应用(企业的管理BS或者CS系统)最好使用java(BS)、net(CS)的语言标准来完成,如果是做游戏也要看具体是什么类型,网页游戏(FLEX、FLESH)、手机游戏javaME、其他还有很多很多。
先考虑一下自己想要实现什么功能再去根据自己的构想查下最适用的实现语言和技术,找准方向一定可以完成自己的构想。
然,软甲开发是个枯燥的过程,尤其是初学需要一边看基础知识一边实现。
建议你找准学习方向,学会基本知识后就可以开始按照想法写自己的东西了,遇到解决不了的问题或者实现困难可以查看互联网上的相关信息,会有许多遇到同样问题的人提供的解决办法。
如果想要在程序方面有职业的考量,建议你报个培训班系统的学习一下这方面的东西,毕竟有老师可以帮你巩固基础。
祝你成功!
软件开发的主要任务是解决“如何做”的问题
软件开发的主要任务是解决逗如何做地的问题 一、问题识别 首先系统分析人员要研究计划阶段产生的可行性分析报告和软件项目实施计划。
主要是从系统的角度理解软件并评审用于产生计划估算的软件范围是否恰当,确定对目标系统的综合要求,即软件的需求;并提出这些需求的实现条件,以及需求应达到的标准,也就是解决要求所开发软件做什么,做到什么程度。
这些需求包括: (1)功能需求:列举出所开发软件在功能上应做什么,这是最主要的需求。
(2)性能需求:给出所开发软件的技术性能指标,包括存储容量限制、运行时间限制、安全、保密性等。
(3)环境需求:这是对软件系统运行时所处环境的要求。
例如,在硬件方面,采用什么机型、有什么外部设备、数据通信接口等等;在软件方面,采用什么支持系统运行的系统。
(4)可靠性需求:各种软件在运行时,失效的影响各不相同。
在需求分析时,应对所开发软件在投入运行后不发生故障的概率,按实际的运行环境提出要求。
对于那些重要的软件,或是运行失效会造成严重后果的软件,应当提出较高的可靠性要求,以期在开发的过程中采取必要的措施,是软件产品能够高度可靠地稳定运行,避免因运行事故而带来的损失。
(5)安全保密工作需求:工作在不同环境的软件对其安全、保密的要求显然是不同的。
应当把这方面的需求恰当地作出规定,以便对所开发的软件给予特殊的设计,使其在运行中其安全保密方面的性能能得到必要的保证。
(6)用户界面需求:软件与用户界面的友好性是用户能够方便有效地使用软件的关键之一,从市场角度来看,具有友好用户界面的软件有较强的市场竞争力。
因此,必须在需求分析时,为用户界面细致地规定达到的要求。
(7)资源使用需求:这是指所开发软件运行时所需的数据、软件、内存、空间等各项资源。
另外,软件开发时所需的人力、支撑软件、开发设备等属于软件开发的资源,需要在需求分析时加以确定。
(8)软件成本消耗与开发进度需求:在软件项目立项后,要根据合同规定,对软件开发的进度和各步骤的费用提出要求,作为开发管理的依据。
(9)预先估计以后系统可能达到的目标。
这样,在开发过程中,可对系统将来可能的扩充与修改做准备,一旦需要时,就比较容易进行补充和修改。
功能性需求是人们普遍关注的,但对非功能性需求的分析常常被忽视。
其实非功能性需求并不是无关紧要的,它们的主要特点涉及到的方面多而广,却容易被忽略,任何一个软件的非功能性需求都要根据其类型和工作环境来确定。
问题识别的另一项工作是建立分析所需要的通信(沟通)途径,以保证能顺利地对问题进行分析。
分析员必须与用户、软件开发机构的管理部门、软件开发组的人员建立联系。
项目负责人在此过程中起协调人的作用。
分析员通过这种通信途径与各方面商讨,以便能按照用户的要求去识别问题的基本内容。
此外,如果在进行需求分析之前没有做过可行性分析,那么补充完成这部分工作往往是必要的,从问题定义和调查研究入手,与用户密切联系,详细了解问题提出的背景、弄清要解决什么问题,然后从软件系统特性和用户目标出发,做市场调查和现场考察。
仔细收集信息之后进行数据分析和功能分析,建立系统的高层逻辑模型,再进一步做成本/效益分析。
最后提交一份可行性分析报告,从技术、经济、社会效应等方面论证可行性,以确认软件开发的目标是否可行。
二、分析与综合 需求分析的第二步工作是问题分析和方案的综合。
分析员需从数据流和数据结构出发,逐步细化所有软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,分析它们是否满足功能要求,是否合理。
依据功能需求、性能需求和运行环境需求等,剔除其不合理的部分,增加其需要部分。
最终综合成系统的解决方案,给出目标系统的详细逻辑模型。
在这个步骤中,分析和综合工作反复地进行。
在对现行问题和期望的信息(输入和输出)进行分析的基础上,分析员开始综合出一个或几个解决方案,然后检查它的工作是否符合软件计划中规定的范围等等,再进行修改。
总之,对问题进行分析和综合的过程将一直持续到分析员与用户双方都感到有把握正确地制定该软件的规格说明为止 常用的需求分析方法有面向数据流的结构化分析方法(简称SA)、面向数据结构的Jackson方法(简称JSD)、面向对象的分析方法(简称OOA)等,以及用于建立动态模型的状态迁移图或Petri网等。
三、编制需求分析文档 在软件开发的瀑布模型中,每个阶段形成的最终文档是阶段完成的里程碑,因而,需求分析阶段编制文档以备下步评审,也是此阶段的重要任务之一。
以上已经确定的需求应当得到清晰准确的描述。
通常把描述需求的文档叫做软件需求规格说明书。
同时,为了确切表达用户对软件的输入输出要求,还需要制定数据要求说明书及编写初步的用户手册,着重反映被开发软件的用户界面和用户使用的具体要求。
此外,根据在需求分析阶段对系统的进一步分析,从目标系统的精细模型出发,可以更准确地估计所开发项目的成本与进度,从而修改、完善与确定软件开发实施计划。
四、...
软件开发过程有哪些问题?
软件开发过程问题多多,且并不因软件开发工具的完善而有大的改善,软件工程控制的重要性越来越被重视。
软件开发过程的问题常有如下几种: (1)对软件开发成本和进度的估计常常很不准确。
实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。
这种现象降低了软件开发组织的信誉。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。
(2)用户对“已完成的”软件系统不满意的现象经常发生。
软件开发人员常常在对用户要求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序。
软件开发人员和用户之间的信息交流往往很不充分,“闭门造车”必然导致最终的产品不符合用户的实际需要。
(3)软件产品的质量往往靠不住。
软件可靠性和质量保证的确切的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都导致软件产品发生质量问题。
(4)软件常常是不可维护的。
很多程序中的错误是非常难改正垢,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需要在原有程序中增加一些新的功能。
“可重用的软件”还是一个没有完全做到的、正在努力追求的目标,人们仍然在重复开发类似的或基本类似的软 件。
(5)软件通常没有适当的文档资料。
计算机软件不仅仅是程序,还应该有一整套文档资料。
这些文档资料应该是在软件开发过程中产生出来的,而且应该是“最新式的”(即和程序代码完全一致的)。
软件开发组织的管理人员可以使用这些文档资料作为“里程碑”,来管理和评价软件开发工程的进展状况;软件开发人员可以利用它们作为通信工具,在软件开发过程中准确地交流信息;对于软件维护人员而言,这些文档资料更是至关重要必不可少的。
缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
由于微电子学技术的进步和生产自动化程度不断提高,硬件成本逐年下降,然而软件开发需要大量人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而持续上升。
美国在1985年软件成本大约已占计算机系统总成本的90%。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
软件开发问题
个人观点,仅供参考。
VB如果不是.NET,请你放弃吧,那东西最多只是个玩具。
DELPHI现在似乎后劲不足,没有重量级的程序是用这个编写的。
(《传奇》倒是用这个写的……不过说真的,用C配合OPENGL开发个传奇,比用DELPHI简单多了……) JAVA不好说。
推荐你学CC++,真的,不要怕难学,有兴趣就足够了。
学了这个再回头看其他语言,那简直就是个渣啊……(其他语言的程序员不要扁我。
)其他语言能用最快的速度建立一个界面,但执行效率实在是不敢恭维,CC++正好相反,写个界面有点烦,但效率高,最重要的是,许多高级算法只有C能够使用,其他语言根本承受不了所需要的复杂度。
软件开发计划制定中的几个问题是什么?
1.1 详细设计不彻底 详细设计的不彻底,导致开发计划制定后执行的空洞,从而无法真正实现计划的实现和监控,大多的情况是在不断的弥补,或者进度的追赶,从导致代码的质量无法保证,甚至亦无法保证功能的实现。
1.1.1 详细的设计的不足 很多开发人员在接到开发任务后,担心不能及时完成任务,在匆忙做完了概要设计(其实此时的概要设计可能根本不能满足需要),以没有时间为借口,直接进入到编码阶段,没有对软件系统进行更为详细的设计,从而导致了对开发中出现的问题没有做出相应的应对措施。
而且在出现问题后,对问题认识的不足(包括担心问题的出现会使自己的技能被别人否定等),和解决方法的缺乏,从而导致了问题的堆积和时间的流失,到最后使得项目的进度不得不发生了延迟。
众多公司的项目和产品中普遍存在这个问题。
1.1.2 详细设计应该达到的地步 详细设计应该能够达到一个这样的地步,比如,在一个模块所需要实现的功能基础上,对此模块再次进行的详细设计,以至不可再分,甚至可以细化到可以实现的某一个具体的函数、类、属性等之上。
而且不遗漏细节! 比如页面设计 可以以页面为单位进行详细设计,从而细化到每个页面大概需要实现的基本要素,包括多少个按钮、列表框、输入框等,以及每个页面中的功能点,包括需要连接的数据库等。
这样每个页面的具体时间就能准确的确定,并被执行。
且需要做出一个网页的设计图样,共项目评审使用。
比如图形制作可以以每幅图为单位进行详细设计,从而可以细化到每个可能需要实现的基本要素,包括道路等各项图形要素,以及功能点等。
这样每副图形制作的具体时间就能准确的确定,并被执行。
亦可以做评审使用。
1.1.3 重物的称量 试想,我们需要称量一个重物,如果没有磅秤,只有弹簧称,那么我们只能将此重物进行分割,方能知道此重物的重量,而且需要保证在分割的过程中没有损耗。
否则就需要进行一个定量的、适度的估算,比如百分比等,以弥补分割过程的损耗。
在这个比喻中,我们把重物看成是个项目,分割重物的人是项目经理或系统分析人员,称量的人则是实施开发的人员,分割过程则是项目开发过程。
如果在分割重物的人,没有具备分割的能力,重物的重量将会远远偏离其实际目标。
如果称量重物的人,没有具备称量的能力,重物的重量也会偏离其实际目标,只不过相对于分割重物的人的不称职,离目标可能会近些。
1.1.4 西瓜籽的计算 有时候我们开发项目的过程也想一个计算西瓜籽的过程。
看下面的过程,根据西瓜向阳一面多籽的特性,确立西瓜的中心线,然后将西瓜籽分解成阳面、阴面的两部分,再根据中心线与阳面、阴面的距离,将西瓜进行多次分块,直到我们能够较容易得数出西瓜中的西瓜籽。
这样我们可以对所有的西瓜块进行分类,这样就能够很快的得出西瓜籽的数量。
如果我们对西瓜的结构很是了解,那么即使有些误差,但也会相差无几。
在这里,西瓜是我们需要建立的系统,西瓜籽是我们所需要实现的功能,西瓜籽的数目则是我们的时间,对西瓜的分块和分类则是我们的进度安排。
而我们只有采用科学的方法,才能快捷的获得一个较为准确的项目进度计划。
软件开发面临的问题都有哪些?
手机app开发过程中所遇到的9大注意事项:一、没有规划的开始很多App项目在开发之前,都没有规划好,这就比如,写作文没有大纲,做房子没有建筑图,到最后做出来的app和客户需要的效果大相庭径。
所以在开始 之前就要做好一份书面规划,包括app开发的目的、需要实现的功能,以及预期每个阶段需要完善哪些功能等等,然后根据规划,设计出用户需求的流程图。
二、盲目的创建跨平台app跨平台app在一定程度上,能从用户的实际使用中获得反馈,有利于改善在其他平台发布的版本。
然而跨平台app一般情况下没有全面的功能,对于多个独 立的平台来说,则需要更多的编码。
所以在设计app之前,要展开用户调查,包括不同的年龄、生活方式、教育环境等等,再判断使用安卓和ios的比例,确定 好开发平台。
三、不重视开发人员建议通常产品设计师在得到一些灵感的时候,就会在产品中加入一些其他元素,然而站在开发者的角度去考虑问题,有时候会觉得加进来的这个东西比较多余,而且 和移动设备的操作体验也不匹配,或者这些元素会产生一些不必要的数据。
蓝海汇app开发技术人员介绍:这时如果产品设计师一意孤行的话,很可能会导致产品 变残,或者因此而让用户在使用过程中产生了多余的数据,而放弃此应用。
所以比较好的办法就是,在技术可行,并不影响用户体验的情况下,可以实施这种想法。
四、将app设计成网站模式用户愿意用你的App,主要原因有两种,一是有用;二是精简、快速,两者缺一不可。
如果将app设置成网站形式,不仅打开缓慢,容易闪退,花了大量时间还找不到想要的重点在哪里。
另外,如果用户想要打开网页版,他们还会用手机吗,只有在特别需要的情况下才会使用吧。
五、手机屏幕尺寸不兼容其实这种情况很常见,同一个app在不同手机上排版不同、格式不同,比如说在某些小屏幕的手机上,看到的内容就比较凌乱,给人非常不专业的感觉。
所以开发者需要注意手机屏幕尺寸的兼容性。
六、触发后台程序使用app时,移动设备上也会运行其他后台服务,过多的系统需求会导致设备崩溃,这是常见的大忌。
七、忽视操作系统集成Android和iOS风格、布局和导航都大不相同,这需要匹配创建项目的每一个操作系统来满足用户。
同时,对苹果app而言,它需要专为操作系统而设计的应用。
八、节省测试一个人的思维引导他做的事情,是一个自然过程,所以开发者或设计程序人员对自己开发的或者设计的产品是没法公正判断的,因为他们开发出来的产品正是他 们了解到的样子。
那么就不能由开发者或设计程序人员自己来测试。
作为测试人群,他们应该是目标用户,或者是没有参与开发的人员,但最好不要是家人,因为比 较不客观。
九、迷失最终目的在规划好app开发项目流程以后,不要轻易改变,如果在开发过程中,不断加入新的需求,就会逐渐远离最初的开发目的,这是不能让客户满意的。
那么在有新的 需求或者想法时,要及时在产品开发前,与客户开会讨论并确认,尽量确保开发出来的产品与最初规划的样子相符合。
软件项目开发中常见的问题有哪些?
问题一 需求容不明确、把握不充分 (这一点非常重要) 这是我们经常遇到的问题。
一方面,由于客户(需求方)IT知识缺乏,一开始自己也不知道要开发什么样的系统,或者懒于系统地整理出来,经常是走一步算一步,不断地提出和更改需求,使得实现方叫苦连天。
另一方面,实现方由于行业知识的缺乏和设计人员水平的低下,不能完全理解客户的需求说明,而又没有加以严格的确认,经常是以想当然的方法进行系统设计,结果是推倒重来。
因此,需求分析必须注重双方理解和认识的一致,逐项逐条地进行确认。
问题二 项目工作量化 软件开发的量化是一项很重要的工作,必须综合开发的阶段、人员的生产率、工作的复杂程度、历史经验等因素,将一些定性的内容定量化。
软件开发经常会出现一些平时不可见的工作量,如人员的培训时间、各个开发阶段的评审时间等,经验不足的项目经理经常会遗漏。
同时,还有如下一些原因也是很典型的: (1)出于客户和公司上层的压力在工作周期估算上予以妥协。
(2)设计者过于自信或出于自尊心问题,对一些技术问题不够重视,或者担心估算多被嘲笑。
(3)过分凭经验。
由于有过去的成功经验,没有具体分析就认为这次项目估计也差不多,而没有想到这次项目可能规模更大、项目组成员更多、素质各异、新员工很多,而且是一个新的行业。
问题三 项目组织成员数量与其技术素质的关系 每个公司都希望以最少的成本完成项目,人手不足是大多数项目都会面临的问题。
还有一种情况是项目组成员的技术水平达不到项目的要求,公司只能提供这些分配好的技术人员,或者由于项目经理的失误,在项目工数估算时没有明确要求技术水平,寄希望于员工自己努力。
问题四 开发计划安排不充分 没有良好的开发计划和开发目标,项目的成功就无从谈起。
开发计划太粗略,主要反映在以下几个方面: (1)工作分担责任范围不明确,工作分割结构与项目组织结构不明确或者不相对应,各成员之间的接口不明确,导致有一些工作根本无人负责。
(2)每个开发阶段的提交结果定义不明确,中间结果是否已经完成,完成了多少模糊不清,结果是到了项目后期堆积了大量工作。
(3)开发计划没有指定里程碑或检查点,也没有规定设计评审期。
(4)开发计划没有规定进度管理方法和职责,导致无法正常进行进度管理。
问题五 设计人员能力不足 项目组设计人员能力的低下是项目失败的原因之一。
一方面,由于对技术问题的难度未能正确评价,将设计任务交给了与要求水平不相称的人员,造成设计结果无法实现。
另一方面,随着资源外包现象的日益普遍,一些公司经常因工期紧而匆忙将中标的项目部分转包给其他协作公司,这些公司的设计能力如不加仔细评价,就会对整个项目造成影响。
问题六 项目经理的管理能力不足 有及时把握进度。
项目经理自己也不知道项目的状态,下属人员报喜不报忧,害怕报告问题后给自己添麻烦。
进度管理必须随时收集有关项目管理的数据,开发人员总是担心管理工作会增加自己的工作量,不愿配合。