需求基线(Requirements baseline)是团队成员已经承诺将在某特定产品版本中实现的功能性和非功能性需求的一组集合。需求基线就是把固定的需求都划一根"线",说明这些需求已经确定下来,添加新的需求或修改原有的需求都必须通过需求变更流程来操作。已经通过正式评审和批准的规格说明或产品,可作为进一步开发的基础,而且只有通过正式的变更控制过程才能修改它。
1.3.1,需求基准
A requirements baseline is a snapshot in time that represents an agreed-upon, reviewed, and approved set of requirements that have been committed to a specific product release.
That “release” could be a complete delivered product or any interim development increment of the product. When stakeholders “sign off” on requirements, what they’re really doing is agreeing and committing to a specific requirements baseline (whether they think of it in those terms or not).
Once the project team establishes a requirements baseline, the team should follow a pragmatic change control process to make good business and technical decisions about adding newly-requested functionality and altering or deleting existing requirements.
A change control process is not about stifling change; it’s about providing decision-makers with the information that will let them make timely and appropriate decisions to modify the planned functionality. That planned functionality is the baseline.
Typically, a baseline is also given a unique name so that all the project participants can refer to it unambiguously. And good configuration management practices allow the team to reconstruct accurately any previous baseline and all its components.
需求基准是 及时的快照,代表已承诺,已审核和已批准的特定产品版本的一组需求。
该"发布"可能是完整的交付产品,也可能是该产品的任何中期开发增量。当利益相关者"签署"需求时,他们真正在做的就是同意并致力于特定的需求基准(无论他们是否以这些术语考虑)。
一旦项目团队建立了需求基准,团队就应遵循务实的变更控制流程,以就添加新请求的功能以及更改或删除现有需求做出良好的业务和技术决策。
变更控制过程与扼杀变更无关。这是为决策者提供信息,使他们能够及时,适当地做出决定,以修改计划的功能。计划的功能是基准。
通常,还给基线指定了唯一的名称,以便所有项目参与者都可以明确地引用它。良好的配置管理实践使团队可以准确地重建任何先前的基准及其所有组件。
1.3.2,实施需求基准
Whereas the scope definition distinguishes what’s in from what’s out, the requirements baseline explicitly identifies only those requirement specifications that the project will implement. A baseline is not a tangible item but rather a defined list of items. One possible storage location is a software requirements specification (SRS) document.
If that SRS document contains only—and all—the requirements for a specific product release, the SRS constitutes the requirements baseline for the release. However, the SRS document might include additional, lower-priority requirements that are intended for a later release.
Conversely, a large project might need several software, hardware, and interface requirement specifications to fully define the baseline’s components. The goal is to provide the project stakeholders with a clear understanding of exactly what is intended to go into the upcoming release.
Perhaps you’re storing your requirements in a requirements management solution, rather than in documents. In that case, you can define a baseline as a specific subset of the requirements stored in the database that are planned for a given release.
范围定义将内容区分是什么,而需求基线则仅明确标识项目将要实施的那些需求规范。基线不是有形项目,而是已定义的项目列表。一个可能的存储位置是软件需求规范(SRS)文档。
如果该SRS文档仅包含(以及全部)特定产品版本的要求,则SRS构成该版本的要求基线。但是,SRS文档可能包括其他优先级较低的要求,这些要求将在以后的发行版中发布。
相反,一个大型项目可能需要几个软件,硬件和接口要求规范,才能完全定义基线的组件。目的是使项目干系人对即将发布的发行版有确切的了解。
也许您是将需求存储在需求管理解决方案中,而不是文档中。在这种情况下,您可以将基准定义为针对给定发行版计划的数据库中存储的需求的特定子集。
1.3.3,定义需求基准之前要考虑的因素:
Business Rules Determine whether you’ve identified the business rules that affect the system and whether you’ve specified functionality to enforce or comply with those rules.
Change Control Make sure a practical change control process is in place for dealing with requirement changes and that the change control board is assembled and chartered. Ensure that the change control tool you plan to use is in place and configured and that the tool users have been trained.
Customer\ Check back with your key customer representatives to see whether their needs have changed since you last spoke. Have new business rules come into play? Have existing rules been modified? Have priorities changed? Have new customers with different needs been identified?
Perspective
Interfaces See if functionality has been defined to handle all identified external interfaces to users, other software systems, hardware components, and communications services.
Model Validation Examine any analysis models with the user representatives, perhaps by walking through test cases, to see if a system based on those models would let the users perform their necessary activities.
Prototypes If you created any prototypes, did appropriate customers evaluate them? Did the BA use the knowledge gained to revise the SRS?
Alignment Check to see if the defined set of requirements would likely achieve the project’s business objectives. Look for alignment between the business requirements, user requirements, and functional requirements.
Reviews Have several downstream consumers of the requirements review them. These consumers include designers, programmers, testers, documentation and help writers, human factors specialists, and anyone else who will base their own work on the requirements.
Scope Confirm that all requirements being considered for the baseline are within the project scope as it is currently defined. The scope might have changed since it was originally defined early in the project.
TBDs Scan the documents for TBDs (details yet to be determined). The TBDs represent requirements development work remaining to be done.
Templates Make sure that each section of the SRS document template has been populated. Alternatively, look for an indication that certain sections do not apply to this project. Common oversights are quality requirements, constraints, and assumptions.
User Classes See whether you’ve received input from appropriate representatives of all the user classes you’ve identified for the product.
Verifiability Determine how you would judge whether each requirement was properly implemented. User acceptance criteria are helpful for this.
验收测试(AT)是一种用于确定正在开发的软件产品是否满足协议(如合同)规定的要求的测试过程。它有助于验证(通常通过功能测试)软件项是否满足适用于软件产品生命周期的需求和规范,AT可以分阶段执行,并且可以在新的和修改的软件系统的中间或最终软件产品上执行。它是在受控条件下进行的,使用文件化的程序来生成、获取和记录数据,这些数据根据预定的功能、性能、接口质量和确定的质量属性(例如安全性、安全性、可靠性、互操作性)准确地测量软件产品。
2.3.1,验收测试基础
Acceptance testing, a testing technique performed to determine whether or not the software system has met the requirement specifications. The main purpose of this test is to evaluate the system’s compliance with the business requirements and verify if it is has met the required criteria for delivery to end users.
There are various forms of acceptance testing:
User acceptance Testing
Business acceptance Testing
Alpha Testing
Beta Testing
验收测试,一种用于确定软件系统是否满足要求规格的测试技术。 该测试的主要目的是评估系统是否符合业务要求,并验证系统是否满足交付给最终用户的要求。
验收测试有多种形式:
用户验收测试
业务验收测试
Method:Acceptance Testing normally uses the Black Box Testing method and is executed manually. Mostly, the testing does not follow a strict procedure and is not scripted but is rather ad-hoc.
方法:验收测试通常使用黑盒测试方法,并手动执行。通常,测试没有遵循严格的程序,没有编写脚本,而是临时的。
Tasks:Acceptance Test [Execute >> Re-execute]:Test Plan and Test Cases are seldom prepared or followed though it is advised specially for Internal Acceptance Testing.
When is it performed:Acceptance Testing is the fourth and last level of software testing performed after System Testing and before making the system available in production for actual use.
Types:Acceptance Testing can be categorized into two types (Internal and External).
验收测试[执行>>重新执行]:尽管特别建议内部验收测试使用,但很少准备或遵循测试计划和测试用例。
什么时候进行:验收测试是在系统测试之后并且在将系统投入实际使用之前进行的软件测试的第四级和最后一级。
种类:验收测试可以分为两种类型(内部和外部)。
动态图(activity diagram)是阐明了业务用例实现的工作流程。业务用例工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。
3.3.1,活动定义
An activity specifies the coordination of executions of subordinate behaviors, using a control and data flow model. The subordinate behaviors coordinated by these models may be initiated because other behaviors in the model finish executing, because objects and data become available, or because events occur external to the flow. The flow of execution is modeled as activity nodes connected by activity edges. A node can be the execution of a subordinate behavior, such as an arithmetic computation, a call to an operation, or manipulation of object contents. Activity nodes also include flow-ofcontrol constructs, such as synchronization, decision, and concurrency control. Activities may form invocation hierarchies invoking other activities, ultimately resolving to individual actions. In an object-oriented model, activities are usually invoked indirectly as methods bound to operations that are directly invoked.
活动使用控制和数据流模型指定下级行为执行的协调。由这些模型协调的从属行为可能会因为模型中的其他行为完成执行、因为对象和数据变得可用,或者因为事件发生在流之外。执行流被建模为由活动边连接的活动节点。节点可以是从属行为的执行,例如算术计算、对操作的调用或对象内容的操作。活动节点还包括控制流构造,例如同步、决策和并发控制。活动可以形成调用其他活动的调用层次结构,最终解析为单个操作。在面向对象模型中,活动通常作为绑定到直接调用的操作的方法来间接调用。
3.3.2,action定义
An action represents a single step within an activity, that is, one that is not further decomposed within the activity. An activity represents a behavior that is composed of individual elements that are actions. Note, however, that a call behavior action may reference an activity definition, in which case the execution of the call action involves the execution of the referenced activity and its actions (similarly for all the invocation actions). An action is therefore simple from the point of view of the activity containing it, but may be complex in its effect and not be atomic. As a piece of structure within an activity model, it is a single discrete element; as a specification of behavior to be performed, it may invoke referenced behavior that is arbitrarily complex. As a consequence, an activity defines a behavior that can be reused in many places, whereas an instance of an action is only used once at a particular point in an activity.
动作表示活动中的单个步骤,即该活动中未进一步分解的步骤。活动代表由作为动作的各个元素组成的行为。但是,请注意,调用行为操作可以引用活动定义,在这种情况下,调用操作的执行涉及所引用的活动及其操作的执行(类似于所有调用操作)。因此,从包含一个动作的活动的角度来看,一个动作很简单,但是其作用可能很复杂,而且不是原子的。作为活动模型中的一部分结构,它是一个单独的离散元素。作为要执行的行为的规范,它可以调用任意复杂的引用行为。作为结果,
An action may have sets of incoming and outgoing activity edges that specify control flow and data flow from and to other nodes. An action will not begin execution until all of its input conditions are satisfied. The completion of the execution of an action may enable the execution of a set of successor nodes and actions that take their inputs from the outputs of the action.
一个动作可能有一组传入和传出活动边缘,这些边缘指定了其他节点之间的控制流和数据流。直到所有输入条件都满足,动作才会开始执行。动作执行的完成可以使得能够执行继任节点和动作的集合,该后继节点和动作从动作的输出获取它们的输入。
充分性准则是软件测试的中心问题,对软件测试的揭错能力有很大的影响.针对这个问题,给出了充分性准则的两种形式定义,讨论了充分性准则需满足的条件和应具备的基本性质,建立了对充分性准则进行有效性评估的度量指标.最后,总结出几类常用的软件测试充分性准则,指出这些充分性准则所适应的不同测试类型.
4.3.1,充分性的要求
Adequacy refers to the process that the governance management system covers and controls all the quality activities of the organization, that is, the requirements of the quality management system, whether the process is fully developed and controlled, can also be understood as the degree of perfection of the system, that is, compliance.
充分性指治理管理体系对组织全部活动过程覆盖和控制的过程,即管理体系的要求,过程展开和受控是否全面,也可以理解为体系的完善程度,即符合性。
Sufficiency requires that the organization’s quality management system structure should be reasonable, the process should meet the needs of quality management, the procedures should be perfect, the resources should be sufficient, and the ability to fully meet the changing requirements of customers and the market should be fully met. Therefore, when the organization establishes, operates and maintains the quality management system, it should consider the he of the system structure and process.
充分性要求组织的管理体系结构合理,过程满足管理的需要,程序完善,资源充足,具有充分满足用户不断变化的要求的能力,因此,组织在建立、运行和保持管理体系时,要考虑体系的结构和过程的合理性,评价是否符合ISO9001-2015标准的要求,组织的需要和组织的能力,是否具有自我发现问题和 解决问题的能力,以实现持续改性。
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。
5.3.1,类的属性
Attributes are shown in the second partition.
The attribute type is shown after the colon.
Attributes map onto member variables (data members) in code.
属性显示在第二个分区中。
属性类型显示在冒号后面。
属性映射到代码中的成员变量(数据成员)。
5.3.2,类的操作(方法)
Operations are shown in the third partition. They are services the class provides.
The return type of a method is shown after the colon at the end of the method signature.
The return type of method parameters are shown after the colon following the parameter name. Operations map onto class methods in code
操作显示在第三个分区中。它们是班级提供的服务。
方法的返回类型显示在方法签名末尾的冒号后面。
方法参数的返回类型显示在参数名称后的冒号后面。操作映射到代码中的类方法
5.3.3,类图的观点
The choice of perspective depends on how far along you are in the development process. During the formulation of a domain model, for example, you would seldom move past the conceptual perspective. Analysis models will typically feature a mix of conceptual and specification perspectives. Design model development will typically start with heavy emphasis on the specification perspective, and evolve into the implementation perspective.
透视图的选择取决于您在开发过程中的发展程度。例如,在制定领域模型的过程中,您很少会超越概念观点。分析模型通常将概念和规范观点混合在一起。设计模型的开发通常会从着重于规范角度开始,然后演变为实现角度。
5.3.4,类图之间的关系
UML is not just about pretty pictures. If used correctly, UML precisely conveys how code should be implemented from diagrams. If precisely interpreted, the implemented code will correctly reflect the intent of the designer.
UML不仅仅是漂亮的图片。如果使用正确,UML可以准确传达如何从图中实现代码。如果精确解释,则所实现的代码将正确反映设计者的意图。您能否描述每个关系相对于您的目标编程语言的含义。
类模型(class model):描述系统中对象的结构------它们的标识、与其他对象的关系、属性和操作,类模型提供了状态和交互模型的上下文。类模型显示了面向对象的软件系统中的静态类对象(命名框)及其之间的关系(线)。两个重要的关系是泛化(继承)和聚合(整个部分)。
6.3.1,类筛选
For the input and output devices such as screen, keyboard and scanner, we generally think that they are part of POS system hardware, not part of POS software system. But if POS has a requirement that supports both graphical and character interface output, then POS software system needs to deal with this screen related demand. At this time, the screen is a part of POS software system, and domain class needs to be converted into software class. For the sake of simple processing, in the following analysis, I / O devices do not do conversion.
对于屏幕、键盘、扫描仪这些输入输出设备,一般情况下我们认为它们是POS机系统硬件的一部分,而并不是POS机软件系统的一部分。但假如POS机有一个需求是既支持图形界面输出,又支持字符界面输出,那么POS的软件系统就需要处理这种和屏幕相关的需求了,此时屏幕就是POS机软件系统的一部分了,需要将领域类转换为软件类。为了简单处理,接下来的分析中,输入输出设备不做转换。
6.3.2,名称映射
After the screening is completed, we will start to talk about the transformation of domain classes into software classes. The conversion method is very simple. First, regardless of the number of fields, each domain class should be matched with a software class, and the name should be kept the same.
筛选完成后,我们开始讲领域类转换为软件类,转换的方法很简单,直接将每个领域类都用一个软件类与对应,名称都保持一样即可。
这个阶段的结果称为上下文模型(Context Model),它定义领域的上下文,其中表示了领域中软件的主要的输入和输出,识别了与其它软件的接口。
7.3.1,确定领域
The business context model should identify the actors (people, organisations, systems) who play a significant role in the business process or in the business domain, and the business areas of interest relevant to the scope of the work and potential change which may require exploration and further analysis.
业务上下文模型应确定在业务流程或业务领域中扮演重要角色的参与者(人员、组织、系统),以及与工作范围和可能需要探索和进一步分析的潜在变化相关的业务领域。
At this early point in the project we are business modelling at a very high-level in a fairly imprecise way i.e. taking a helicopter view of the business. We should not model detail such as inputs, outputs, business rules, attributes, operations, or states. We are simply trying to set the scene. By doing this graphically, we gain all the usual benefits of modelling, not least using the business context model as a vehicle for merging differing business viewpoints quickly, and for asking the right questions.
在项目的早期阶段,我们正在以一种相当不精确的方式,即从直升机的角度对业务进行建模。我们不应该对输入、输出、业务规则、属性、操作或状态等细节进行建模。我们只是想制造一个场景。通过图形化的方式,我们获得了建模的所有常见好处,尤其是使用业务上下文模型作为快速合并不同业务观点和提出正确问题的工具。
7.3.2,使用方法
For readers not familiar with the Unified Modelling Language (UML), a package indicates an area of interest. A stick man represents any actor in the business domain - a person, an organisation (which in turn represents its customer facing channel such as a website or business-to-business gateway), or a system. I prefer to show a system as a stick man because I need to remember, as a business analyst, that it is playing a part i.e. it is an actor in the business process, performing some of the business activities. I am not in the business of drawing a map of the organisation’s systems but of focusing on the business activity and business logic. It is also worth bearing in mind that when modelling context, we are not yet trying to elicit software requirements.
对于不熟悉统一建模语言(UML)的读者来说,一个包表示一个感兴趣的领域。一个"棒棒人"代表了商业领域中的任何参与者------一个人、一个组织(这反过来又代表了它面向客户的渠道,如网站或企业对企业的门户)或一个系统。我更喜欢把一个系统展示成一个棒手,因为我需要记住,作为一个业务分析师,它正在扮演一个角色,即它是业务流程中的一个参与者,执行一些业务活动。我的工作不是绘制组织系统的地图,而是专注于业务活动和业务逻辑。同样值得记住的是,当建模上下文时,我们还没有试图引出软件需求。
需求获取(requirement elicitation)是需求工程的主体。对于所建议的软件产品,获取需求是一个确定和理解不同用户类的需要和限制的过程。获取用户需求位于软件需求三层结构的中间一层。它描述了用户利用系统需要完成的任务。从这些任务中,分析者能获得用于描述系统活动的特定的软件功能需求,这些系统活动有助于用户执行他们的任务。
8.3.1,获取需求的意义:
Requirements elicitation is a complex process that consists of gathering, researching, defining, structuring, and clarifying a product’s requirements. As a result of elicitation, a BA creates a set of project objectives. These objectives have to be understandable for each team member and represent all of the client’s demands and needs.
During the elicitation process, a business analyst works closely with the client and all stakeholders, studying and validating their needs and assumptions as well as project risks. The discussion ends when stakeholders can think of no new use cases or when the use cases they can think of have a low priority and can be implemented during future iterations.
需求激发是一个复杂的过程,包括收集,研究,定义,构造和阐明产品的需求。作为启发的结果,广管局创建了一组项目目标。每个团队成员必须理解这些目标,并代表客户的所有需求。
在启发过程中,业务分析师与客户和所有利益相关者密切合作,研究并验证他们的需求和假设以及项目风险。当利益相关者没有新的用例时,或者他们认为用例的优先级较低并且可以在将来的迭代中实现时,讨论结束。
8.3.2,需求获取的作用
Establishes the precise scope of work and the budget. Clear, prioritized, and approved requirements allow a development team to accurately plan and estimate a project. That means we can provide the client with a realistic budget and release dates.
Avoids confusion during development. A shared understanding of what should be done, when, and how to finish a project greatly speeds up and streamlines communication. Productive elicitation helps to avoid numerous meetings that should have been emails during development.
Adds business value. To develop a product that will facilitate a customer’s business activities, it’s important to discuss both what should be done by the development team and why. With that understanding, the team can create a solution that meets all the client’s needs.
Reveals hidden and assumed requirements. Stakeholders always know their market and business needs the best. That’s why stakeholders may find some requirements too obvious to discuss. But developers need to know each aspect of the solution, and a BA helps them figure out and specify such requirements.
Allows for developing only relevant functionality. When discussing requirements, business analysts use their knowledge of the development team to improve the initial requirements. They help clients cast off inefficient features and choose the best possible technologies.
确定确切的工作范围和预算。明确,优先级高和已批准的需求使开发团队可以准确地计划和评估项目。这意味着我们可以为客户提供切合实际的预算和发布日期。
避免开发过程中的混乱。对应该执行什么操作,何时执行以及如何完成项目的共识可以极大地加快并简化沟通。富有成效的启发有助于避免在开发过程中本应通过电子邮件发送的大量会议。
增加业务价值。要开发的产品,将有利于客户的业务活动中,必须讨论这是很重要的东西应该由开发团队和做为什么。有了这些了解,团队就可以创建满足客户所有需求的解决方案。
揭示隐藏的和假定的要求。利益相关者始终知道他们的市场和业务需求是最好的。这就是为什么利益相关者可能会发现一些要求太明显而无法讨论的原因。但是开发人员需要了解解决方案的各个方面,而BA可以帮助他们找出并指定此类要求。
仅允许开发相关功能。在讨论需求时,业务分析师会利用他们对开发团队的了解来改善初始需求。它们可以帮助客户摆脱低效的功能,并选择最佳的技术。
最终用户,又译"终端用户",是指在通信系统中,系统所服务的最终受益者(包括信息的最初提供者和最终享用者)。其中作为很大一部分的最终享用者主要从系统中接受并利用信息进行研究、生产、教学等各类任务,一般没有或很少接受过系统管理和利用的专门培训,习惯上称为普通用户。为了[创建成功的产品]{.ul}或服务,创建,开发,测试和销售产品的人员必须不考虑自己的需求,而要考虑最终用户的需求。在完成所有上述过程之后,交付给最终用户是最后一步,目标是使最终用户能够完成以前无法完成的任务。
9.3.1,customer与end user的区别
客户:可以bai指用金钱或某种有du价值的物zhi品来换取接受财产、dao服务、产品或某种创意中的自然人或组织。是商业服务或产品的采购者,可能是最终的消费者、代理人或供应链内的中间人。
终端用户:是指在通信系统中,系统所服务的最终受益者。很大一部分的最终享用者主要从系统中接受并利用信息进行研究、生产、教学等各类任务,没有或很少接受过系统管理和利用的部门培训,习惯上称为普通用户。
需求分析是当前软件工程中的关键问题,需求分析阶段的任务是:在可行性分析的基础上,进一步了解、确定用户需求。准确地回答 “系统必须做什么?” 的问题。获得需求规格说 明书。还涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及到这些因素和系统的精确规格说明,以及系统进化之间的关系。
10.3.1,需求分析的基本任务
(1)There are some problems to be solved in the current system of demand analysis. In order to acquire enough knowledge of problem domain, the methods of demand extraction include questionnaire, interview, data collection, use case, scenario case and goal-based method; there are also knowledge engineering methods, such as field record analysis, card classification, classification table technology and model-based knowledge acquisition.
(2) Simulation and analysis requirements analysis and simulation include three levels of work. The first is requirement modeling. There are three forms of demand model: natural language, semi formal (such as graph, table, structured English, etc.) and formal representation. The requirements of requirement conceptual model include the independence of implementation: non simulation of data representation and internal organization; requirements simulation technology is divided into enterprise simulation, functional requirements simulation and non functional requirements simulation.
(3) The main task of transferring requirements is to write software requirements specification.
(4) The main task of recognizing requirements is to reach an agreement on the specification of requirements, including defining conflicts and solving conflicts. The common conflict solving methods are: negotiation, competition, arbitration, compulsion, education and so on. Some of them can only be controlled by human factors.
(5) Evolution requirements the needs of customers are always growing (continuously), but the general software development always lags behind the growth of customer requirements. How to manage the evolution (change) of requirements has become the primary problem of software evolution. For the traditional change management process, the basic components include software configuration, software baseline and change review team. The current development is software family approach, that is product line approach. Multi view method is also a new method to manage requirement change. It can be used to manage inconsistency and reasoning about change.
(1) 抽取需求 分析现行系统存在需要解决的问题。获取足够多的问题领域的知识,需求抽取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等;还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等 。
(2) 模拟和分析需求 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。
(3) 传递需求 传递需求的主要任务是书写软件需求规格说明。
(4) 认可需求 就是对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。
(5) 进化需求 客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件家族法 ,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性, 并进行关于变化的推理。
指在软件开发过程的分析阶段发生的事情。参见:设计时间,建模时间。
s about the software design of real-time systems ,software project scheme, actualization method, scheduling and execution time analysis, software verification are introduced in this paper.
讨论了实时系统软件工程方法、软件实现、调度与执行时间分析、系统软件验证四个方面的问题 ,介绍了在实时系统研究领域的学者们所做的工作 ,该领域理论的发展以及有待解决的问题。
Most of thecurrent WCET analysis tools rely on the interaction between compiler and WCET tools orthe availability of source code.
The results of most WCET analysis tools are over pessimistic,and cause great waste of resources if scheduling is based on such results.
当前的很多最坏执行时间分析工具都是针对特定的编程语言或特定的编译器的,因而缺乏平台间的迁移性,从而不能被广泛使用。
通常的最坏执行时间分析方法的结果过于悲观(overpessimistic),根据这种结果进行调度将导致资源的极大浪费。
软件开发过程中使用或产生的一段信息。工件可以是模型、描述或软件。同义词:产品。在计算机图形学中,我们已绘制出以假乱真的图景为目标,但是经常会绘制出来锯齿状边缘,或者一些颜色错误,我们为称之为artifact.
artifacts must satisfy three conditions. They must be intentionally produced, thus ruling out unintended by-products of intentional actions.
This excludes objects that have been deliberately modified, which still cannot achieve any further purpose, such as tearing up pieces of paper before throwing them away intentionally but for no special reason. Well, probably the three comments on this definition are in order. First, it does not rule out the possibility that at least some of the things made by non-human animals are artifacts.
工件必须满足三个条件。它们必须是有意生产的,因此要排除意想不到的行为的副产品,这排除了故意修改的对象,这些对象仍然不能达到任何进一步的目的,例如您有意但无特殊原因而在将纸丢掉之前先撕掉它们的碎片。那么,大概
关于此定义的三个评论是按顺序进行的。首先,它不排除非人类动物制造的至少某些东西是人工制品的可能性。例如,蜘蛛网确实有其用途,而且很明显是人造的,而不是自然形成的。
行为特征(behavioral featrue)模型元素的动态特性,如操作或方法。
When developers are doing software maintenance work, to correct or perfect one or some functions of the software, it is necessary to modify the source code entity of the software. The position of the function in the source code must be located first. This process is called feature location. With the increasing of software scale, the effect of software evolution is becoming increasingly prominent, The confusion of software document structure and the degradation of software source code structure have brought great difficulties to software feature location. Software feature location is the prerequisite for the successful implementation of software evolution intention, Effective feature location methods are of great significance to the development of software maintenance and the research of software evolution process. The current software feature location methods can be divided into four categories: dynamic feature location method, static feature location method, text feature location method and hybrid feature location method, In order to solve the problem of large space and low automation, this paper proposes a hybrid feature location method for behavior topic. This method integrates the behavior knowledge and topic knowledge of software system, and realizes the reduction of subject knowledge by behavior knowledge. Finally, the feature location is realized by analyzing the similarity between topic knowledge and software function attributes
当开发人员进行软件维护工作时,纠正或完善软件的某个或某些功能,需要对软件的源代码实体进行修改,必须先定位该功能在源代码中的位置,这个过程称为特征定位.随着软件规模的日益增长,软件演化效应日益凸显,带来软件文档结构的混乱以及软件源代码结构的退化,都为软件的特征定位工作带来了极大困难. 软件特征定位是成功实施软件演化意图的前提条件,有效的特征定位方法对软件维护工作的开展和软件演化过程的研究都具有重要意义.当前软件特征定位方法可以分为四类:动态特征定位方法,静态特征定位方法,文本特征定位方法和混合特征定位方法.针对当前特征定位方法准确率低,定位空间庞大和自动化程度不高等问题,本文提出了面向行为主题的混合特征定位方法.该方法将软件系统的行为知识和主题知识进行有机整合,实现了行为知识对主题知识的约简,并最终通过分析主题知识与软件功能属性间的相似性实现特征定位。
二元关联(binary association)两个类之间的关联。 n 元关联的特例。
When both entities are mandatory , each entity becomes a table, and the key of either entity can appear in the other entity’s table as a foreign key. One of the entities in an optional relationship should contain the foreign key of the other entity in its transformed table. Employee, the other entity , could also contain a foreign key (dept_no) with nulls allowed, but this would require more storage space because of the much greater number of Employee entity instances than Department instances. When both entities are optional , either entity can contain the embedded foreign key of the other entity, with nulls allowed in the foreign keys.
The one-to-many relationship can be shown as either mandatory or optional on the “many” side, without affecting the transformation. On the “one” side it may be either mandatory or optional . In all cases the foreign key must appear on the “many” side, which represents the child entity, with nulls allowed for foreign keys only in the optional “one” case. Foreign key constraints are set according to the specific meaning of the relationship and may vary from one relationship to another.
The many-to-many relationship, shown as optional for both entities, requires a new table containing the primary keys of both entities. The same transformation applies to either the optional or mandatory case, including the fact that the “not null” clause must appear for the foreign keys in both cases. Note also that an optional entity means that the SQL table derived from it may have zero rows for that particular relationship. This does not affect “null” or “not null” in the table definition.
当两个实体都是必需的时,每个实体都成为一个表,并且任何一个实体的键都可以作为外键出现在另一个实体的表中。处于可选关系中的一个实体应在其转换表中包含另一个实体的外键。雇员也可以包含一个允许使用空值的外键,但这将需要更多的存储空间,因为雇员实体实例的数量比部门实例的数量大得多。当两个实体都是可选的时,任何一个实体都可以包含另一个实体的嵌入式外键,外键中允许使用空值。
所述一对多的关系可表示为强制性或选择性的"多"侧,而不会影响转化。在"一个"方面,它可以是强制性的或可选的。在所有情况下,外键都必须出现在代表子实体的"许多"一侧,只有在可选的"一个"情况下,外键才允许使用空值。外键约束是根据关系的特定含义设置的,可能因一种关系而异。
多对多关系对于两个实体都是可选的,它需要一个包含两个实体的主键的新表。相同的转换适用于可选情况或强制情况,包括以下事实:在两种情况下,外键都必须出现" not null"子句。还要注意,可选实体意味着从该实体派生的SQL表对于该特定关系可能具有零行。这不会影响表定义中的" null"或" not null"。
绑定(binding)通过为模板的参数提供参数来从模板创建模型元素。绑定可以绑定属性/字段,是否绑定成功,是否显示,由访问权限(public,protected,private,internal)等决定
5.3.1,绑定的基础
If binding is compared to a bridge of data, its two ends are source and target respectively. Where the data plex comes from is the source, and where it goes is the target. In general, the source of binding is the object of business logic layer, and the target of binding is the control object of UI layer. In this way, the data will be continuously delivered to UI interface through binding and displayed by UI layer, which completes the process of data-driven UI. With this bridge, we can not only control whether vehicles can travel in two directions or one way between the source and the target. It can also control the release time of data, and even build some checkpoints on the bridge to convert data types or verify the correctness of data.
如果把Binding比作数据的桥梁,那么它的两端分别是源(Source)和目标(Target)。数据丛哪里来哪里就是源,到哪里去哪里就是目标。一般情况下,Binding的源是业务逻辑层的对象,Binding的目标是UI层的控件对象。这样数据就会源源不断的通过Binding送达UI界面,被UI层展现,这就完成了数据驱动UI的过程。有了这座桥梁,我们不仅可以控制车辆在源与目标之间是双向通行还是单向通行。还可以控制数据的放行时机,甚至可以在桥上搭建一些关卡用来转换数据类型或者检验数据的正确性。
5.3.2,绑定的源和路径
The source of binding is also the source of data. Binding is not strict with the source – as long as it is an object and exposes its own data through properties, it can be used as the source of binding. If you want the object as the binding source to have the ability to automatically notify binding that its property value has changed. Then you need to let the class implement the inotifychanged interface and fire the PropertyChanged event in the set statement of the property. In daily life, in addition to using this object as the data source, we have more choices, such as the control using its own container or subset elements as the source, using one control as the data source of another control, using the collection as the data source of itemcontrol, and using XML as the data source of treeview or menu. Link multiple controls to a “data commanding point”, or even leave the binding to find the data source.
Binding 的源也就是数据的源头。Binding对源的要求并不苛刻------只要它是一个对象,并且通过属性(Property)公开自己的数据,它就能作为Binding 的源。如果想让作为Binding源的对象具有自动通知Binding自己属性值已经已经变化的能力。那么就需要让类实现INotifyChanged接口并在属性的Set语句中激发PropertyChanged事件。在日常生活中,除了使用这种对象作为数据源之外,我们还有更多的选择,比如控件把自己的容器或子集元素当源、用一个控件做为另一个控件的数据源,把集合作为ItemControl的数据源、使用XML作为TreeView或Menu的数据源。把多个控件关联到一个"数据制高点"上,甚至干脆不给Binding指定数据源、让他自己去找。
基数(cardinality)集合中元素的数目。对比:多样性。
1. Base cardinality is the number of rows in a base table.
2. Effective cardinality is the number of rows that are selected from a base table.
3. Join cardinality is the number of rows produced when two row sets are joined together.
4. Distinct cardinality is the number of distinct values in a column of a row set.
5. Group cardinality is the number of rows produced from a row set after the GROUP BY operator is applied.
1基本基数是基表中的行数。
2有效基数是从基表中选择的行数。
3 连接基数是两个行集联接在一起时生成的行数。
4显著基数是行集的列中不同值的数目。
5群基数是应用Group BY运算符后从行集生成的行数。
客户(client)是从另一个分类器请求服务的分类器。对比:供应商。
7.3.1,Server模式与client模式启动的差别
When the -server mode is started, the speed is slow, but once it is running, the performance will be greatly improved
When the virtual machine runs in - client mode, it uses a lightweight compiler named C1, while the virtual machine started in - server mode uses a relatively heavy-weight compiler code named C2. C2 compiles more thoroughly than C1 compiler, and its performance is higher after service
Therefore, we usually use the server mode when we do the server. If your computer just runs Java programs, the client mode is OK. Of course, these are the things we need to do program optimization programs, ordinary people do not pay attention to these professional things. In fact, even if the compilation of server mode is more thorough, and then garbage collection optimization is better, this of course consumes more memory than the client mode.
-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是:
当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,服务起来之后,性能更高.
所以通常用于做服务器的时候我们用服务端模式,如果你的电脑只是运行一下java程序,就客户端模式就可以了。当然这些都是我们做程序优化程序才需要这些东西的,普通人并不关注这些专业的东西了。其实服务器模式即使编译更彻底,然后垃圾回收优化更好,这当然吃的内存要多点相对于客户端模式。
解释(comment)指附加到元素或元素集合上的注释。注释没有语义。对比度:约束。comment语句用于在系统表中存储关于数据库对象的注释。COMMENT 语句可用于在数据库中为对象设置注释。COMMENT 语句可更新系统表 ISYSREMARKS 中所列出的注释。通过将注释设置成 NULL 可以删除注释。对于索引或触发器的注释,其所有者是定义该索引或触发器的表的所有者。不能为本地临时表添加注释。
8.3.1,comment在Mysql中的是使用
在MySQL数据库中,字段或列的注释是用属性comment来添加。
创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。
如果是已经建好的表,也可以用修改字段的命令,然后加上comment属性定义,就可以添加上注释了。
8.3.2,comment在html中的使用
The < comment > tag is used to insert comments into HTML source code. Browsers ignore comments when rendering web pages. You can use comments to explain your code so that it can be read and modified later.
You can also write some program specific information in the comments. Although the annotation content is invisible to the user, it can still be used by the program. A better approach is to write scripts and styles in comments. That way, older browsers that don’t support scripts or styles won’t display them as plain text on a web page.
你也可以在注释里写一些针对程序的信息。虽然注释内容对用户是看不见的,但仍可为程序所用。一个较好的做法是,将脚本以及样式写在注释里。这样一来,那些不支持脚本或样式的老式浏览器便不会将它们像纯文本一样在网页上显示出来。
复合态(composite state)是由并行(正交)子状态或连续(不相交)子状态组成的状态。请参见:子状态。
9.3.1,复合态由来
Representation exposure is a well documented and studied prob- lem in object-oriented systems. We introduce the Potential Access Path methodology as a tool to reason about composite objects and protection of their representation. Our system enforces the owner- as-modifier disciplin, which does not restrict aliasing but requires that all modifications to an encapsulated aggregate are initiated by the aggregate’s owner. A novel design choice in our system is the free mode that allows read-only aliases. This new weak unique- ness property provides us with additional flexibility to transfer sub- components from one aggregate to another.
在面向对象系统中,表示暴露是一个被广泛记录和研究的问题。我们引入了潜在访问路径方法作为一种工具来推理复合对象和保护其表示。我们的系统强制执行owner-as修饰符规程,它不限制别名,但要求对封装聚合的所有修改都由聚合的所有者发起。我们系统中一个新颖的设计选择是允许只读别名的自由模式。这种新的弱唯一性为我们提供了额外的灵活性,可以将子组件从一个集合转移到另一个集合。
实体类(concrete class)可以直接实例化的类。对比:抽象类。
All classes must have a constructor. If you do not declare a constructor in the code, the system will automatically generate a constructor with public and no parameters for you. As long as you declare a constructor, whether with or without parameters or private public ownership, the system will no longer generate the default parameterless constructor for you.
All subclass constructors require that the parent class constructor be called in the first line of code. If it is not written, the system calls the no parameter structure of the parent class by default.
所有的class都必须有一个构造方法,如果你没有在代码里声明构造方法,系统会自动给你生成一个公有无参的构造方法。而只要你自己声明了一个构造方法,无论有参无参,私有公有,系统就不再帮你生成默认无参构造器了。
所有的子类构造器都要求在第一行代码中调用父类构造器,如果不写,系统默认去调用父类的无参构造
语法(syntax)在计算机科学中,是指一种程序设计语言的拼写和文法。计算机是仅当你以精确的形式输入你输入的内容或用计算机期望的语法时才能够理解的不灵活机器。每个程序定义了它自己的句法规则,其控制哪些词计算机能够理解,语法是词和意义的结合,而且标点符号是必须的。一个程序语法的分同程序使用一个自动控制产生的程序叫做剖析器。
Concept: the character sequence used in Java to name various variables, methods and classes is called identifier
Rules: 1. The identifier consists of letters, underscores, dollar characters or numbers
2. The identifier should start with letter, underline and dollar sign
3. Java identifier is case sensitive and its length is unlimited
Convention: Java identifier should know the meaning of the name, and cannot have the same name as the keyword
概念:Java对各种变量,方法和类等要素命名时使用的字符序列称为标识符
规则:1.标识符由字母,下划线,美元符或数字组成
2.标识符应由字母,下划线,美元符开头
3.Java标识符大小写敏感,长度没有限制
约定:Java标识符要见名知意,且不能与关键字重名
统一建模语言(Unified Modeling Language)的缩写,用于建模问题或解决方案的标准化语言。是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。
2.3.1,uml常见图分类
Abbreviation for Unified Modeling Language, a standardized language for modeling problems or solutions.UML From the different point of view of considering the system, 10 kinds of diagrams are defined, such as usage diagram, class diagram, object diagram, package diagram, state diagram, activity diagram, sequence diagram, communication diagram, component diagram and deployment diagram.
Classification:
Object oriented dynamic modeling is used to establish four kinds of diagrams of behavior interaction among entities: stage diagram, sequence diagram, communication diagram and activity diagram.
“Sequence diagram” and “collaboration diagram” express similar messages, “activity diagram” is a kind of “state diagram”.
UML从考虑系统的不同角度出发,定义了用况图、类图、对象图、包图、状态图、活动图、序列图、通信图、构件图、部署图等10种图。
分类:
面向对象动态建模,用于建立行为的实体间行为交互的四种图:状态图(Stage Diagram),序列图(Sequence Diagram),协作图(Communication Diagram),活动图(Activity Diagram) 。
"序列图"与"协作图"表述的是相似的消息,"活动图"是"状态图"的一种。
静态结构图Static Structure Diagram
类图Class Diagram
对象图Object Diagram
用况图Use Case Diagram
交互图Interaction Diagram
顺序图Sequence Diagram
协作图Collaboration Diagram
状态图State chart Diagrams
活动图Activity Diagrams
实现图Implementation Diagrams
构件图Component Diagram
部署图Deployment Diagram
验收试验(Acceptance test)评估一个系统是否满足其所有要求的测试。
3.3.1测试方法种类
Internal Acceptance Testing
This type of Acceptance Testing, also known as Alpha Testing, is performed by members of the organization that developed the software but who are not directly involved in the project (Development or Testing). Usually, it is the members of Product Management, Sales and / or Customer Support.
内部验收测试
这种类型的验收测试,也称为Alpha测试,由开发该软件但未直接参与项目(开发或测试)的组织成员执行。通常,它是产品管理,销售和/或客户支持的成员。
External Acceptance Testing
This type of Acceptance Testing is performed by people who are not employees of the organization that developed the software.
外部验收测试
这种类型的验收测试由不是开发该软件的组织的员工的人员执行。
Customer Acceptance Testing
This type of Acceptance Testing is performed by the customers of the organization that developed the software. They are the ones who asked the organization to develop the software. [This is in the case of the software not being owned by the organization that developed it.
客户验收测试
这种类型的验收测试由开发软件的组织的客户执行。他们是要求组织开发软件的人。[在这种情况下,该软件不归开发它的组织所有。
User Acceptance Testing (UAT)
This type of Acceptance Testing, also known as Beta Testing, is performed by the end users (either existing or potential) of the software. They can be the customers themselves or the customers’ customers or the general public.
Note
用户验收测试(UAT)
这种类型的验收测试(也称为Beta测试)由软件的最终用户(现有的或潜在的)执行。他们可以是客户本身,也可以是客户的客户,也可以是公众。
属性(attribute)是指一个实体的特性。
@JsonIgnore
该属性不会被序列化
@Fetch(FetchMode.JOIN)
@JsonFilter(“keyValFilter”) //若需要序列化更多字段,可以去掉
@OneToMany(cascade = { CascadeType.REMOVE }, mappedBy = “moduleId”, targetEntity = SecurityMenuT.class)
public Set getMenus(){
return menus;
}
一对多的配置示例,
可以这样读:一条该实体数据,对应多条配置数据,就是一对多
@Fetch(FetchMode.JOIN)关联对象的抓取策略,主体和关联对象一次查出
@JsonFilter(“keyValFilter”) 序列化设置,配置后,其关联对象只会序列化出id、name、pId、hasParent、item 五个字段,去掉后,则会根据关联对象的配置序列化字段
@JsonDeserialize(using = DateTimeDeserializer.class)
@JsonSerialize(using = DateTime2JsonSerializer.class)
日期格式序列化及反序列化配置,配置后存取Date不用转换,
默认为(2018-12-20 14:00:00)
@Column(name = “ID”)
映射数据库字段,如果不写name,默认映射到属性名称这个字段,平台组规范,必须添加那么属性
@Id
指定主键,只有主键才会用到
@GenericGenerator(name=“system-uuid”, strategy=“framework.basic.generators.UUIDGenerator”)
JPA通用策略生成器,也可通过strategy 属性指定
@GeneratedValue(generator=“system-uuid”,strategy = GenerationType.IDENTITY)
自定义主键生成策略,通过strategy 属性指定
@Transient
指定该属性或字段是非持久化字段,不会写进数据库
@Formula("(select t.code_value from code_list t where t.code = sex)")
public String getSexValue() {
return sexValue;
}
@Formula会将查询出来的结果映射到sexValue属性中,注意:写的是纯SQL语句而非HQL语句,不要忘记双引号和括号。如果数据多,会有性能问题,不建议使用。
modify方法
生成代码后会默认有一个modify方法,用来做实体转换,也可做一个有参构造的扩展,推荐使用。平台不建议使用原有的UIComponents工具类的转换方法。
变更请求(change request):在RE中:一种经过充分论证的变更一个或多个基线化需求的请求。
5.3.1,变更请求的原因:
(1) When the scope is not delineated, it is refined
Refinement is done by requirement analysts. It is usually refined according to the short descriptive and summative sentences put forward by users. One of the functions is extracted and the description (description in normal execution and description in case of accident) is given. When we refine to a certain extent and start the system design, the scope will change, and the description of detailed use cases may have to be changed.
For example, the data added manually should be calculated according to the information system, and the description of an attribute should be changed to describe an entity.
(2) No baseline for specified requirements
The baseline of a requirement is the dividing line between whether or not a requirement change is allowed. As the project progresses, the baseline of requirements changes. Whether the change is allowed is based on the contract and the impact on the cost. For example, if the overall structure of the software has been designed, it is not allowed to change the scope of requirements, because the overall structure will have a preliminary budget for the progress and cost of the whole project.
As the project progresses, the baseline will be set higher and higher (fewer changes are allowed). The process is as follows: change request compares baseline to change implementation.
(3) There is no good software structure to adapt to changes
The component software structure provides an architecture that can adapt to the change of requirements quickly. The data layer encapsulates the data access logic, the business layer encapsulates the business logic, and the presentation layer shows the user presentation logic.
However, some loose coupling principles must be followed to adapt to the changes. There are still some connections between the layers. The design should strive to reduce the changes of interface entry parameters. If the business logic is encapsulated, it is easy to adapt to the requirements of arranging or reducing information on the presentation layer interface. If the interface is well defined, it can quickly adapt to changes even if the business process changes.
(1)范围没有圈定就开始细化
细化工作是由需求分析人员完成的,一般是根据用户提出的描述性的、总结性的短短几句话去细化的,提取其中的一个个功能,并给出描述(正常执行时的描述和意外发生时的描述)。当细化到一定程度后并开始系统设计时,范围会发生变化,那细节用例的描述可能就有很多要改动。
如原来是手工添人的数据,要改成根据信息系统计算出来,而原来的一个属性的描述要变成描述一个实体等。
(2)没有指定需求的基线
需求的基线是指是否容许需求变更的分界线。随着项目的进展,需求的基线也在变化。是否容许变更的依据是合同以及对成本的影响,比如软件整体结构已经设计出来是不容许改变需求范围的,因为整体结构会对整个项目的进度和成本有初步预算。
随着项目的进展,基线将越定越高(容许的变更将越少),其过程如下:变更请求à比较基线à变更实现。
(3)没有良好的软件结构适应变化
组件式的软件结构就是提供了快速适应需求变化的体系结构,数据层封装了数据访间逻辑,业务层封装了业务逻辑,表示层展现用户表示逻辑。
但适应变化必须遵循一些松祸合原则,各层之间还是存在一些联系的,设计要力求减少会对接口入口参数产生变化。如果业务逻辑封装好了,则表示层界面上的一些排列或减少信息的要求是很容易适应的。如果接口定义得合理,那么即使业务流程有变化,也能够快速适应变化。
类(class)通过描述对象的结构、操作它们的方式以及它们的行为来表示一组同类对象。是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
6.3.1,类的三个访问限定符
1. Public: public. Members of a class can be accessed directly from outside the class
2. Private / protected: members of a class cannot be accessed directly from outside the class
3. Each access qualifier of a class can be used multiple times in the class, and the scope is from the beginning of the qualifier to before the next qualifier / end of the class
4. If there is no qualifier defined in the class, it will be private by default
5. The access qualifier of class embodies the encapsulation of class
1.public:公有的,类的成员可以从类外直接访问
2.private/protected:类的成员不能从类外直接访问
3.类的每个访问限定符可以多次在类中使用,作用域为从该限定符开始到下一个限定符之前/类结束
4.类中如果没有定义限定符,则默认为私有的(private)
5.类的访问限定符体现了类的封装性
人工制品遵守标准、法规、法律或其他形式的文件的能力。
When developing in eclipse, the JDK in the build path compiles the class library (that is, the class you use is not in this JDK). The java compiler compliance level is the compilation of the syntax of the project (that is, whether the syntax in your project is correct or not), or Java compiler compliance The compiled version number configured in level is regarded as the running version of JDK on the server after the project is developed in the future.
在eclipse中进行开发的时候,build path 中JDK进行类库的编译(就是你使用类在不在这个JDK中),java compiler compliance level是对这个项目语法的编译(就是你的项目中语法的正确与否),也可以把java compiler compliance level中配置的编译版本号的作用看作是你这个项目将来开发完毕之后,要放到服务器上运行,那个服务器上JDK的运行版本。
In the process of development and deployment, the safest way is to keep the JDK of build path, Java complier compliance level and JBoss server consistent, so there will be no problem.
We often pay attention to the JDK version in build path and JDK version in JBoss, but we don’t know that they are linked through Java complier compliance level.
Sometimes we can’t just follow the online solution steps to solve the problem, even if everything is OK. I have to admit that this is a shortcut to solve the problem, but after passing through the shortcut, we should analyze and summarize the context of the problem, and really understand its essence, which can be regarded as an accumulation. Because online solutions are always aimed at outdated technologies, the problems exposed by new technologies will still make you at a loss. Fortunately, the nature of technology is not easy to change, so to speak, grasp Living in essence is the way to win.
在开发和部署过程中,最安全的做法,是build path , java complier compliance level,jboss服务器配置的JDK都保持一致,就不会出现任何问题的。
我们常常关注build path中jdk的版本和jboss中jdk版本,殊不知他们是通过 java complier compliance level联系起来的。
有时候我们并不能仅仅按照网上的解决步骤把问题解决了就算万事大吉了。我不得不承认这是解决问题的捷径,但从捷径走过后,我们应分析和总结问题的来龙去脉,真正理解它的本质,才算是一种积累,因为网上的解决方案永远是针对过时的技术,新技术暴露的问题依然会让你手足无措,但幸好技术的本质是不容易改变的,所以说,抓住本质,才是常胜之道。
一致性(需求)(Consistency (of requirements))一组需求没有矛盾陈述的程度。
8.3.1,一致性原则类型
1、 Design consensus
There are many components in software, such as component, element Dao, etc. The interaction between different components requires consistent design goals.
For example, if the primary user of computer operation is the target user, and the design goal is to simplify the interface logic, then the goal needs to implement the software (package) as a whole, rather than a part.
2、 The appearance of elements is consistent
The appearance of interaction elements often affects the interaction effect of users. The appearance of the same (class) software with the same style is helpful to keep the user focus and improve the interaction effect. Unfortunately, there is no particularly uniform measure of how to make sure that elements look consistent. Therefore, we need to investigate the target users and get feedback.
3、 The interaction behavior is consistent
In the interaction model, different types of element users trigger their corresponding behavior events, and their interaction behavior needs to be consistent.
1),设计目标一致
软件中往往存在多个组成部分(组件、元素等)。不同组成部分之间的交互设计目标需要一致。
例如:如果以电脑操作初级用户作为目标用户,以简化界面逻辑为设计目标,那么该目标需要贯彻软件(软件包)整体,而不是局部。
2),元素外观一致
交互元素的外观往往影响用户的交互效果。同一个(类)软件采用一致风格的外观,对于保持用户焦点,改进交互效果会有很大帮助的。遗憾的是如何确认元素外观一致没有特别统一的衡量方法。因此需要对目标用户进行调查取得反馈。
3),交互行为一致
在交互模型中,不同类型的元素用户触发其对应的行为事件后,其交互行为需要一致。
约束(Constraint是将解决方案空间限制在满足给定功能要求和质量要求之外的要求。
9.3.1,五大约束
1、主键约束(Primay Key Coustraint) 唯一性,非空性
2、唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
3、检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等)
4、默认约束 (Default Counstraint)该数据的默认值
5、外键约束 (Foreign Key Counstraint)需要建立两表间的关系并引用主表的列
9.3.2
Adding a primary key constraint will automatically create a unique index. If the focus index has not been created in the table, the focus unique index is automatically created. If a focused index already exists in the table, the unfocused index is automatically created.
Adding a unique constraint will automatically create a unique index. If [nonclustered clustered] is not added after the unique keyword, the unfocused index will be created by default.
添加主键约束会自动创建唯一索引。如果表中尚未创建 聚焦索引,则自动创建聚焦唯一索引。如果表中已存在聚焦索引,则自动创建非聚焦索引。
添加唯一约束会自动创建唯一索引。如果未在unique关键字后加上[nonclustered|clustered],则默认会创建非聚焦索引。
需求(requirement)是用户解决问题或达到目标所需条件或权能(Capability)。 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。一种反映条件或权能的文档说明。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。通常被认为是1个需求的同义词
10.3.1,软件需求分析目标
1. Software functional requirements: integrity and consistency of functional requirements; no difference and traceability of function description.
2. Interface between software and hardware or other external systems
3. Non functional requirements of software: it refers to the requirements beyond functions such as software performance index and tolerance.
4. Software reverse requirements: describe what software can’t do under what circumstances.
5. Software design and implementation constraints: mainly refers to the restrictions on software designers. Such as the limitation of software operating environment, design tools and confidentiality requirements.
6. Read support information: in order to better understand user requirements, but also to make the requirements easy to modify and track.
1、软件功能需求:功能需求的完整性和一致性;功能描述的无差异性和可追踪性。
2、软件与硬件或其他外部系统接口
3、软件的非功能性需求:指软件性能指标,容限等功能以外的需求。
4、软件反向需求:描述软件在哪些情况下不能做什么。
5、软件设计和实现上的限制:主要指对软件设计者的限制。如软件运行环境的限制、设计工具的限制和保密要求等。
6、阅读支持信息:为了更好的帮助我们理解用户需求,也是为了使需求便于修改和追踪。
10.3.2, 软件需求分析人员组织
Software requirements analysis is actually the goal of communication process with customers. We are required to organize appropriate participants for exchange activities. Demand analysis is the work of a comprehensive team. Generally, we must have business personnel, project management personnel, design and technical personnel to participate, and the organizational personnel must be clear about the scope of responsibility, as well as clear work objectives, to ensure the effectiveness of the implementation.
软件需求分析实际上是与客户间交流过程完成的目标。要求我们组织适当的参与人员进行交流活动。需求分析是一个综合团队的工作,一般我们必须有商务活动人员,项目管理人员,设计技术人员等参加,而且要求组织人员必须明确负责范围,以及明确工作目标,保证实施的有效性。
10.3.3,软件需求分析方法
In order to ensure the normal implementation of the project and the smooth completion, we must strengthen the project management and attach importance to the project analysis. We must proceed from the reality, grasp the user demand, grasp the user demand goal, grasp the user function definition in the future, and ensure the correct direction of our development work.
1. Key monitoring software requirements analysis method
According to the situation that the customer does not know the demand clearly, the demand itself often changes, and the analyst or customer has wrong understanding, the specific analysis method is made.
2. Three steps of effective software requirement analysis
“Interview” stage, “induction” stage, “confirmation” stage.
为了保证项目的正常实施,并且能够顺利的完成,我们必须加强项目管理和重视项目分析工作。我们只有从实际出发,切切实实地把握用户需求,把握用户需求目标,把握用户将来功能界定,保证我们开发工作正确性方向。
1、重点监控软件需求分析办法
针对客户说不清楚需求、需求自身经常变动、分析人员或客户理解有误等情况作出具体分析办法。
2、有效性软件需求分析三步法
"访谈式"阶段、"诱导式"阶段、"确认式"阶段。
10.3.4,软件需求分析工具
Software requirements analysis report: generally, we use office tools such as word, PowerPoint, Visio, frontpage, Excel, etc. at the same time, we may use some development tools, such as VC or BC, and also use some graphic tools, such as Photoshop, palette and other drawing tools.
软件需求分析报告:一般我们采用Word、PowerPoint、Visio、FrontPage、Excel等Office工具,同时可能采用一些开发工具,如VC或BC等,同样也会使用一些图形工具,如Photoshop、调色板等画图工具。
10.3.5,软件需求分析评估
It includes: organization structure and responsibility management; function to meet user’s requirements; implementation assurance; requirement analysis and evaluation index; work cycle; demand uncertainty change and confirmatory assurance.
包括:组织结构与责任管理;满足用户需求的功能;保证可实施性;需求分析评价指标;工作周期;需求不确定更改与可确认保证。
联系(association)两个或多个量词之间的语义关系,它指明了它们实例之间的联系。对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
1.3.1,关联与聚合的区别
(1) The two objects involved in association are at the same level. For example, people and bicycles are related rather than aggregated, because people are not made up of bicycles.
The two objects involved in aggregation are at the level of inequality, one represents the whole and the other represents the part. For example, the computer and its display, keyboard, motherboard and memory is the aggregation relationship, because the motherboard is a part of the computer.
(2) For two objects with aggregation relationship (especially strong aggregation relationship), the whole object will restrict the life cycle of its constituent objects. The object of partial class cannot exist alone, and its life cycle depends on the life cycle of the object of the whole class. When the whole disappears, the part will disappear. For example, if Zhang San’s computer is stolen, then all the components of the computer will not exist, unless Zhang San removes some components of the computer (such as hard disk and memory) in advance.
(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
(3) 对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的 对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存) 拆了下来。
**1.3.2,关联关系的分类**
1\) Aggregation: also known as aggregation, it is a special case of association. Aggregation relation is the relationship between a whole and a part. For example, a telephone including a microphone, a computer containing a monitor, keyboard and host are examples of aggregation.
2\) Composition relationship: if the class representing \"part\" exists in the aggregation relationship and has a close relationship with the class representing \"whole\", such as the relationship between \"company\" and \"department\", then it should be represented by \"combination\" relationship.
1)聚集关系(aggregation): 又称聚合关系,它是关联关系的特例。聚集关系是表示一种整体和部分的关系。如 一个电话机包括一个话筒,一个电脑包含显示器、键盘和主机等都是聚合关系的例子。
2)组合关系:如果聚集关系中的表示"部分"的类存在,与表示"整体"的类有紧密的关系,例如 "公司"与"部门"之间的关系,那么就应该使用"组合"关系来表示。
关联末端(association end)即关联的端点,它将关联连接到分类器。一个关联端标识实体类型上的一个端部的关联,并且可以在关联的端部存在实体类型的实例的数目。关联结束定义为关联的一部分;一个关联必须恰好有两个关联结束。导航属性允许从一个关联端导航到另一关联端。
2.3.1,关联末端包括以下信息:
One of the entity types involved in the association. (Required)
For a given association, the entity type specified for each association end can be the same. This creates a self-association.
An association end multiplicity that indicates the number of entity type instances that can be at one end of the association. An association end multiplicity can have a value of one (1), zero or one (0…1), or many (*).
A name for the association end. (Optional)
Information about operations that are performed on the association end, such as cascade on delete. (Optional)
关联中涉及的实体类型之一。(需要)
对于给定的关联,为每个关联端指定的实体类型可以相同。这将创建一个自关联。
一个关联端多重指示实体类型的实例,可以是在关联的一端的数量。关联结束多重性的值可以为一(1),零或一(0…1)或许多(*)。
关联结束的名称。(可选的)
有关在关联端执行的操作的信息,例如在删除时级联。(可选的)
2.3.2,关联末端属性:
Name
The Association End has other name - role. A role indicates a role played by the Class in terms of an Association. The role name is placed at the Association End near the Class playing that role. The role name at the implementation level maps to the reference name of the opposite Class. Roles can have visibility (public, package, protected, and private).
Association End type
Changing the Association End type, changes the target of the Association or in other words the classifier to which the Association is connected.
Qualifier
A qualifier is an attribute or a list of attributes whose values serve to partition the set of instances associated with an instance across an Association. Qualifiers are attributes of an Association. It is represented as a small rectangle attached to the End of an Association path between the final path segment and the symbol of the classifier that it connects to. The qualifier rectangle is part of the Association path, not part of the classifier. The qualifier rectangle drags with the path segments. The qualifier is attached to the source end of the Association.
名称
关联端还有其他名称-角色。角色表示 类 在协会方面扮演的角色。角色名称放置在扮演该角色的班级附近的协会端。在实现级别的角色名称映射到相对的Class的引用名称。角色可以具有可见性(公共,打包,受保护和私有)。
关联结束类型
更改"关联结束"类型,可以更改关联的目标,即关联到该关联的分类器。
限定符
限定符是一种属性或属性列表,其值用于在关联中划分与实例相关联的实例集。限定词是协会的属性。它表示为一个小矩形,该矩形附着在最终路径段和与其连接的分类器的符号之间的关联路径的末尾。限定符矩形是关联路径的一部分,而不是分类器的一部分。限定符矩形与路径段一起拖动。限定词附加到协会的源端。
2.3.3,更改关联结束类型的操作:
On the diagram, select the Association End and move it to the other target. The Association is connected to the other target and the type of the Association End (that is, property) is changed.
In the Containment tree, select the property which represents the Association End and drag it onto the available classifier (the Association target). If the Association is represented on the diagram pane, the Association is redrawn (connected) to the changed target automatically.
In the property (that is, the Association End) Specification window, change the Type property value.
在图上,选择"关联结束"并将其移动到另一个目标。关联连接到另一个目标,并且关联结束的类型(即属性)已更改。
在"包含"树中,选择代表"关联结束"的属性,并将其拖动到可用的分类器("关联"目标)上。如果关联显示在图窗格中,则该关联将自动重绘(连接)到更改的目标。
在属性(即"关联结束"规范)窗口中,更改"类型"属性值。
2.3.4,可在关联路径末端放置多重性值
Open the shortcut menu of a selected Association End and click a desired multiplicity.
Open Association’s shortcut menu, point to one of a desired Association End (Role of
Open the Association Specification window and, from the Multiplicity list, select or type the multiplicity value for the desired Association End.
Perform the following steps:
Open the Association End Specification window.
In the Multiplicity property value cell, type or select from the list a multiplicity value.
Edit directly on the diagram pane:
Select multiplicity area and press F2 to switch it to edit mode.
Press Ctrl + Spacebar or Ctrl + Backspace to see available suggestions.
Choose one of the suggestions or type the multiplicity value.
打开所选"关联结束"的快捷菜单,然后单击所需的多重性。
打开关联的快捷菜单,指向所需的关联结束之一(
打开"关联规范"窗口,然后从"多重性"列表中选择或键入所需关联结束的多重性值。
执行以下步骤:
打开关联结束规范窗口。
在"多重性"属性值单元格中,键入或从列表中选择一个多重性值。
直接在图窗格上进行编辑:
选择多重性区域,然后按F2将其切换到编辑模式。
按Ctrl +空格键或Ctrl +退格键以查看可用建议。
选择建议之一或键入多重性值。
2.3.5,定义关联结束名称
Open the shortcut menu of a selected Association End and click Edit Name. The Association End is marked for editing. Type or edit the name directly on the diagram pane.
Open the Association’s shortcut menu, point to one of a desired Association End (Role of
Perform the following steps:
Open the selected Association End Specification window.
Type the Association End name in the Name property value cell.
打开所选"关联结束"的快捷菜单,然后单击" 编辑名称"。关联结束标记为可编辑。直接在图窗格上键入或编辑名称。
打开关联的快捷菜单,指向所需的关联结束之一(
执行以下步骤:
打开所选的"关联结束规范"窗口。
在"名称" 属性值单元格中键入"关联结束名称" 。
2.3.6,定义协会结束资格
A qualifier is an attribute or a list of attributes whose values serve to partition the set of instances associated with an instance across an Association. Qualifiers are attributes of an Association. It is represented as a small rectangle attached to the end of an Association path between the final path segment and the symbol of the classifier that it connects to. The qualifier rectangle is part of the Association path, not part of the classifier. The qualifier rectangle drags with the path segments. The qualifier is attached to the source end of the Association.
限定符是一种属性或属性列表,其值用于在关联中划分与实例相关联的实例集。限定词是协会的属性。它表示为一个小矩形,该矩形附着在最终路径段和与其连接的分类器的符号之间的关联路径的末尾。限定符矩形是关联路径的一部分,而不是分类器的一部分。限定符矩形与路径段一起拖动。限定词附加到协会的源端。
通信关联(communication association)在部署图中,表示通信的节点之间的一种关联。
First of all, communication graph is also an interaction graph, which describes the relationship between objects, that is, the implementation of a class operation. In short, the calling relationship between objects reflects an organizational relationship.
There are three main elements in communication graph: object, message and chain. Objects and chains appear as class meta roles and associated roles in communication graph, and messages can be passed between objects on chains
From the perspective of structure, communication graph contains a set of objects, defines the behavior relationship between them, and expresses some static contents of the system.
From the perspective of behavior, the communication graph contains a series of message sets that are exchanged between objects to achieve the purpose of cooperation.
Communication graph is a graphical way to describe the spatial organization structure of cooperation in a certain context. When it is used for modeling, it has the following three functions.
1)By describing the transmission of messages between objects, it reflects the logical expression of specific context.
2) Displays the spatial organization structure of objects and their interactions.
3) Represents the implementation of an operation.
首先通信图一样是一种交互图,它描述的是对象和对象之间的关系,即一个类操作的实现。简而言之就是,对象和对象之间的调用关系,体现的是一种组织关系。
通信图中的元素主要有对象、消息和链三种。对象和链分别作为通信图中的类元角色和关联角色出现,链上可以有消息在对象间传递
从结构方面来看,通信图包含了一个对象的集合并且定义了它们之间的行为方面的关系,表达了一些系统的静态内容。
从行为方面来看,通信图包含了在各个对象之间进行传递交换的一系列的消息集合,以完成协作的目的。
通信图是一种描述协作在某一语境下的空间组织结构的图形化方式,在使用其进行建模时,主要具有以下三个作用:
1)通过描绘对象之间消息的传递情况来反映具体使用语境的逻辑表达。
2)显示对象及其交互关系的空间组织结构。
3)表达一个操作的实现。
复合状态(composite ubstate)一种可以与包含在同一复合状态中的其它子状态同时保持的子状态。同义词:区域。
4.3.1,使用方法:
1, add a history indicator to the status area
In the state diagram, create a state area by dragging the composite state shape onto the drawing page.
Double click the new state diagram drawing page icon in the tree view to navigate to the drawing page that represents the composite state.
In the diagram that represents a composite state or state area, drag the short history or deep history shape onto the page.
Use the transition shape to indicate transitions from outside the state area. Glue the end of the toggle shape with arrows to the history indicator shape connection point image - blue x connection point. Double click the toggle shape to add a conversion string.
Use the toggle shape to indicate outgoing transitions in the history indicator shape. Glue a toggle shaped end without an arrow to the connection point on the history indicator shape. Connection point image - Blue X. Glue the end of the toggle shape with an arrow to the target state shape.
2. Create composite state or nested state in state diagram
In the state diagram, drag the composite state shape onto the page.
The status tree is displayed in the composite view.
Double click the new state diagram drawing page icon in the tree view to navigate to the drawing page that represents the composite state.
Drag States, transitions, shallow history indicators, and other shapes onto the page to show concurrent, mutually exclusive, or nested substates in a composite state.
1,将历史记录指示器添加到状态区域
在状态图 中,通过将 “复合状态” 形状拖到绘图页上来创建状态区域。
双击树视图中的新状态图绘图页图标以导航到表示复合状态的绘图页。
在表示复合状态或状态区域的图表中,将 “简略历史记录” 或 “深入历史记录” 形状拖 到绘图页上。
使用 “转换” 形状指示来自状态区域外的转换。 将带有箭头的 “切换” 形状的端点粘 附到 “历史记录指示器” 形状上 连接点图像 - 蓝色 X 连接点。 双击 “切换” 形状以 添加转换字符串。
使用 “切换” 形状指示历史记录指示器形状中的传出过渡。 将不带箭头的 “切换” 形 状端点粘附到 “历史记录指示器” 形状上的连接点上 连接点图像 - 蓝色 X 。 将带有 箭头的 “切换” 形状端点粘附到 “目标状态” 形状。
2,在状态图中创建复合状态或嵌套状态
在 状态图 中,将 “复合状态” 形状拖到绘图页上。
将在树视图中显示复合状态图标,并显示一个新的状态图绘图页面,该页面表示复合状 态。
双击树视图中的新状态图绘图页图标以导航到表示复合状态的绘图页。
将状态、转换、浅层历史记录指示器以及其他形状拖动到绘图页上,以在复合状态中表 示并发、相互排斥或嵌套的 substates。
4.3.2,"复合状态"形态的基本属性
full name
Type the name of the composite state as a string.
structure
Select the desired stereotype from the drop-down list. If the stereotype you want to use is not listed, you can add a new stereotype or edit an existing stereotype by clicking stereotypes on the UML menu.
IsConcurrent
Choose whether you can decompose the composite state into components that can be executed at the same time.
IsRegion
Select whether the composite state is a child state of the concurrent state.
file
Type any document you want to add to the element as a tag value. When you select a shape or icon that represents an element, the document you type here also appears in the document window.
姓名
以字符串形式键入 复合状态 的名称。
构造
从下拉列表中选择所需的构造型。 如果未列出要使用的构造型,则可以通过单击 " UML " 菜单上的 “构造型” 添加新的构造型或编辑现有构造型。
IsConcurrent
选择是否可以将 复合状态 分解为可同时执行的组件。
IsRegion
选择 复合状态 是否为并发状态的子状态。
文档
键入要作为 标记值 添加到元素的任何文档。 选择表示元素的形状或图标时,此处键入的文档也会显示在 “文档” 窗口中。
4.3.3,"复合状态"的"内部转换"属性
Use the internal transformations category to add or remove transformations or edit existing transformations.
Internal conversion
Lists the switches that have been defined for composite states.
To quickly edit the most common settings for switching, click a field in the internal conversion list, and then select or type a value.
To access all the settings for a switch, select the switch in the list, and then click properties.
Type the name of the internal transformation.
Constructionselect the desired stereotype from the drop-down list. If the stereotype you want to use is not listed, you can add a new stereotype or edit an existing stereotype by clicking stereotypes on the UML menu.
Activity selects the event or signal event that causes the internal conversion to occur. If the desired event is not listed, click new.
new edition
Click to add an undefined transformation to the list of internal transformations.
To quickly edit the most common settings for switching, click a field in the internal conversion list, and then select or type a value.
To access all the settings for a switch, select the switch in the list, and then click properties.
The same name
Click to add a new switch to the list and use the same property values with the selected transformation.
delete
Click to remove the selected switch from the list.
使用 “内部转换” 类别添加或删除转换或编辑现有转换。
内部转换
列出已为复合状态定义的切换。
若要快速编辑切换的最常用设置,请单击 “内部转换” 列表中的一个字段,然后选择或键入值。
若要访问某个切换的所有设置,请在列表中选择该切换,然后单击 “属性”。
中转 键入内部转换的名称。
构造 从下拉列表中选择所需的构造型。 如果未列出要使用的构造型,则可以通过单击 " UML " 菜单上的 “构造型” 添加新的构造型或编辑现有构造型。
活动 选择导致内部转换发生的 事件 或信号事件。 如果未列出所需事件,请单击 “新建”。
新版
单击以将未定义的转换添加到内部转换列表。
若要快速编辑切换的最常用设置,请单击 “内部转换” 列表中的一个字段,然后选择或键入值。
若要访问某个切换的所有设置,请在列表中选择该切换,然后单击 “属性”。
同名
单击以将新的切换添加到列表,并将相同的属性值与所选转换一起使用。
删除
单击以从列表中删除所选切换。
并发(concurency)在同一时间间隔内发生两个或多个活动。并行可以通过交错来实现或者同时执行两个或多个线程。且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时"存在"的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。
5.3.1,并发与高并发
Concurrency means having two or more threads at the same time. If the program runs on a single core processor, multiple threads will alternately switch in or out of memory. These threads are “existing” at the same time If running on a multi-core processor, each thread in the program will be assigned to a processor core, so it can run at the same time. In other words, concurrency means that multiple threads operate the same physical machine resources to ensure the thread safety and reasonable use of resources.
所谓并发就是:同时拥有两个或多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时「 存在 」的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中每个线程都将分配到一个处理器核上,因此可以同时运行。也就是说,并发就是多个线程操作相同的物理机中的资源,保证其线程安全,合理的利用资源。
High concurrency is one of the important factors that need to be considered in the Internet design system. Generally speaking, rigorous design is used to ensure that the system can handle many requests in parallel at the same time. This is what we often call “high concurrency.”. In other words, the system can provide many requests in a certain period of time, but it will not affect the performance of the system. If you want to design a high availability and high performance system, you should consider from many aspects, such as the selection of hardware, software, programming language, network, the overall system architecture, data structure, algorithm optimization, database optimization and so on.
高并发(High Concurrency)是现在互联网设计系统中需要考虑的一个重要因素之一,通常来说,就是通过严谨的设计来保证系统能够同时并行处理很多的请求。这就是大家常说的「 高并发 」。也就是说系统能够在某一时间段内提供很多请求,但是不会影响系统的性能。如果想设计出高可用和高性能的系统,就应该从很多的方面来考虑,例如应该从硬件、软件、编程语言的选择、网络方面的考虑、系统的整体架构、数据结构、算法的优化、数据库的优化等等多方面。
5.3.2,并发用户数
There are two common misconceptions about the number of concurrent users. There is a wrong view that the number of concurrent users is understood as the number of all users using the system, because these users may use the system at the same time; there is a more accurate view that the number of users online is understood as the number of concurrent users. In fact, online users are not necessarily concurrent with other users. For example, the users who are browsing the web page have no impact on the server. However, the number of users online is one of the main basis for counting the number of concurrent users.
并发用户数量,有两种常见的错误观点。一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比较接近正确的观点是把用户在线数量理解为并发用户数量。实际上,在线用户不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器是没有任何影响的。但是,用户在线数量是统计并发用户数量的主要依据之一。
Concurrency is mainly for the server, the key to concurrency is to see whether the user operation has an impact on the server. Therefore, the correct understanding of the number of concurrent users is the number of online users who interact with the server at the same time. The biggest characteristic of these users is the interaction with the server, which can be one-way data transmission or two-way data transmission.
并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。因此,并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量。这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据。
5.3.3,Java并发的三种处理方式
Volatile is to ensure that resources are operated by multiple threads simultaneously. (visibility, no reordering)
ThreadLocal is to ensure that resources are not operated by multiple threads at the same time. (sacrificial space)
Synchronization is to operate resources by only one thread at the same time under multithreading. (sacrificing time to ensure atomicity)
volatile 是为了保证资源被多个线程并发正确操作。(可见性,禁止重排序)
ThreadLocal是为了保证资源不被多线程同时操作。(牺牲空间)
synchronize是为了多线程下 同一时刻只有一个线程操作资源。(牺牲时间,保证原子性)
5.3.4并发的优势和风险
advantage
1. Speed: processing multiple requests at the same time, with fast response time. Complex business operations can be split into multiple threads to execute, which speeds up the process.
2. Design: in some cases, the program can be simpler, more efficient and more selective
3. Resource utilization: CPU can be reused when it is idle, such as doing other things while waiting for disk and network io.
优势
1.速度:同时处理多个请求,响应时间较快。复杂的业务操作可以拆分为多个线程去执行加快了速度。
2.设计:程序在某些情况下,可以更简单更高效,选择性更多
3.资源利用:CPU可以在空闲时可进行复用,例如在等磁盘和网络IO的时候,做一些其他的事情。
risk
1. Security: when multiple threads execute the same program, thread safety problems may occur, that is, the result does not match the actual expectation
2. activity: an operation can not be carried out, and there may be problems such as deadlock and starvation.
3.Performance: there are too many threads and CPU switches frequently, which increases the scheduling time. Too many threads consume too much memory.
风险
1.安全性:多个线程执行相同的程序,可能会出现线程安全的问题,也就是与实际期望不符的结果
2.活跃性:某个操作执行不下去,可能会发生死锁和饥饿等问题。
3.性能:线程过多,CPU频繁切换,增加了调度时间。线程过多会消耗过多的内存。
一个对象响应消息向另一个对象发出消息的能力。委托可以用作继承的替代方法。对比:遗传。
6.3.1,概述
After a user is added to a project, the user can not perform the operation until the project owner or the project administrator has authorized the user.
Maxcompute provides ACL (object-based), cross project data sharing and project data protection. Authorization generally involves three elements: subject, which can be user or role, object and action. We recommend that you use ACL authorization first rather than policy (policy based) authorization.
In ACL authorization, the principal of maxcompute is user or role. Objects are various types of objects in a project, including projects, tables, functions, resources and task instances. Different types of operations related to objects. Authorization can only be performed when the object already exists. When an object is deleted, the authorized permission data will be automatically deleted.
项目添加用户后,项目所有者(Project Owner)或者项目管理员给用户进行授权后,用户才能执行操作。
MaxCompute提供了ACL(基于对象)、跨项目数据分享和项目数据保护等多种授权方式。授权一般涉及到三个要素,即主体(Subject,可以是用户也可以是角色)、客体(Object)和操作(Action)。我们推荐您优先使用ACL授权,而非Policy(基于策略)授权。
ACL授权中,MaxCompute的主体是用户或角色。客体是项目中的各种类型对象,包括项目、表、函数、资源和任务实例。操作与对象类型有关,不同对象类型所支持的操作不相同。当对象已经存在时,才能进行授权操作。当对象被删除时,通过授权的权限数据会被自动删除。
项目添加用户后,项目所有者(Project Owner)或者项目管理员给用户进行授权后,用户才能执行操作。
MaxCompute提供了ACL(基于对象)、跨项目数据分享和项目数据保护等多种授权方式。授权一般涉及到三个要素,即主体(Subject,可以是用户也可以是角色)、客体(Object)和操作(Action)。我们推荐您优先使用ACL授权,而非Policy(基于策略)授权。
ACL授权中,MaxCompute的主体是用户或角色。客体是项目中的各种类型对象,包括项目、表、函数、资源和任务实例。操作与对象类型有关,不同对象类型所支持的操作不相同。当对象已经存在时,才能进行授权操作。当对象被删除时,通过授权的权限数据会被自动删除。
6.3.2,语法说明
ACL authorization does not support [with grant option] parameter authorization. When user a grants user B access to an object, user B cannot further authorize user C.
All authorization operations must be performed by users in the following roles:
Project owner.
Users with the admin role in the project.
The creator of the object in the project.
The primary account can only authorize its own ram sub account, but not the sub account of other primary account.
ACL授权不支持[WITH GRANT OPTION]参数授权。当用户A授权用户B访问某个对象时,用户B无法将权限进一步授权给用户C。
所有授权操作都必须由以下角色的用户来完成:
项目所有者(Project Owner)。
项目中拥有Admin角色的用户。
项目中对象创建者。
主账号仅能对自身的RAM子账号授权,不能给其他主账号的子账号授权。
定义模型(defining model)存储库所基于的模型。任何数量的存储库都可以具有相同的定义模型。模型是定义您提供给用户的数据的属性和行为的类。用户希望看到他们是否离开您的应用程序并稍后再回来(或者是否刷新页面)的任何内容都应由模型表示。
7.3.1,注意点
Defining properties in the model generates fields in the table
Django determines the following information based on the type of the attribute:
The type of field supported by the currently selected database
The default HTML control to use when rendering the management form
Minimal validation at the management site
Django will add auto growing primary key columns to the table. Each model can only have one primary key column. If you use the option to set an attribute as a primary key column, Django will not generate the default primary key column
Attribute naming restrictions
Cannot be a reserved keyword for Python
Because of Django’s query method, continuous underscores are not allowed
在模型中定义属性,会生成表中的字段
django根据属性的类型确定以下信息:
当前选择的数据库支持字段的类型
渲染管理表单时使用的默认html控件
在管理站点最低限度的验证
django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列
属性命名限制
不能是python的保留关键字
由于django的查询方式,不允许使用连续的下划线
7.3.2,属性
field type is required when defining a property
The field is defined in the type django.db.models In the. Fields directory, it is imported into the django.db.models in
How to use it
Import from django.db import models
adopt models.Field Create an object of field type and assign it to a property
For important data, logical deletion is performed instead of physical deletion. The implementation method is to define isdelete attribute, the type is Boolean field, and the default value is false
定义属性时,需要字段类型
字段类型被定义在django.db.models.fields目录下,为了方便使用,被导入到django.db.models中
使用方式
导入from django.db import models
通过models.Field创建字段类型的对象,赋值给属性
对于重要数据都做逻辑删除,不做物理删除,实现方法是定义isDelete属性,类型为BooleanField,默认值为False
7.3.3,字段选项
Through the field options, you can implement the constraints on the field
When the field object is specified by the keyword parameter
If it is true, it will be stored as null in the database
Blank: if true, the field is allowed to be blank, and the default value is false
Contrast: null is the concept of database category, blank is the category of form verification
Db_ Column: the name of the field, if not specified, the name of the property is used
Db_ Index: if the value is true, an index is created for this field in the table
Default: the default value
primary_ Key: if true, the field becomes the primary key field of the model
Unique: if true, this field must have a unique value in the table
通过字段选项,可以实现对字段的约束
在字段对象时通过关键字参数指定
null:如果为True,Django 将空值以NULL 存储到数据库中,默认值是 False
blank:如果为True,则该字段允许为空白,默认值是 False
对比:null是数据库范畴的概念,blank是表单验证证范畴的
db_column:字段的名称,如果未指定,则使用属性的名称
db_index:若值为 True, 则在表中会为此字段创建索引
default:默认值
primary_key:若为 True, 则该字段会成为模型的主键字段
unique:如果为 True, 这个字段在表中必须有唯一值
7.3.4,关系
The types of relationships include
ForeignKey: one to many, which defines the field in the many side
Manytomanyfield: many to many, defining fields in both ends
One to one field: one to one, defining the field at either end
Recursive association can be maintained. Use ‘self’ to specify it. See “self association” for details
Using one access multiple: object. Model class lowercase_ Set
关系的类型包括
ForeignKey:一对多,将字段定义在多的端中
ManyToManyField:多对多,将字段定义在两端中
OneToOneField:一对一,将字段定义在任意一端中
可以维护递归的关联关系,使用’self’指定,详见"自关联"
用一访问多:对象.模型类小写_set
配电装置(distribution unit)作为一个组分配给进程或处理器的一组对象或组件。分布单元可以用运行时组合或聚合来表示。
The main contents of the five prevention functions of high voltage power distribution device are as follows:
1) Prevent disconnecting switch from opening and closing with load;
2) Prevent false opening and closing of circuit breaker;
3) Prevent live hanging grounding wire (or closing grounding knife switch);
4) Prevent closing disconnector with ground wire
5) Prevent entering the charged space by mistake.
高压配电装置的五防功能的主要内容是:
1) 防止带负荷分.合隔离开关;
2) 防止误分.合断路器;
3) 防止带电挂接地线(或合接地刀闸);
4) 防止带地线合隔离开关
5) 防止误入带电间隔。
In addition to the function of preventing electric shock, the high voltage distribution device should also meet the requirements of five protection functions. This is to prevent electric shock, personal injury, electrical fire and electrical equipment damage accidents, so as to ensure the safety of the power system and power users. In order to meet the five prevention function, a locking device is generally installed in the high-voltage distribution device to realize the five prevention function.
高压配电装置除本身已具有的防止电击防护功能外,还应满意五种防护保护功能的要求。这是为了防止电击人身伤亡事故.电气火灾和电气设备损坏事故,以确保电力系统和用电单位的安全。为了满足五防功能,一般在高压配电装置中加装实现五防功能的闭锁装置。高压配电装置除本身已具有的防止电击防护功能外,还应满意五种防护保护功能的要求。这是为了防止电击人身伤亡事故.电气火灾和电气设备损坏事故,以确保电力系统和用电单位的安全。为了满足五防功能,一般在高压配电装置中加装实现五防功能的闭锁装置。
实施视图(implementation view)指的是如何构造或计算某样东西的定义。例如,类是类型的实现,方法是操作的实现。系统的五个构架视图之一。 其他四个视图分别是逻辑视图、用例视图、进程视图和部署视图。实施视图包括实施模型及其从模块到包和层的组织形式的概览
9.3.1,作用
The role of the implementation view is to capture the architectural decisions made for implementation. The implementation view usually includes the following:
List all the subsystems in the implementation model.
Component diagrams that show how subsystems are organized into hierarchical and hierarchical structures.
A diagram illustrating the import dependencies between subsystems.
The implementation view is used to:
Assign implementation work to individuals (and teams) or subcontractors.
Estimate the amount of code to develop, modify, or delete.
Explain the reasons for large-scale reuse.
Consider publishing strategies.
实施视图的作用是获取为实施制定的构架决策。实施视图通常包括以下内容:
列举实施模型中的所有子系统。
说明子系统如何组织为层次和分层结构的构件图。
说明子系统间的导入依赖关系的图解。
实施视图用于:
为个人(和团队)或分包商分配实施工作。
估算要开发、修改或删除的代码数量。
阐明大规模复用的理由。
考虑发布策略。
10.3.1,transient的作用及使用方法
We all know that an object can be serialized as long as the serializable interface is implemented. This serialization mode of Java provides a lot of convenience for developers. We do not need to concern with the specific serialization process. As long as this class implements the serializable interface, all properties and methods of this class will be automatically serialized.
However, in the actual development process, we often encounter such problems. Some properties of this class need to be serialized, while other properties do not need to be serialized. For example, if a user has some sensitive information (such as password, bank card number, etc.), for the sake of security, we do not want to operate on the network (mainly involving serialization operation, local serialization cache is also involved) (applicable), the variable corresponding to the information can be added with the transient keyword. In other words, the lifetime of this field exists only in the caller’s memory and is not persisted on disk.
In short, the transient keyword of Java provides us with convenience. You only need to implement the serializable interface and add the keyword transient before the properties that do not need to be serialized. When serializing an object, this property will not be serialized to the specified destination.
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。
然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。
总之,java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
10.3.2,使用小结
1) Once a variable is decorated with transient, the variable is no longer part of the object persistence, and the variable content cannot be accessed after serialization.
2) The transient keyword can only modify variables, not methods and classes. Note that local variables cannot be decorated with the transient keyword. If the variable is a user-defined class variable, the class needs to implement the serializable interface.
3) Variables modified by the transient keyword can no longer be serialized, and a static variable, whether or not it is modified by transient, cannot be serialized.
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
这学习需求工程这门课程的学习,让我感受到了不一样的学习乐趣,对我的鼓励非常的大,我也非常坚信我是能够适应这样的状态,在这一阶段老师多元化的教学方式也让我对这门课程的学习可以有更加深刻的印象。
需求工程作为软件工程生命周期的起点是软件开发后继阶段的基础。软件需求是软件开发的目标,也是其项目开发成功与失败的重要因素。有时候错误的需求分析很可能导致软件开发的全盘否定,需求错误的代价会随着项目的展开儿发生变化。如果需求错误能够及时的修复,那么其代价就会被限定在一定的范围之内。如果没有及时的发现,则很可能让整个软件的开发失去其本来应有的意义。
明白了正确的需求的重要性,还要注意一点就是把握软件在开发过程中应该有的功能性需求和非功能性需求。软件开发的前期要首先分析和撰写需求规格说明书,这也在一定程度上给我们一个机会去深究软件本身应该具备的功能性意义。采用合理化的需求分析模型,能够快速的开发出系统的概貌,有利于开发过程的顺利进行,其模型包括:瀑布模型,螺旋模型,,迭代模型和敏捷方法等。这些方法能够准确的定位产品的生命周期,从而使开发过程不至于偏离方向。减少开发过程中走的弯路。
在需求工程这门功课中,学会使用uml建模是非常重要的,也是一定要学会的,统一建模语言(U ML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和信息控制。UML 适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。U ML包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。U ML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。
学习需求工程这门课程已经有一个学期了,整一个学期下来,应该说还是有许多值得肯定的地方的,其实在我看来,软件工程与其说是一门课程,不如说是一门思想。是一个如何去分析和处理问题的过程,应该说其范畴已经远远不止局限于该门课程,成为了一个综合的一个能够解决问题的思想集合。所谓的需求获取,那就是一个谈判,辩论,交流的过程,已经不是单纯的编编程序就能解决的问题了。这门课程教给了我们在完成一个实际项目时的一般程序及过程,我认为这是一份非常具有实际意义的教学内容。当我们在毕业之后,这是我们实际要运用的一项非常有用的技能,而且不仅仅局限于软件工程的范畴,我们即使是从事与其它行业,不也是要从需求获取开始。今天在这里写了这些,算是我对软件工程这门课程的一点点心得思想到,也许是正确的,也许在一定的程度上存在着观点的偏激错误,但是起码这些东西是我觉得存在着的一些问题,但愿软件工程这门课程能够开的越来越好,让更多的学生们能够从这门课程中受益,在以后社会残酷的竞争之中存活下来!
不管做什么事,开头都是最重要的,所以需求分析是最重要的,它贯穿整个开发流程,当工作进展到测试阶段时,突然发现需求没有弄清楚,等于是整个工作从头再来,这不光降低了工作效率,而且对于开发人员的情绪打击很大。
重要的事情自然要由重要的人来做,应当安排经验丰富能力强的人来做需求分析。
必须加强对需求的跟踪,每一次需求变更会影响到整个软件过程,所以在定义需求时要充分考虑,定义需求的工作自然也应该由经验丰富的人来做。
概要设计跟需求分析关联很大,需求分析要做的工作就是理清需求,决定由哪些模块协同完成,需求分析和概要设计由一个人来做会更方便。
概要设计包含了接口定义,一旦接口定下来,软件的框架就确定了,从而约束了后面的风险。接口变更带来的附加工作很多,接口制定的重要性是很明显的,还是那句话:重要的事情由重要的人做。
在接口定义下来之后,接下来就是实现了,详细设计描述基本的实现算法和模块的子结构。概要设计的输出就是详细设计的需求,这个需求是开发人员容易理解的。详细设计和编码应该有一个人来完成,因为这两部分结合紧密。
详细设计的目的:
1.评审,概要设计人员和同行可以对详细设计进行评审,以控制风险。
2.维护,当需求发生变更,或有Bug,详细设计可以给与指导。
3.交接,在人事变动和工作变更时,有详细设计文档可以方便的交接代码。
测试的核心价值是发现Bug,是以写CASE为主。
对CASE的整理很重要,CASE和需求是相关的,有必要将CASE与需求点对应并编写成文档,方便查找,在后续的修改中,开发人员可以通过这个文档找到相应CASE,对修改进行验证。
很多项目在需求确立后编写测试计划,这听上去很完美,但如果需求总是变更,很多工作将被浪费,所以我建议在开发进入到一定阶段的时候开始进行相关测试,因为这个时候需求相对稳定,而且符合打铁趁热的观念。
类的操作是针对类自身的操作,而不是它去操作人家。比如书这个类有上架下架的操作,是书自己被上架下架,不能因为上架下架是管理员的动作而把它放在管理员的操作里。
两个相关联的类,需要在关联的类中加上被关联类的ID,并且箭头指向被关联类。可以理解为数据表中的外键。比如借书和书,借书需要用到书的信息,因此借书类需包含书的ID,箭头指向书。
由于业务复杂性,一个显示中的实体可能会被分为多个类,这是很正常的,类不是越少越好。类的设计取决于怎样让后台程序的操作更加简单。比如单看逻辑,借书类可以不存在,它的信息可以放在书这个类里。然而借还书的书的上架下架完全不是一回事,借书类对借书的操作更加方便,不需要去重复改动书这个类中的内容。此外,如果书和借书是1对多的关系,那就必须分为两个类。