软件系统分析与设计
一、什么是系统分析
在具体的研究需求分析之前,我们先了解一下软件工程这个概念。软件工程分为三个层次,过程层、方法层、工具层。在最基础的过程层,最重要的就是一组被称为关键过程区域(KPAs)的框架(KPA的概念在讨论CMM的书中有详细的概念说明)。关键过程区域构成了软件项目的管理控制的基础,并且确立了上下文各区域的关系,其中规定了技术方法的采用、工程产品的,模型、文档、数据、报告、表格等,等的产生、里程碑的建立、质量的保证及变化的适当管理。方法层主要是过程在技术上的实现。它解决的问题是如何做。软件工程方法涵盖了一系列的任务:需求分析、设计、编程、测试、维护。同时他还包括了一组基本原则,控制了每一个的关键过程区域。工具层就很好理解了,他对过程层和方法层提供了自动和半自动的支持。这些辅助工具就称为CASE。事实上需求分析是跨越了软件工程的三个层次的。这一点是和其他的过程是一样的。
可以看到需求分析的位置,它是我们软件开发的第一步。是对用户需求的定义,对软件系统的描述。系统分析的任务:将用户的业务逻辑转化为程序逻辑,计算时间和成本。根据开发人员的理论知识和实际的经验,人们会采用各种满足实际情况的系统分析、开发方
法、步骤以及文档等等。一般情况下,在系统分析书中应该有以下内容(视项目而定):
1、 系统需求说明 说明系统是一个什么样的系统,用市场上现有的系统来类比,
用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。并对系统的发展
可扩充性进行描述(现在没有哪个系统是一次OK的)。说明与现有的系统有什么相同什
么不同,说明未来系统的发展方面以及可移值性等能预见的事情。
2、 系统资源说明 对系统所需要的软件、硬件资源进行说明。描述系统所需要的
所有的TCO成本。包括人员、时间、设备、系统、一次性投入资金、持续性投入资金这样
的所有资源。
3、 系统可行性分析 对系统的实施中的资源进行分析,说明投入的合理性和必然
性,对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性
。
二、系统分析员与程序员
大家应该对这两个词很熟悉了,但是对词里包含的意义可能并不是特别清楚。首先必须说明的是,程序员和系统分析员不存在谁高级谁低级的分别,他们是两种职业,对职业技能的要求完全不同。所以厉害的程序员就是系统分析员的说法是不对的。当然,系统分析员的技能要求他必须要懂得如何写程序,但是他的重心在于如何把一个很大的项目切割成适合个人的小块,然后将这些小块组织起来。程序员的职责就是如何更好更快的实现这些小块。
三、系统分析的方法和工具
UML全称:Unified Modeling Language,统一建模语言,是面向对象的建模语言,主要用于软件系统的面向对象建模。
UML是以面向对象图的方式来描述任何类型的系统,具有很广泛的应用领域。特别是在建立软件系统模型中,它支持从系统需求、系统分析到系统设计的整个建模过程。由于UML建模是一门专门的科学,而我们这门课程的任务是数据库系统开发,所以对于UML我们将有限的注意力集中在认识UML各种图示上。
可以使用Rational Rose 2003来建立UML模型
1) 建立角色
2) 创建用例
3) 创建角色用例关系图
4) 创建时序图
5) 创建协作图
四、系统分析员思想
全局观念是系统分析员必须具备的观念。
如果系统分析员设计时太注重细节,往往会陷入在某个问题上纠缠不清的泥潭。(93年,我论文指导老师的一席话影响了我随后几年对软件开发的理解——今后计算机会越来越快,多写几行代码少写代码无关紧要,最重要的是整体;一开始就错了,某个部份编得再好,也是没有用的) 系统分析员要有面向用户的思想。系统分析员应当有能力将自己扮演成用户,来了解要交付的项目看起来想什么样式,感觉想什么,从而了解用户的想法并挑选出合理部份去开发。从这个意义上说,系统分析员才能获得有意义的见解去引导他的开发组成员。系统分析员头脑中要对项目结局有一个清楚的认识,并保证项目不偏离方向。系统分析员要有根植于技术,高于技术思考问题的
思想。纯粹的程序员通常对最终结果考虑的不是很多,当一种新的技术在市场上出现时,他们对能否按时交付的考虑就比较少,而强烈希望他们的计划能够建立在新的技术之上。因此,系统分析员的想法和行动要象一个用户,又要能够站在技术的高度,成为真正的用户、程序员之间的代言人。
任务难度的预测能力
系统分析员要具备快速的任务难度预测能力以及具备快速确定开发小组人员构成和任务划分的能力。(我将这条归为思想,而不是能力)昆虫自然会长出翅膀,而思想却需要长期的浸润。要做到这点,需要大量的思考、学习。设计远比编程重要。当今软件业的发展,各种开发工具的出现,编程已经不是什么问题,程序员的工作某种程度上讲是将别人现成的东西拼凑堆砌起来。系统分析员要清楚的认识到,现在大多数程序员没有学会怎么去整体的了解一个系统,有些甚至不了解编程(这不是说他们不会写代码)。可视化的开发工具加五花八门的控件,程序员可以偷点懒了。(这可不是夸大,我好几年的管理工作,接触过大量的程序员)基于技术,跳出框架。基于现有技术结合用户需求思考问题,设计时跳出
框架。
系统分析员的关键
获得信任。系统分析员最重要的素质是获得信任,这是成为优秀系统分析员的关键。成熟最为关键。成熟可以为整个项目组提供正确的支持,能够理解技术怎样才能解决用户的需求。
系统分析员的准备工作
统一的各种文档模式,这其中包括今后软件变量、字段命名规则。我推荐用pb制定的规则做基础,通过改造成为适合自身实用的标准。统一的文档管理。统一的分析软件。比如说rose(uml 太规范,国内的软件管理水平根本用不上,只不过尽量应用,你自己对系统分析的理解有好处)方法是思想的放映,在具体方法上就不多说了。我托人从u$a 弄到几本书,用于面向对象系统开发的使用》、《面向对象的分析》、《项目管理》等都是很不错的,推荐大家看看。
我在拙作" 在中国没有人懂计算机" 里发了点牢骚,听说挨了部份人(习惯性的)骂。其实,bbs 本来就是发泄的地方,在这里从来就罕有有内容的文章。
自从" 维纳斯" 登陆深圳后,大家更着眼于从宏观看中国的it业了。中国it这棵小树,说实在的,长到今天实在是不容易。一些人提出了" 反对微软霸权"的口号,不少人呼唤中国" 硅谷" 的出现。微软的成功不是技术的成功,更多的是商业运作的成功。中国it这棵树能长多高,取决于他所植根于的土壤。而现在
的事实是,这片土壤实在是太贫瘠了!如果按我们现在的思路和搞法,是长不成大树,更别指望能结?quot;微软" ," 硅谷" 这样丰硕的果实。如果说,我们的软件技术落后美国十年,我们的硬件制造技术则落后美国二十年,我们的管理水平落后美国至少三十年。而最终决定发展速率的恰恰是我们的死穴——低劣的管理水平。低劣的管理水平的形成的原因有着深厚的背景和多方面的原因。
系统分析工作是解决一个问题的工作,目标是将一个对计算机应用系统的需求转化成实际的物理实现,其中复杂就复杂在实际的面太多。在系统分析过程之中注意问以下的问题,可能会所进行的系统分析设计工作有帮助
1 )您所完成的系统目的是什么?注意不是功能要求,而是目的。也就是为什么要建设、为什么要现代建设。在考虑系统目的时,我更多的侧重于系统的最终目标考虑,因为一个系统不可能一下子完美,为系统留些余地。
2 )您所完成的系统有哪些方面参与,各方面的初衷是什么?那些人可能在系统建设中起重要作用,他们会采取什么样的态度?你对他们有多少影响力?中国it行业的失败之一就是人" 太年轻" ,一定要有领导的支持,否则完蛋。不要认为自己对他们会有多少影响力,即便有,也要尽可能的认为是决策者再影响他们。在中国,一个技术员,你算老几?说到这里我很悲哀。哪些人在系统中起重要作用并弄清楚他们的态度,这点十分关键。
3 )您的系统是否有一个明确的评价标准?最好从参与的各方面都进行考虑。
不知道这样说对不对,在系统建设之前,对你的程序员、对你的领导要有至少不同的两种评价。
4 )你的系统设计思想是什么?是否能够得到各方面的认可。如果高明,对领导、对程序员都采用引导,得到认可的最好办法,就是让他们认可他们自己的想法。(我力图这样做,但做得不好,系统分析员有一点要学会韬光养晦,忍)
5 )你对参与系统设计开发的人员了解吗?他们的特长在哪里,是否愿意与你合作,为什么?你对他们有足够的影响力吗?软件发展到一定的程度,不是编程,不是数学,而是管理。
6 )你的系统开发计划是否完善?你的计划表有明确的阶段吗?任何一阶段都应该怎样完成?如何对这一阶段完成的情况进行评价?
7 )你对所采用的系统开发方法以及工具是否熟悉?你的夥伴是否熟悉?事实上,不是每种好的工具都要使用,也并不一定都要他们熟练掌握。提醒诸位一句,当你将方案做得可以不依赖某个程序员,你在程序员面前就无信任可言,因为从此程序员将受到更大的生存压力。我坚决不在公司使用rose.
8 )你所完成的系统是否有原型?计算机的或者物理的。
系统分析员基本功
以上的几个问题都是在系统分析以及系统规划时涉及到的,供各位参考。
这文章很好,我的话是:" 需求分析实际应该是问题分析".含义是系统要解决的是问题。而不是用户提出的需求。经常发现系统完成后,客户说" 我的问题还没有解决".可是,需求分析稿上的目标都搞定了。
既然是问题分析,所以,熟悉目标系统的知识就是必要的。甚至,可以说,一个好的系统分析员也应该是好的业务专家。
我很高兴在这里遇到许多分析高手,可以交流分析中的问题。我赞同从来的观点。在中国作分析重要的是人气,因为中国的企业级信息系统的建设在很大程度上可以说并非确有需求,而是迫于某种压力。用户在很多时候考虑的不是系统的长远发展,而只是短期的成果,要求开发单位在很短的时间内完成一个很大的系统的开发,没有时间对系统进行周密的分析,在这种情况下,很多开发商就会粗分析,粗设计,尽快进入编码阶段,这样的系统的生命周期肯定不会很长。说了这么多,只是想说,系统分析员确实应是业务和管理专家,并且需要有很好的语言组织能力,他需要根据问题域中存在的问题去尽力说服用户,引导用户需求,毕竟,我们是专家,如果让用户牵着鼻子走,系统不会是成功的系统。(当然了,这要建立在用户是可引导的前提下)本人拙见。
在理解和分析用户的需求时,应说服用户明白:建立计算机应用系统并不是简单地用计算机代替手工劳作,它更应该是管理思想的一次革命,是现用户模式的一次升华和提高。如果系统不能高于现实,开发的系统将长期陷入需求的反复修改,其软件的生命周期也短了。
⑵ 【200分+追分急求答案】用户需求分析和软件系统设计的思路,不懂得别来搅和
我觉得你现在一定是东西做好了但不符合上级要求的吧,否则三个版本的情况比较少见版。。
我个人权把需求与设计文档分为两种:
第一种:如果是给对方领导看的话,你就只要写出对方需要什么功能、需要处理什么数据、以及如何处理的:即用户界面、如何的方便操作、如何的安全可靠、如何的易于扩展、如何的采用先进技术、如何的有面子写出来就行了。就像楼上大哥说的一样。
第二种:给开发团队来看的话,需求分析一定要做细,比如业务需求的用例分析,不要小看这些琐碎的细节,万一考虑不到可能就会成为程序以后的致命错误(不仅仅是BUG,而是设计问题),技术上的细节问题一定要多和开发人员交流。
这样才能做出符合要求的文档。
说句实话,看你这个问题就知道你是刚毕业没什么经验的学生,建议你看看《系统分析与设计方法》原书第七版~~不要拘泥于传统的结构化分析,同样面向对象的分析与设计也要容纳新的元素。
我们的目的是对上让客户信任我们,放心让我们去开发他们的程序;对下则是全面展现你的思维~~~
我的一点个人看法,仅供参考~~
⑶ 软件工程 系统分析 界面设计
http://image..com/i?ct=503316480&z=0&tn=imagedetail&word=%BF%E2%B4%E6%B9%DC%C0%ED+%BD%E7%C3%E6&in=16&cl=2&cm=1&sc=0&lm=-1&pn=15&rn=1
http://image..com/i?ct=503316480&z=0&tn=imagedetail&word=%BF%E2%B4%E6%B9%DC%C0%ED+%BD%E7%C3%E6&in=4&cl=2&cm=1&sc=0&lm=-1&pn=3&rn=1网络图吧中搜一下."库存管理界面"就行了
⑷ 经典的软件工程思想讲软件开发分为以下五个阶段:需求捕获、系统分析与设计、系统实现、测试和维护 UML的
严格来说,都不对。
找一找软件工程和UML的书看看就知道了。
或者网络一下。
⑸ 软件系统设计分析报告
一、项目定义
二、需求分析
三、系统分析
四 系统设计
⑹ 软件设计师 系统分析师..哪个更有发展前途
首先 我回答你最后的问题
正如你所说现在IT行业的证书是相当多的
可是象国家软考专这样的考试是在日属本也是同样被认可的
其次 这个考试是非劳动部举办的
也就是说 你一旦过了某个等级就具有专门的资格 比如助理工程师 工程师和高级工程师
最后呢
我说下软件设计师和系统分析师不是一个等级的
前者是中级的 后者是高级的!
一般情况 后者是比较难考的!
至于薪水方面 计算机从来都是以能力和薪水化等号的!
现在仍然有人用过时的VB画程序 依然一个月基本工资8000+
所以 不要看薪水选你的发展方向!以自己的适合的道路去选择!
最后祝愿你在考试中取得好的成绩!
⑺ 软件系统分析与设计相关题目
订单流程(订单数据来源/邮寄地址/中转地址/)
仓库信息(地理位置/环节/容量)
货车物回联网实答时获取地理位置
高速公路/普通路线油费/折损费/司机人工成本/财务及其他工作人员成本
天气因素/临时封路等因素导致的成本变化
订单流转周期监控,生命周期预测
大致过程就是这样的.主要过程活动就是物联网信息监控,各阶段成本跟踪/不可预测事件的收集.
主要参与者有:订单员/派发员/司机物联网/仓库管理员等.
对应的输出产品有:订单信息录入/配送信息录入/订单进度/订单流转
⑻ 求助系统分析师VS软件工程师
系统分析员又称系统分析师,英文system analyst,简称SA。 是指具有从事计算机应用系统的分析和设计工作能回力答及业务水平,能指导系统设计师和高级程序员的工作的一族。在软件开发流程中主要从事需求分析、信息系统项目架构设计(包括概要设计和详细设计)、开发阶段的主要模块的规划、设计和测试,同时也涉及可行性分析的工作。系统分析师(SA)是负责设计与开发应用软件系统.使其正确的反应出有效的信息,协助企业经营者管理、营运公司的运作者。系统分析师是抽象模型的建立者,他们需要专业的conceptionmodel(概念模型)知识和基础编程技巧。
⑼ 软件工程,系统分析与设计里面,安全需求的定义
安全需求一般分为:系统的价值、访问控制、加密与认证和病毒防范
⑽ 系统分析师还是软件设计师
你好。复
很难得一个女生能对制软件感兴趣
我们系的女生 不是学双学位就是做管理,很少能做计算机的,做软件可是很累的哦~~~这点阁下可要有点心理准备啊
我们系的到有一些考数据库系统工程师的
相对软件设计师数据库会轻松一点吧
回到你的问题
对于你的疑问
首先回答你:软件设计师 absolutely
首先 层次上 软设中级 系分高级
中级重在知识体系
高级重在实战经验
对你一个在校大学生来说,实战经验肯定不懂,你能有多少项目经验呢
高级的考试会比较吃力,到最后吃力了还一无所获
所谓人生之所以痛苦 是因为追求错误的东西
做计算机的,有多么企业看重你的证啊,特别是做软件的,企业看重你的个人能力,不看证书,有证书,没能力,拉到。 没证书,有能力,照走。
所谓证书,只是在事业单位 国家单位 会有一些作用。
当然也不能说的一无是处,只是不要寄望太多。
本人大四的
上半年过的软设
个人觉得还是先考软设吧
先建立完整的知识体系。慢慢积累经验吧
重述一边:
人生之所以痛苦 是因为追求错误的东西。
望君珍重!!
GG