有点关于Java的小问题,想请教各位大虾。。
1.如何理解软件开发流程?2.面向对象有哪些好处?
答案:答案补充
软件是由拥有特定技能的人经过一系列专业活动后生产的产品。评价一个软件产品好坏的衡量标准有软件是容易被维护的、软件工作稳定。开发好软件的基础是由合适的人按照正确的工作方法才能得到。
软件开发过程事由一系列活动互动组成,这些活动的数量小到区区几个,大到几十个。每个活动具有不同各特点,有些活动简单;有些活动复杂。
人如何参与这些活动的呢?也就是说人是如何才能与这些活动契合在一起?答案是角色。角色定义了在软件工程组织的环境中,个人或协同工作的多人小组的行为和职责。角色代表项目中个人承担的任务,并定义其如何完成工作。每个人按照自己所处的角色,进行与此角色相关的各种活动。这些活动不一定集中在一段时期,它很可能在渗透进项目开发的前前后后。角色定义了人员关注的领域,并且明确要求了活动所需达到的目标。
软件开发的大大小小的活动是有序的,每个活动都要依赖前面活动带来的成果并为后续的活动提供支持。为了很好的描述这种有序性以供我们更好的规划过程,我们将这些活动分门别类的组织成流程。流程的定义如下:采用一种有意义的顺序描述产生有价值结果的活动,并显示角色之间的交互作用。一个工作流程就是一系列活动,这些活动产生的结果是可见的价值。
我们通过工作流程的帮助来了解软件开发过程不同时期我们所关注的特定领域情况。比如业务建模我们用来理解用户业务及组织的知识;需求关注用户的需要及目标;分析设计关注系统的构架;实施关注构件的开发及集成;测试关注软件缺陷及功能的有效性;部署关注用户如何正常使用软件;配置与变更关注维护项目的完整性;项目管理关注于计划;环境关注于选择项目开发所需要的必要活动等等。
虽然我们采用核心工作流程分类法来说明某个特定领域的活动。但这些特定领域的活动以及活动之间的关系,角色等依然是数目庞大且关系复杂。因此有必要将它们分解为更小的片断来加以详细考察。这就是RUP中提及的工作流程明细。我们在通过一个流程解决一个特定领域问题时,往往需要应用多个工作流程明细。这些工作流程明细包含多个角色和活动,这些活动可能需要顺序执行,也可能需要并发执行。每个活动均需要输入工件或者输出工件。
那么工作流程与工作流程明细最大的区别在于,工作流程是有序的执行活动,而工作流程大部分都是“一起”执行的活动。它会同时执行多个活动,考虑多个工件。因此在宏观上来看,工作流明细是工作流流程上的节点,这个节点上的所有活动在时间上处于同时并发的状态。
在我们了解了活动与流程的关系后,我们还需要详细剖析一下活动究竟是个什么东西?活动是参与项目的角色为提供符合要求的结果而进行的工作。按照RUP的说法每个活动都是个工作单元。每个单元的内容均由涉及的角色来说明。活动历时一般不会很长,几小时到几天,太小它将被忽略,太大将会超出工作流程的范围。
我们把活动比作奶牛,它需要吃料同时也能产出牛奶。活动的养料就是输入工件,产品就是输出工件。它的输入工件来源于其它活动的产品,而它的输出工件又被当作其它活动的养料。在跌代式的开发中,我们需要对某种工件进行多次活动,理解这个将是理解跌代开发的关键。这里面包含两层意思。首先跌代是针对某个工件进行的,它的目的就是通过反复不断的修正,使工件保持最新的反应。第二跌代是反复运用某种活动的过程,通过这种方式保正能够对所做的工件拥有不断深化或者创新的理解,使得所创建的工件能够保持在最接近正确结果的状态。
活动既然是种工作那么它就会拥有自己的工作流程。这种工作流程与我们前述的工作流程有很大区别。前述流程是种分类的方式,体现的是我们对某个特定领域的关注。而活动的工作流程则是一种为了达到工作目标而进行的有序步骤,因此我们把它统称为“步骤”。
这种步骤主要分为三类:构思步骤,在这一步骤中,角色了解任务的实质、收集并检查输入工件、规划输出结果。执行步骤:在这一步骤中,角色创建或更新某些工件。复审步骤:在这一步骤中,角色按某些标准检查结果。一项活动并非在每次实施时都一定执行所有步骤。
到这里,我说明了在软件开发的两个重要因素:人与流程。拥有与工作角色相适应的能力的人,对于顺利实施软件开发流程具有十分重大的意义。假如在辅助正确的软件开发方易做图,诸如领域模型驱动、迭代等。再拥有合适的设计方法比如模式、面向对象等。开发出好的软件产品将不再是一种梦想。中国与国外顶级开发水平的差距真正需要较劲的地方也无非就这三个方面了。
名词解释:
工件是流程的工作产品:角色使用工件执行活动,并在执行活动的过程中生成工件。工件是单个角色的职责,它体现的是这样一种思想:流程中的每条信息都必须是一个具体的人的职责1、通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途;
2、我们可以在标准的模块上(这里所谓的“标准”指程序员之间彼此达成的协议)构建我们的程序,而不必一切从头开始。这可以减少软件开发时间并提高生产效率;
3、数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭;
4、允许一个对象的多个实例同时存在,而且彼此之间不会相互干扰;
5、允许将问题空间中的对象直接映射到程序中;
6、基于对象的工程可以很容易的分割为独立的部分;
7、以数据为中心的设计方法允许我们抓住可实现模型的更多细节;
8、面向对象的系统很容易从小到大逐步升级;
9、对象间通讯所使用的消息传递技术与外部系统接口部分的描述更简单;
10、更便于控制软件复杂度。
当需要将以上所说的所有特性有机的结合于一个面向对象系统中,它们之间的相对重要性就取决于工程的类型和程序员的喜好。为了获得上述的某些优势,必须考虑很多事情。例如,对象库必须可以被重用。技术还在不停的发展,现有的产品也会很快的更新换代。如果重用没有能够实现,那么就需要进行严格的控制和管理。软件工程咯...自己实践....
哎呀...这种问题百度一下一大堆你问的这两个问题,客观的说,确实很难回答,这些东西 百度 Google 点一下就有很多,但是我觉得,有些东西还是实践才能出真知,那些东西看了不去自己体会终究是别人写的,所以能重点还是自己编程对比吧!!