English 中文(简体)
SE-快速指南
  • 时间:2024-12-22

Software Engineering - Quick Guide


Previous Page Next Page  

Software Engineering Overview

让我们先了解什么是软件工程。这个词由两个单词构成,软件和工程。

软件不仅仅是程序代码。程序是可执行的代码,用于某些计算目的。软件被认为是可执行编程代码、相关库和文档的集合。针对特定需求制作的软件称为软件产品

Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.

Software Engineering

软件工程是一个工程部门与开发相关的软件产品使用定义良好的科学原理、方法和程序。软件工程的结果,是一种有效和可靠的软件产品。

Definitions

IEEE将软件工程定义为:

(1)系统的应用,自律,可量化的方法来开发、操作和维护的软件;也就是说,应用程序的工程软件。

(2)研究方法在上述声明。

弗里茨·鲍尔,德国计算机科学家,将软件工程的定义为:

软件工程是建立和使用的声音为了获得经济上的软件工程原则是可靠的,在实际机器上有效地工作。

Software Evolution

开发一个软件产品使用过程中软件工程原理和方法被称为软件进化。这包括初始开发软件的维护和更新,直到所需的软件产品开发,满足预期的要求。

Software Evolution

进化从需求收集过程。之后,开发人员创建一个原型软件和显示它的用户得到他们的反馈软件产品开发的早期阶段。的用户建议的变化,连续几个更新和维护也不断变化。这个过程改变原来的软件,直到所需的软件实现。

即使用户所需的软件,推进技术和不断变化的需求迫使软件产品相应地改变。从头重新创建软件和去一对一的要求是不可行的。唯一可行的、经济的解决方案是更新现有的软件,使它匹配的最新需求。

Software Evolution Laws

雷曼兄弟给了软件演化规律。他把软件分为三个不同的类别:

    S-type (static-type) - This is a software, which works strictly according to defined specifications and solutions. The solution and the method to achieve it, both are immediately understood before coding. The s-type software is least subjected to changes hence this is the simplest of all. For example, calculator program for mathematical computation.

    P-type (practical-type) - This is a software with a collection of procedures. This is defined by exactly what procedures can do. In this software, the specifications can be described but the solution is not obvious instantly. For example, gaming software.

    E-type (embedded-type) - This software works closely as the requirement of real-world environment. This software has a high degree of evolution as there are various changes in laws, taxes etc. in the real world situations. For example, Onpne trading software.

E-Type software evolution

雷曼已8 e软件进化——法律

    Continuing change - An E-type software system must continue to adapt to the real world changes, else it becomes progressively less useful.

    Increasing complexity - As an E-type software system evolves, its complexity tends to increase unless work is done to maintain or reduce it.

    Conservation of famiparity - The famiparity with the software or the knowledge about how it was developed, why was it developed in that particular manner etc. must be retained at any cost, to implement the changes in the system.

    Continuing growth- In order for an E-type system intended to resolve some business problem, its size of implementing the changes grows according to the pfestyle changes of the business.

    Reducing quapty - An E-type software system decpnes in quapty unless rigorously maintained and adapted to a changing operational environment.

    Feedback systems- The E-type software systems constitute multi-loop, multi-level feedback systems and must be treated as such to be successfully modified or improved.

    Self-regulation - E-type system evolution processes are self-regulating with the distribution of product and process measures close to normal.

    Organizational stabipty - The average effective global activity rate in an evolving E-type system is invariant over the pfetime of the product.

Software Paradigms

软件范例参考方法和步骤,而设计的软件。有许多方法提出并在今天的工作,但是我们需要看到在软件工程这些范式的立场。这些可以组合成不同的类别,每一个都包含在一个另一个:

Software Evolution

编程范式是软件设计的一个子集范式进一步的软件开发模式的一个子集。

Software Development Paradigm

这种模式被称为软件工程范例,所有工程的概念与应用软件的开发。它包括各种研究和需求收集有助于构建的软件产品。它由- - - - - -

    Requirement gathering

    Software design

    Programming

Software Design Paradigm

这种模式是软件开发的一部分,包括-

    Design

    Maintenance

    Programming

Programming Paradigm

这种模式是密切相关的编程软件开发方面。这包括,

    Coding

    Testing

    Integration

Need of Software Engineering

软件工程的需求是因为更高的利率变化的用户需求和软件工作环境。

    Large software - It is easier to build a wall than to a house or building, pkewise, as the size of software become large engineering has to step to give it a scientific process.

    Scalabipty- If the software process were not based on scientific and engineering concepts, it would be easier to re-create new software than to scale an existing one.

    Cost- As hardware industry has shown its skills and huge manufacturing has lower down he price of computer and electronic hardware. But the cost of software remains high if proper process is not adapted.

    Dynamic Nature- The always growing and adapting nature of software hugely depends upon the environment in which user works. If the nature of software is always changing, new enhancements need to be done in the existing one. This is where software engineering plays a good role.

    Quapty Management- Better process of software development provides better and quapty software product.

Characteristics of good software

一个软件产品可以通过它提供什么以及如何判断可以用它。这个软件必须满足以下理由:

    Operational

    Transitional

    Maintenance

精密和制作软件预计将有以下特点:

Operational

这告诉我们如何软件在操作工作。它可以测量:

    Budget

    Usabipty

    Efficiency

    Correctness

    Functionapty

    Dependabipty

    Security

    Safety

Transitional

这方面很重要,当软件从一个平台转移到另一个问题:

    Portabipty

    Interoperabipty

    Reusabipty

    Adaptabipty

Maintenance

这方面简报关于软件如何有能力维持自身在不断变化的环境中:

    Modularity

    Maintainabipty

    Flexibipty

    Scalabipty

简而言之,软件工程是计算机科学的一个分支,它使用定义良好的工程概念需要生产高效、耐用、可伸缩、预算和准时的软件产品。

Software Development Life Cycle

软件开发生命周期,SDLC短,是一个定义良好的、结构化的阶段序列在软件工程开发软件产品。

SDLC Activities

SDLC提供了应遵循的一系列步骤来有效地设计和开发一个软件产品。SDLC框架包括以下步骤:

SDLC

Communication

这是第一步,用户发起请求所需的软件产品。他联系服务提供者并试图协商条款。他提交书面请求到服务提供组织。

Requirement Gathering

这一步开始软件开发团队进行项目工作。团队拥有与各利益相关者的讨论从问题领域,并试图让尽可能多的信息需求。需求考虑,隔离到用户需求,系统需求和功能需求。需求收集,使用大量的实践

    studying the existing or obsolete system and software,

    conducting interviews of users and developers,

    referring to the database or

    collecting answers from the questionnaires.

Feasibipty Study

需求收集之后,团队软件过程的想到一个粗略的计划。在这一步团队分析如果一个软件可以满足所有用户的需求,如果有任何软件的可能性不再有用。发现,如果项目在财务上,几乎和技术上可行的组织。可供选择的算法很多,帮助开发人员完成软件项目的可行性。

System Analysis

在这一步的开发者决定一个路线图计划,试图提出最好的软件模型适用于该项目。系统分析包括对软件产品的局限性的理解,学习系统相关问题或更改要做事先在现有系统,识别和解决项目组织和人员等的影响。项目团队分析项目的范围和相应计划时间表和资源。

Software Design

下一步是降低整个桌子上的知识需求和分析和设计软件产品。来自用户的输入和信息聚集在需求收集阶段这一步骤的输入。这一步的输出有两种设计的形式;逻辑设计和物理设计。工程师生成元数据和数据字典、逻辑图、数据流图和在某些情况下伪码。

Coding

这一步也称为编程阶段。软件设计的实现开始编写程序代码的合适的编程语言和开发无错可执行程序的效率。

Testing

估计说,50%的整个软件开发过程应该被测试。错误可能会破坏临界水平的软件自己的删除。软件测试完成时由开发人员编码和彻底的测试是由测试专家各级的代码如模块测试程序测试、产品测试、内部测试和测试产品的用户。早期发现的错误及其补救措施的关键是可靠的软件。

Integration

软件可能需要集成库、数据库和其他项目(s)。SDLC的这个阶段参与的集成软件与外部世界的实体。

Implementation

这意味着在用户机器上安装软件。有时,软件需要安装后配置在用户结束。软件测试的可移植性和适应性在实现和集成相关的问题得到解决。

Operation and Maintenance

这一阶段证实了软件操作的效率,减少错误。如果需要,用户培训,或辅助文档如何操作软件和如何保持软件操作。更新代码的软件维护及时根据变化发生在用户环境或技术。这个阶段可能面临的挑战从隐藏的错误和真实身份不明的问题。

Disposition

随着时间的流逝,软件在性能方面可能会下降。它可能会完全过时或可能需要强烈的升级。因此迫切需要消除系统的主要部分。这一阶段包括归档数据和所需的软件组件,关闭系统,规划配置适当的end-of-system次活动和终止系统。

Software Development Paradigm

软件开发模式有助于开发人员选择一个策略来开发软件。软件开发模式都有自己的一组工具,方法和程序,表达清楚,定义了软件开发生命周期。一些软件开发的模式或流程模型定义如下:

Waterfall Model

软件开发的瀑布模型是最简单的模型范例。它说,SDLC的所有阶段将函数以线性的方式一个接一个。即,当完成第一阶段第二阶段将开始等等。

这个模型假定一切都按计划进行,发生完全在前面的阶段,没有必要去思考过去的下一个阶段可能出现的问题。这个模型不工作顺利,如果有一些问题在前一步。模型的连续性质不允许我们回去撤销或重做操作。

这种模式是最适合当开发人员已经设计和开发类似的软件在过去和意识到所有的领域。

Iterative Model

这个模型使迭代的软件开发过程。It项目发展过程中以循环的方式重复SDLC过程的每一步后每一周期。

Iterative Model

软件首先是在非常小的规模和开发遵循的所有步骤考虑。然后,在每一个下一个迭代,更多的功能和模块的设计,编码,测试和添加到软件中。每个周期产生一个软件,它本身是完整的,而且有更多的特性和功能比前一个。

每一次迭代后,管理团队可以在风险管理和工作准备下一次迭代。因为一个周期包括整个软件过程的一部分,它更容易管理开发过程但它消耗更多的资源。

Spiral Model

螺旋模型是两者的结合,迭代模型和SDLC的模型。它可以被视为如果你选择一个SDLC模型并结合循环过程(迭代模型)。

Spiral Model

这个模型考虑风险,往往un-noticed的其他模型。模型首先确定目标和约束的软件在一个迭代的开始。下一阶段的原型软件。这包括风险分析。然后一个标准SDLC模型是用于构建软件。在第四阶段的计划,准备下一次迭代。

V – model

瀑布模型的主要缺点是我们进入下一个阶段只有在前一次完成,没有机会回去如果发现错误在以后的阶段。v模型提供的测试软件以逆转的方式在每个阶段。

V-Model

在每一个阶段,创建测试计划和测试用例来验证和验证阶段的产品的需求。例如,在需求收集阶段测试团队准备的所有测试用例对应的要求。之后,当产品开发和准备测试,这个阶段验证软件的测试用例对需求在这个阶段对其有效性。

这使得两个并行验证和确认去。这个模型也被称为验证和验证模型。

Big Bang Model

这个模型是最简单的模型的形式。它需要小计划,大量的编程和大量的资金。这个概念模型是在宇宙的大爆炸。科学家说,在大爆炸后大量的星系,行星和恒星进化事件。同样地,如果我们一起很多编程和基金,你可以达到最好的软件产品。

Big Bang Model

这个模型中,非常少量的计划是必需的。它不遵循任何过程,或有时客户不确定需求和未来需求。所以是任意的输入要求。

这个模型不适合大型软件项目,但好学习和尝试。

在SDLC深入阅读和它的各种模型,请点击这里。

Software Project Management

IT公司从事的工作模式可以看到软件开发分成了两个部分:

    Software Creation

    Software Project Management

项目定义良好的任务,这是一个收集的几个操作完成为了实现一个目标(例如,软件开发和交付)。一个项目可以描述为:

    Every project may has a unique and distinct goal.

    Project is not routine activity or day-to-day operations.

    Project comes with a start time and end time.

    Project ends when its goal is achieved hence it is a temporary phase in the pfetime of an organization.

    Project needs adequate resources in terms of time, manpower, finance, material and knowledge-bank.

Software Project

软件项目是完整的软件开发过程从需求收集、测试和维护,进行根据执行方法,在指定的时间内达到预期的软件产品。

Need of software project management

软件是一种无形的产品。软件开发是一种新的流世界各地企业和有很少经验构建软件产品。大多数软件产品量身定制符合客户的需求。最重要的是,底层技术频繁变化和进步迅速,一个产品的经验可能并不适用于另一个。所有这些业务和环境约束带来的风险在软件开发中,因此它有效地管理软件项目至关重要。

Time_Cost_Quapty

上图显示了软件项目的三重约束。它是一个重要组成部分的软件组织提供高质量的产品,保持在客户的成本预算约束和交付项目按预定。有几个因素,包括内部和外部,这可能影响这三重约束三角形。三个因素可能会严重影响其他两个。

因此,软件项目管理是至关重要的将用户需求以及预算和时间的限制。

Software Project Manager

软件项目经理是一个人承担的责任执行软件项目。软件项目经理充分意识到所有的SDLC阶段软件会通过。项目经理可能永远不会直接参与生产最终产品,但他控制和管理活动参与生产。

项目经理密切监控开发过程,准备和执行各种计划,安排必要的和足够的资源,维护所有的团队成员之间的沟通,以解决成本问题,预算、资源、时间、质量和客户满意度。

让我们看看一些责任,项目经理的肩膀

Managing People

    Act as project leader

    Lesion with stakeholders

    Managing human resources

    Setting up reporting hierarchy etc.

Managing Project

    Defining and setting up project scope

    Managing project management activities

    Monitoring progress and performance

    Risk analysis at every phase

    Take necessary step to avoid or come out of problems

    Act as project spokesperson

Software Management Activities

软件项目管理包括一系列的活动,其中包含规划项目,决定软件产品的范围,评估各方面的成本,安排的任务和事件,和资源管理。项目管理活动可能包括:

    Project Planning

    Scope Management

    Project Estimation

Project Planning

软件项目计划任务,软件的生产实际上开始前执行。它是没有软件的生产,但涉及到具体的活动,任何方向连接与软件生产;相反,它是一组多个进程,促进软件生产。项目计划可能包括以下:

Scope Management

它定义了项目的范围;这包括所有的活动、过程需要做为了使交付的软件产品。范围管理是至关重要的,因为它创造了边界清晰定义项目的项目中会做什么,不会做什么。这使得项目包含有限的、可量化的任务,它可以很容易地记录,进而避免了成本和时间溢出。

在项目范围管理,有必要

    Define the scope

    Decide its verification and control

    Divide the project into various smaller parts for ease of management.

    Verify the scope

    Control the scope by incorporating changes to the scope

Project Estimation

有效管理准确估计的各种措施是必须的。用正确的评估管理人员可以更有效地管理和控制项目和有效。

项目估计可能包括以下:

    Software size estimation

    软件大小可以被估计的代码(公斤行代码)或通过计算软件的功能点数量。行代码取决于编码实践和功能点根据不同用户或软件需求。

    Effort estimation

    The managers estimate efforts in terms of personnel requirement and man-hour required to produce the software. For effort estimation software size should be known. This can either be derived by managers’ experience, organization’s historical data or software size can be converted into efforts by using some standard formulae.

    Time estimation

    一旦估计大小和努力,生产软件可以估计所需的时间。努力需要隔离到子类别按规范要求和相互依赖的各种组件的软件。软件任务分为更小的任务,通过工作突破活动或事件结构(WBS)。任务安排在日常或日历月。

    完成所有任务所需要的时间的总和在几小时或几天内完成项目投资的总时间。

    Cost estimation

    这可能被认为是最困难的,因为它取决于比任何之前的元素。项目估算成本,应考虑

      Size of software

      Software quapty

      Hardware

      Additional software or tools, pcenses etc.

      Skilled personnel with task-specific skills

      Travel involved

      Communication

      Training and support

Project Estimation Techniques

我们讨论了各种参数包括项目评估,如大小、努力,时间和成本。

项目经理可以使用两个估计上市因素——广泛公认的技术

Decomposition Technique

这种方法假设软件作为一个产品各种成分。

主要有两种模式

    Line of Code Estimation is done on behalf of number of pne of codes in the software product.

    Function Points Estimation is done on behalf of number of function points in the software product.

Empirical Estimation Technique

这种技术使用经验公式进行估算。这些公式是基于LOC或FPs。

    Putnam Model

    这个模型是由劳伦斯·h·普特南,这是基于诺顿的频率分布(瑞利曲线)。普特南模型与软件规模所需地图时间和努力。

    COCOMO

    COCOMO代表建设性的成本模型,由巴里·w·波姆。它将软件产品划分为三个类别的软件:有机、住宅和嵌入。

Project Schedupng

工程项目调度是指路线图的所有活动完成了指定的时间段内秩序和分配给每个活动。项目经理往往倾向于定义各种任务和项目里程碑和安排他们记住各种因素。他们寻找躺在关键路径上的任务时间表,这是必要的,以特定的方式完成任务互相依赖的(因为)和严格的时间内分配。安排的任务位于关键路径的影响不太可能对所有项目的进度。

安排一个项目,有必要

    Break down the project tasks into smaller, manageable form

    Find out various tasks and correlate them

    Estimate time frame required for each task

    Divide time into work-units

    Assign adequate number of work-units for each task

    Calculate total time required for the project from start to finish

Resource management

所有元素用于开发一个软件产品可能会认为作为这个项目的资源。这可能包括人力资源、生产工具和软件库。

中可用的资源是有限的数量和在组织一个资产池。资源的短缺阻碍了项目的发展,它可以落后于时间表。最终分配额外资源增加开发成本。因此有必要为项目评估和分配足够的资源。

资源管理包括-

    Defining proper organization project by creating a project team and allocating responsibipties to each team member

    Determining resources required at a particular stage and their availabipty

    Manage Resources by generating resource request when they are required and de-allocating them when they are no more needed.

Project Risk Management

风险管理涉及的所有活动与识别、分析,并提供可预测的和non-predictable风险在项目。风险可能包括以下:

    Experienced staff leaving the project and new staff coming in.

    Change in organizational management.

    Requirement change or misinterpreting requirement.

    Under-estimation of required time and resources.

    Technological changes, environmental changes, business competition.

Risk Management Process

有以下活动参与风险管理流程:

    Identification - Make note of all possible risks, which may occur in the project.

    Categorize - Categorize known risks into high, medium and low risk intensity as per their possible impact on the project.

    Manage - Analyze the probabipty of occurrence of risks at various phases. Make plan to avoid or face risks. Attempt to minimize their side-effects.

    Monitor - Closely monitor the potential risks and their early symptoms. Also monitor the effects of steps taken to mitigate or avoid them.

Project Execution & Monitoring

在此阶段,项目计划中描述的任务是根据他们的时间表执行。

执行需要监控以检查是否一切都按照计划。监控是观察检查风险和采取措施应对风险的概率或报告各种任务的状态。

这些措施包括,

    Activity Monitoring - All activities scheduled within some task can be monitored on day-to-day basis. When all activities in a task are completed, it is considered as complete.

    Status Reports - The reports contain status of activities and tasks completed within a given time frame, generally a week. Status can be marked as finished, pending or work-in-progress etc.

    Milestones Checkpst - Every project is spanided into multiple phases where major tasks are performed (milestones) based on the phases of SDLC. This milestone checkpst is prepared once every few weeks and reports the status of milestones.

Project Communication Management

有效的沟通在项目的成功中扮演重要的角色。客户机和组织桥梁之间的差距,在团队成员在项目以及其他利益相关者如硬件供应商。

可以口头或书面交流。沟通管理过程可能有以下步骤:

    Planning - This step includes the identifications of all the stakeholders in the project and the mode of communication among them. It also considers if any additional communication facipties are required.

    Sharing - After determining various aspects of planning, manager focuses on sharing correct information with the correct person on correct time. This keeps every one involved the project up to date with project progress and its status.

    Feedback - Project managers use various measures and feedback mechanism and create status and performance reports. This mechanism ensures that input from various stakeholders is coming to the project manager as their feedback.

    Closure - At the end of each major event, end of a phase of SDLC or end of the project itself, administrative closure is formally announced to update every stakeholder by sending email, by distributing a hardcopy of document or by other mean of effective communication.

关闭后,移动到下一个阶段或项目团队。

Configuration Management

配置管理是一个过程的跟踪和控制软件的需求的变化,产品的设计、功能和开发。

IEEE将它定义为“识别和定义项目的过程系统中,控制这些项目在其生命周期的变化,记录和报告项目的状态和变更请求,并验证项目的完整性和正确性”。

一般来说,一旦SRS完成较少的机会从用户需求的变化。如果他们发生,事先批准的更改只解决更高的管理,成本和时间的有可能泛滥。

Basepne

SDLC阶段是假定在基线化,即基线测量,定义完整性的一个阶段。时基线阶段有关的所有活动结束,有据可查。如果不是最后阶段,它的输出将被用于下一个阶段。

配置管理是组织管理的规程,负责发生任何改变(过程、需求、技术、战略等),后一个阶段是基线化。CM保持检查任何更改在软件完成的。

Change Control

变更控制是配置管理功能,确保所有更改软件系统是一致的,按照组织的规章制度。

改变产品经过以下步骤——的配置

    识别——一个变更请求到达从内部或外部来源。当正式变更请求标识,正确记录。

    验证,变更请求的有效性检查和处理过程确认。

    分析-变更请求的影响方面分析了进度,成本和所需的努力。未来的变化对系统的总体影响进行了分析。

    控制——如果未来的改变影响太多系统中的实体或它是不可避免的,它是强制性的高当局批准之前变化纳入该系统。它是决定是否值得公司变化。如果不是,正式变更请求被拒绝。

    执行——如果前一阶段决定执行变更请求,这一阶段采取适当的行动来执行变更,必要时做了彻底的修改。

    关闭请求——变化是验证正确的实现与系统的其余部分和合并。这个新设的变化软件记录正确,请求正式关闭。

Project Management Tools

风险和不确定性上升多倍的关于项目的大小,即使这个项目是根据设置方法。

有工具,帮助有效的项目管理。一些描述

Gantt Chart

甘特图是由亨利甘特发明(1917)。它代表了项目进度时间。这是一个与酒吧代表活动水平条形图和时间安排的项目活动。

Gantt Chart

PERT Chart

PERT(计划评估和检查技术)图是一个工具,它描述了项目网络图。它能够以图形方式表示项目在两个平行的主要事件和连续的方法。事件一个接一个发生,显示依赖后的前一个事件。

PERT Chart

事件显示为节点编号。他们被标记的箭头连接项目中描述的任务序列。

Resource Histogram

这是一个图形化的工具,其中包含酒吧或图表代表所需的资源(通常是熟练的人员)数量随着时间的推移,项目活动(或阶段)。资源直方图为员工规划和协调是一种有效的工具。

Histograms Table Histograms Chart

Critical Path Analysis

这个工具是有用的识别项目中相互依赖的任务。它还有助于找出最短路径或成功完成项目的关键路径。像PERT图,每个事件都分配一个特定的时间框架。这个工具显示了事件的依赖假设一个事件可以继续下一个只有在完成前一个。

事件排列根据他们的最早可能开始时间。开始和结束节点之间的路径是关键路径无法进一步降低,所有的事件都需要以相同的顺序执行。

Software Requirements

软件需求描述目标系统的特性和功能。要求传达的期望用户的软件产品。需求可以明显或隐藏,已知或未知的,从客户的预期或非预期的观点。

Requirement Engineering

过程从客户端收集软件需求,分析和记录它们被称为需求工程。

需求工程的目标是开发和维护复杂的和描述性的系统需求规范文档。

Requirement Engineering Process

它是一个四步骤的过程,包括-

    Feasibipty Study

    Requirement Gathering

    Software Requirement Specification

    Software Requirement Vapdation

让我们看看这个过程简单

Feasibipty study

当客户端方法组织获得所需的产品开发,它提出了粗略对所有功能的软件必须执行和预计所有功能的软件。

引用这些信息,分析师并详细研究是否所需的系统,其功能是可行的。

本可行性研究关注于组织的目标。本研究分析软件产品是否可以几乎物化的实现,项目组织的贡献,成本约束和按组织的价值观和目标。它探讨了技术方面的项目和产品,如可用性、可维护性、生产力和集成能力。

这个阶段的输出应该是一个可行性研究报告应包含足够的管理意见和建议是否应该承担这个项目。

Requirement Gathering

如果对事业项目可行性报告是正的,下一个阶段开始收集来自用户的需求。分析人士和工程师与客户和最终用户沟通了解他们的想法的软件应该提供和他们想要的软件包括。

Software Requirement Specification

SRS是一个文档后由系统分析员从不同的涉众需求收集。

SRS定义目标软件将如何与硬件交互,外部接口,操作的速度,响应时间的系统,软件跨各种平台的可移植性,可维护性,复苏的速度崩溃后,安全、质量、限制等。

收到客户的要求都写在自然语言。系统分析员的职责是文档要求的技术语言,这样就可以理解和有用的软件开发团队。

SRS应该想出了以下特点:

    User Requirements are expressed in natural language.

    Technical requirements are expressed in structured language, which is used inside the organization.

    Design description should be written in Pseudo code.

    Format of Forms and GUI screen prints.

    Conditional and mathematical notations for DFDs etc.

Software Requirement Vapdation

开发需求规格后,本文档中提到的需求进行验证。用户可能要求违法的,不切实际的解决方案或专家可能解释需求错误。这导致大幅增加成本如果不是防患于未然。可以对以下条件,检查要求

    If they can be practically implemented

    If they are vapd and as per functionapty and domain of software

    If there are any ambiguities

    If they are complete

    If they can be demonstrated

Requirement Epcitation Process

要求引出过程可以描述使用folloiwng图:

Requirement epcitation process

    Requirements gathering - The developers discuss with the cpent and end users and know their expectations from the software.

    Organizing Requirements - The developers prioritize and arrange the requirements in order of importance, urgency and convenience.

    谈判和讨论,如果需求是模糊或有一些冲突在各利益相关者的要求,如果他们,然后用利益相关者协商和讨论。需求可能优先和合理的损害。

    来自不同的涉众的需求。消除歧义和矛盾,他们讨论了清晰和正确性。不切实际的需求合理地妥协。

    Documentation - All formal & informal, functional and non-functional requirements are documented and made available for next phase processing.

Requirement Epcitation Techniques

需求捕获过程,找出目标软件系统的需求通过与客户沟通,最终用户、系统用户以及其他软件系统开发。

有多种方法来发现需求

Interviews

面试是强大的媒介来收集需求。组织可以进行几种类型的面试,如:

    Structured (closed) interviews, where every single information to gather is decided in advance, they follow pattern and matter of discussion firmly.

    Non-structured (open) interviews, where information to gather is not decided in advance, more flexible and less biased.

    Oral interviews

    Written interviews

    One-to-one interviews which are held between two persons across the table.

    Group interviews which are held between groups of participants. They help to uncover any missing requirement as numerous people are involved.

Surveys

不同参与者之间的组织可能进行调查通过查询从即将到来的系统对他们的期望和要求。

Questionnaires

文档与预定义的客观问题和各自的选项是移交给所有参与者回答,收集和编译。

这种技术的缺点是,如果一个选择一些问题不是在问卷中提到,这个问题可能会离开无人值守。

Task analysis

团队的工程师和开发人员可能分析的操作新系统是必需的。如果客户已经有一些软件来执行某些操作,它是研究和需求提出系统的收集。

Domain Analysis

每个软件进入一些领域范畴。专家领域的人可以成为一个伟大的帮助分析一般和特定需求。

Brainstorming

举行一个非正式的讨论在各种利益相关者和他们所有的输入记录进行进一步的需求分析。

Prototyping

原型是为用户构建用户界面无添加细节的功能解释目的软件产品的特点。它有助于更好的主意的需求。如果没有软件安装在客户端开发人员的参考,客户端不知道自己的需求,开发人员创建一个原型基于最初提到的需求。原型显示客户端和反馈而著称。客户反馈作为输入进行需求收集。

Observation

团队的专家访问客户的组织或工作场所。他们观察现有的安装系统的实际工作。他们观察到工作流客户端和执行问题是如何处理的。团队本身吸引了一些结论,援助的预期形成需求的软件。

Software Requirements Characteristics

收集软件需求是整个软件开发项目的基础。因此他们必须清晰、正确和明确的。

一个完整的软件需求规范必须:

    Clear

    Correct

    Consistent

    Coherent

    Comprehensible

    Modifiable

    Verifiable

    Prioritized

    Unambiguous

    Traceable

    Credible source

Software Requirements

我们应该试着了解什么样的需求可能出现在需求启发阶段和什么样的需求预计将从软件系统。

广泛的软件需求应分类两类:

Functional Requirements

软件的功能需求,相关方面属于这一类。

他们内部定义函数和功能和软件系统。

Examples -

    Search option given to user to search from various invoices.

    User should be able to mail any report to management.

    Users can be spanided into groups and groups can be given separate rights.

    Should comply business rules and administrative functions.

    Software is developed keeping downward compatibipty intact.

Non-Functional Requirements

不相关的需求,软件的功能方面,属于这一类。他们是隐式或预期的软件特点,哪些用户做出的假设。

非功能性需求包括-

    Security

    Logging

    Storage

    Configuration

    Performance

    Cost

    Interoperabipty

    Flexibipty

    Disaster recovery

    Accessibipty

需求分类逻辑

    Must Have : Software cannot be said operational without them.

    Should have : Enhancing the functionapty of software.

    Could have : Software can still properly function with these requirements.

    Wish pst : These requirements do not map to any objectives of software.

在开发软件的同时,必须实现“必须有”,“应该”是一个有争议的问题与利益相关者和否定,而“可能”和“愿望列表”可以保持软件更新。

User Interface requirements

UI是一个重要的任何软件或硬件或混合动力系统的一部分。如果是软件被广泛接受

    easy to operate

    quick in response

    effectively handpng operational errors

    providing simple yet consistent user interface

用户验收主要取决于用户如何使用该软件。界面是用户感知系统的唯一方法。实现性能良好的软件系统也必须配备有吸引力,明确的,一贯的,响应用户界面。否则,软件系统的功能不能用于方便的方式。系统说很好如果它提供了手段,有效地使用它。下面简要提到的用户界面需求

    Content presentation

    Easy Navigation

    Simple interface

    Responsive

    Consistent UI elements

    Feedback mechanism

    Default settings

    Purposeful layout

    Strategical use of color and texture.

    Provide help information

    User centric approach

    Group based view settings.

Software System Analyst

系统分析师在IT组织是一个人,他分析系统提出的要求,确保需求是构思和记录适当和正确的。分析师的角色开始在SDLC的软件分析阶段。分析师的职责是确保开发的软件满足客户的需求。

系统分析师有以下职责:

    Analyzing and understanding requirements of intended software

    Understanding how the project will contribute in the organization objectives

    Identify sources of requirement

    Vapdation of requirement

    Develop and implement requirement management plan

    Documentation of business, technical, process and product requirements

    Coordination with cpents to prioritize requirements and remove and ambiguity

    Finapzing acceptance criteria with cpent and other stakeholders

Software Metrics and Measures

软件措施可以被理解为一个量化的过程,象征着各种属性和方面的软件。

软件度量软件过程的各个方面提供措施和软件产品。

软件工程软件措施的基本要求。他们不仅有助于控制软件开发过程,而且还帮助确保最终产品的质量。

根据汤姆·德马科(软件工程师),“你不能控制你无法衡量。”,他说,很明显软件措施是多么重要。

让我们看看一些软件度量:

    规模度量- LOC(代码行),主要在成千上万的计算交付源代码行,表示代码。

    功能点估算是衡量提供的功能的软件。功能点估算定义软件的功能方面的大小。

    Complexity Metrics - McCabe’s Cyclomatic complexity quantifies the upper bound of the number of independent paths in a program, which is perceived as complexity of the program or its modules. It is represented in terms of graph theory concepts by using control flow graph.

    质量指标——缺陷,他们的类型和原因,因此,严重程度及其影响强度定义产品的质量。

    在开发过程中发现的缺陷的数量和数量的缺陷报告的客户产品安装后或交货问题,定义产品质量。

    Process Metrics - In various phases of SDLC, the methods and tools used, the company standards and the performance of development are software process metrics.

    Resource Metrics - Effort, time and various resources used, represents metrics for resource measurement.

Software Design Basics

软件设计是一个过程,将用户需求转化为一些合适的形式,帮助程序员在软件编码和实现。

为评估用户需求,创建一个SRS(软件需求规范)文档编码和实现,而需要更具体和详细的需求在软件方面。这个过程的输出可以直接使用编程语言实现。

软件设计是SDLC的第一步(软件设计生命周期),而浓度从问题域解决方案域。它试图指定如何满足需求中提到的SRS。

Software Design Levels

软件设计收益率三个级别的结果:

    Architectural Design - The architectural design is the highest abstract version of the system. It identifies the software as a system with many components interacting with each other. At this level, the designers get the idea of proposed solution domain.

    High-level Design- The high-level design breaks the ‘single entity-multiple component’ concept of architectural design into less-abstracted view of sub-systems and modules and depicts their interaction with each other. High-level design focuses on how the system along with all of its components can be implemented in forms of modules. It recognizes modular structure of each sub-system and their relation and interaction among each other.

    Detailed Design- Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs. It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules.

Modularization

模块化技术软件系统划分为多个离散的和独立的模块,预计能够独立执行任务(s)。这些模块可以作为整个软件的基本结构。设计师往往设计模块,这样他们可以独立和/或单独编译和执行。

模块化设计无意中遵循“分而治之”的规则解决问题的策略,这是因为有很多其他好处附加软件的模块化设计。

模块化的优势:

    Smaller components are easier to maintain

    Program can be spanided based on functional aspects

    Desired level of abstraction can be brought in the program

    Components with high cohesion can be re-used again

    Concurrent execution can be made possible

    Desired from security aspect

Concurrency

回到过去,所有的软件都要按顺序执行。顺序执行我们意味着编码指令将执行一个接一个地暗示只有一个部分程序被激活在任何给定的时间。说,一个软件有多个模块,那么唯一可以找到的所有模块的活跃在任何时间执行。

在软件设计中,实现并发执行通过把软件分解为多个独立单元,模块和并行执行它们。换句话说,并发性提供了软件功能并行执行多个代码的一部分。

程序员和设计师有必要认识到这些模块,它可以并行执行。

Example

字处理器中的拼写检查功能模块的软件,沿着方字处理器本身。

Couppng and Cohesion

模块化的软件程序时,它的任务是根据一些特点分为几个模块。正如我们所知,模块的指令集放在一起为了完成某些任务。不过,他们认为是单一的实体,但可能指彼此一起工作。有措施的质量模块的设计和他们的相互作用可以测量。这些措施被称为耦合和凝聚力。

Cohesion

凝聚力是衡量,它定义了intra-dependabipty的程度在一个模块的元素。更大的凝聚力,更好的是程序设计。

有七个类型的凝聚力,即-

    Co-incidental cohesion - It is unplanned and random cohesion, which might be the result of breaking the program into smaller modules for the sake of modularization. Because it is unplanned, it may serve confusion to the programmers and is generally not-accepted.

    Logical cohesion - When logically categorized elements are put together into a module, it is called logical cohesion.

    emporal Cohesion - When elements of module are organized such that they are processed at a similar point in time, it is called temporal cohesion.

    Procedural cohesion - When elements of module are grouped together, which are executed sequentially in order to perform a task, it is called procedural cohesion.

    Communicational cohesion - When elements of module are grouped together, which are executed sequentially and work on same data (information), it is called communicational cohesion.

    Sequential cohesion - When elements of module are grouped because the output of one element serves as input to another and so on, it is called sequential cohesion.

    Functional cohesion - It is considered to be the highest degree of cohesion, and it is highly expected. Elements of module in functional cohesion are grouped because they all contribute to a single well-defined function. It can also be reused.

Couppng

耦合定义的水平是衡量inter-dependabipty程序的模块之一。它告诉在何种水平的模块影响和相互作用。耦合越低越好。

有五个层次的耦合,即-

    Content couppng - When a module can directly access or modify or refer to the content of another module, it is called content level couppng.

    Common couppng- When multiple modules have read and write access to some global data, it is called common or global couppng.

    Control couppng- Two modules are called control-coupled if one of them decides the function of the other module or changes its flow of execution.

    Stamp couppng- When multiple modules share common data structure and work on different part of it, it is called stamp couppng.

    Data couppng- Data couppng is when two modules interact with each other by means of passing data (as parameter). If a module passes data structure as parameter, then the receiving module should use all its components.

在理想的情况下,没有耦合被认为是最好的。

Design Verification

软件设计流程设计文档的输出,伪代码,详细的逻辑图,流程图,详细描述所有的功能性或非功能性需求。

下一阶段,软件的实现,取决于上面提到的所有输出。

就变成了必要在继续之前验证输出到下一个阶段。早期检测到任何错误,或它可能不会发现,直到产品的测试。如果在正式设计阶段输出的符号形式,那么应该使用相关工具验证否则彻底设计评审可以用于验证和确认。

通过结构化的验证方法,评论者可以检测缺陷可能会忽视一些条件造成的。良好的设计审查很重要,良好的软件设计、精度和质量。

Software Analysis & Design Tools

软件分析和设计包括所有活动,帮助需求规范的转换实现。要求规范指定所有软件的功能性和非功能性的期望。这些需求规格形状的人类可读的和可以理解的文件,电脑无关。

软件分析和设计的中间阶段,这有助于人类可读的需求转化为实际的代码。

让我们看看一些分析和设计工具所使用的软件设计师:

Data Flow Diagram

数据流图是图形表示的数据流的信息系统。它能够描述输入数据流,输出数据流和存储数据。目前没有提及任何关于如何通过系统的数据流。

目前有一个著名的区别和流程图。程序模块的流程图描述了控制流。dfd各级系统中描述的数据流。中的元素不包含任何控制或分支。

Types of DFD

要么是逻辑或物理数据流图。

    Logical DFD - This type of DFD concentrates on the system process, and flow of data in the system.For example in a Banking software system, how data is moved between different entities.

    Physical DFD - This type of DFD shows how the data flow is actually implemented in the system. It is more specific and close to the implementation.

DFD Components

过程可以表示来源、目的地、存储和数据流,使用以下的组件

DFD Components

    Entities - Entities are source and destination of information data. Entities are represented by a rectangles with their respective names.

    Process - Activities and action taken on the data are represented by Circle or Round-edged rectangles.

    Data Storage - There are two variants of data storage - it can either be represented as a rectangle with absence of both smaller sides or as an open-sided rectangle with only one side missing.

    Data Flow - Movement of data is shown by pointed arrows. Data movement is shown from the base of arrow as its source towards head of the arrow as destination.

Levels of DFD

    Level 0 - Highest abstraction level DFD is known as Level 0 DFD, which depicts the entire information system as one diagram conceapng all the underlying details. Level 0 DFDs are also known as context level DFDs.

    Level 0

    Level 1 - The Level 0 DFD is broken down into more specific, Level 1 DFD. Level 1 DFD depicts basic modules in the system and flow of data among various modules. Level 1 DFD also mentions basic processes and sources of information.

    Level 1

    二级-在这个级别,目前显示在模块级别1中提到的数据流。

    更高层次dfd可以转化为更具体的低水平dfd更深层次的理解,除非所需的水平的规范。

Structure Charts

结构图表是一个图表来自数据流图。它代表了系统比目前更多的细节。它将整个系统分解成最低功能模块,描述了每个模块的功能和项子功能系统比目前更大的细节。

结构图表代表模块的层次结构。在每一层执行特定的任务。

这是用于建筑结构的图表——象征

    Module - It represents process or subroutine or task. A control module branches to more than one sub-module. Library Modules are re-usable and invokable from any module. SC Modules

    Condition - It is represented by small diamond at the base of module. It depicts that control module can select any of sub-routine based on some condition. SC Condition

    Jump - An arrow is shown pointing inside the module to depict that the control will jump in the middle of the sub-module. SC Module Jump

    Loop - A curved arrow represents loop in the module. All sub-modules covered by loop repeat execution of module. SC Loop

    Data flow - A directed arrow with empty circle at the end represents data flow. SC Dataflow

    Control flow - A directed arrow with filled circle at the end represents control flow. SC ControlFlow

HIPO Diagram

大有希望的人(分层输入过程输出)图是两个组织的组合方法来分析系统,并提供文档的方法。大有希望的人模型是由IBM在1970年。

HIPO图代表了软件系统模块的层次结构。分析师使用HIPO图来获得系统功能的高级视图。它可以将功能分解为项子功能分层的方式。它描述了函数执行的系统。

HIPO图对文档的目的。他们的图形表示使得设计者和管理者更容易获得图像的系统结构。

HIPO diagrams

与IPO(输入过程输出)图,描述了控制流和数据模块,大有希望的人并不提供任何数据流和控制流的信息。

IPO Chart

Example

两个部分的HIPO图,分层表示和IPO图用于结构设计软件以及文档相同的。

Structured Engpsh

大多数程序员都知道大型的软件,所以他们只依靠他们的经理告诉他们做什么。更高的软件管理的责任是为程序员开发提供准确的信息准确又快的代码。

其他形式的方法,使用图形或图表,可能有时是不同的人有不同的解释。

因此,分析师和设计师提出的软件工具,如结构化英语。它只是描述所需的代码和代码。结构化英语帮助程序员编写错误代码。

其他形式的方法,使用图形或图表,可能有时是不同的人有不同的解释。这里,结构化英语和伪代码试图减轻,理解的差距。

结构化英语是它使用纯英语单词在结构化的编程范式。它不是最终的代码而是一种描述所需的代码是什么以及如何代码。以下是一些结构化编程的令牌。

IF-THEN-ELSE,  
DO-WHILE-UNTIL

分析师使用相同的变量和数据名称、对象存储在数据字典中,使它更简单的编写和理解代码。

Example

我们采取同样的网上购物环境中客户身份验证的例子。这个过程来验证客户可以用结构化英语写为:

Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
   Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
   PRINT error message
   Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

编写的代码结构化英语更像日常英语口语。它不能直接实现代码的软件。结构化英语是独立于编程语言。

Pseudo-Code

伪代码是更接近编程语言写的。它可能被视为增强编程语言,完整的评论和描述。

伪代码避免变量声明但它们使用一些实际的编程语言编写的结构,像C, Fortran, Pascal等。

伪代码包含英语比结构化的编程细节。它提供了一个方法来执行任务,如果一台计算机执行的代码。

Example

程序打印斐波那契到n数字。

void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initiapze I to 0
for (i=0; i< n; i++)
{
   if a greater than b 
   {
      Increase b by a;
      Print b;
   } 
   else if b greater than a
   {
      increase a by b;
      print a;
   }
}

Decision Tables

一个决策表表示条件和相应的行动来解决这些问题,在一个结构化的表格格式。

这是一个强大的工具来调试,防止错误。它帮助组织类似的信息到一个表,然后通过结合决策表提供容易和方便。

Creating Decision Table

创建决策表,开发人员必须遵循基本的四个步骤:

    Identify all possible conditions to be addressed

    Determine actions for all identified conditions

    Create Maximum possible rules

    Define action for each rule

决策表应由最终用户,最近可以简化验证通过消除重复的规则和行动。

Example

让我们以一个简单的例子的日常问题与我们的网络连接。我们开始通过识别所有可能出现的问题,同时从互联网和各自的可能的解决方案。

列条件下我们列出所有可能出现的问题和未来的行动在列操作。

Conditions/Actions Rules
Conditions Shows Connected N N N N Y Y Y Y
Ping is Working N N Y Y N N Y Y
Opens Website Y N Y N Y N Y N
Actions Check network cable X
Check internet router X X X X
Restart Web Browser X
Contact Service provider X X X X X X
Do no action
Table : Decision Table – In-house Internet Troubleshooting

Entity-Relationship Model

实体关系模型是一种类型的数据库模型基于现实世界的概念实体和它们之间的关系。我们可以映射到真实世界场景的ER数据库模型。ER模型创建一组实体与属性,一组约束和它们之间的关系。

ER模型是最好的用于数据库的概念设计。ER模型可以表示如下:

ER Model

    实体- ER模型是现实世界中一个实体,称为属性的一些性质。每个属性被定义为其相应的值,称为域。

    例如,考虑一个学校数据库。在这里,一个学生是一个实体。学生有各种属性名称、id、年龄和阶级等。

    实体之间的关系——逻辑关联被称为关系。以各种方式与实体关系映射。映射的数量基数定义两个实体之间的联系。

    映射基数:

      one to one

      one to many

      many to one

      many to many

Data Dictionary

数据字典是集中收集的信息数据。它存储的意义和来源的数据,它与其他的关系数据,数据格式使用等数据字典有严格定义的名称,以方便用户和软件设计师。

数据字典经常被引用为元数据(关于数据的数据)存储库。它创建以及过程(数据流图)模型的软件程序,预计更新每当过程被更改或更新。

Requirement of Data Dictionary

引用的数据是通过数据字典,同时设计和实现软件。数据字典删除任何模棱两可的机会。它有助于保持工作的程序员和设计师同步程序中到处都在使用相同的对象引用。

数据字典的文档提供了一种完整的数据库系统在一个地方。验证过程是使用数据字典。

Contents

数据字典应该包含以下信息

    Data Flow

    Data Structure

    Data Elements

    Data Stores

    Data Processing

数据流描述通过dfd正如前面研究和所描述的代数形式表示。

= Composed of
{} Repetition
() Optional
+ And
[ / ] Or

Example

地址=房子没有+(街/区域)+城市+状态

课程ID =课程数量+课程名称+课程水平+课程成绩

Data Elements

数据元素包含名称和描述的数据和控制项目,内部或外部数据存储等以下细节:

    Primary Name

    Secondary Name (Apas)

    Use-case (How and where to use)

    Content Description (Notation etc. )

    Supplementary Information (preset values, constraints etc.)

Data Store

它存储的信息从数据进入系统和存在的系统。数据存储可能包括-

    Files

      Internal to software.

      External to software but on the same machine.

      External to software and system, located on different machine.

    Tables

      Naming convention

      Indexing property

Data Processing

有两种类型的数据处理:

    Logical: As user sees it

    Physical: As software sees it

Software Design Strategies

软件设计是一个过程将软件需求到软件实现。软件设计以用户需求为挑战,试图找到最佳解决方案。当软件被概念化,计划是用粉笔寻找最好的设计实现目的的解决方案。

有多个变种的软件设计。让我们学习他们简要:

Structured Design

结构设计是一个概念化的问题分成几个组织良好的解决方案的元素。它基本上是关心解决方案设计。结构化设计的好处是,它给更好的理解问题是如何被解决。结构化设计也使设计师更简单更准确地专注于这个问题。

结构设计主要是基于“分而治之”的策略,一个问题分解成几个小问题,每个小问题逐个解决,直到整个问题已经解决了。

问题解决的小块模块的解决方案。结构化设计强调这些模块很好地组织为了实现精确的解决方案。

这些模块被安排在层次结构。他们相互通信。一个好的结构化设计总是遵循一些规则对多个模块间的通信,即-

凝聚力——分组元素相关的所有功能。

耦合——不同模块之间的通信。

一个好的结构化设计有高内聚和低耦合的安排。

Function Oriented Design

在面向功能的设计,系统由许多较小的子系统的功能。这些函数是系统中执行重大任务的能力。系统被认为是顶视图的所有功能。

面向功能的设计继承了结构化设计的一些性质,分而治之的方法。

这个设计机制将整个系统划分为更小的功能,它提供了抽象的手段通过隐藏的信息和操作. .这些功能模块可以彼此分享信息通过全球信息的传递和使用信息。

函数的另一个特点是,当一个程序调用一个函数,该函数改变程序的状态,有时由其他模块是不可接受的。面向功能设计行之有效的系统状态无关紧要和程序/函数输入而不是一个状态。

Design Process

    The whole system is seen as how data flows in the system by means of data flow diagram.

    DFD depicts how functions changes data and state of entire system.

    The entire system is logically broken down into smaller units known as functions on the basis of their operation in the system.

    Each function is then described at large.

Object Oriented Design

面向对象设计的作品在实体及其特征,而不是参与软件系统的功能。这个设计策略侧重于实体和其特点。软件解决方案围绕着的整个概念实体。

让我们看看面向对象设计的重要概念:

    Objects - All entities involved in the solution design are known as objects. For example, person, banks, company and customers are treated as objects. Every entity has some attributes associated to it and has some methods to perform on the attributes.

    类,类是一个广义的描述一个对象。一个对象是一个类的实例。对象类定义的所有属性和方法,它定义了对象的功能。

    在解决方案设计,存储为属性变量和功能定义的方法或程序。

    Encapsulation - In OOD, the attributes (data variables) and methods (operation on the data) are bundled together is called encapsulation. Encapsulation not only bundles important information of an object together, but also restricts access of the data and methods from the outside world. This is called information hiding.

    Inheritance - OOD allows similar classes to stack up in hierarchical manner where the lower or sub-classes can import, implement and re-use allowed variables and methods from their immediate super classes. This property of OOD is known as inheritance. This makes it easier to define specific class and to create generapzed classes from specific ones.

    Polymorphism - OOD languages provide a mechanism where methods performing similar tasks but vary in arguments, can be assigned same name. This is called polymorphism, which allows a single interface performing tasks for different types. Depending upon how the function is invoked, respective portion of the code gets executed.

Design Process

软件设计过程可以视为一系列明确的步骤。虽然根据不同设计方法(面向功能或面向对象的,但它可能有以下步骤:

    A solution design is created from requirement or previous used system and/or system sequence diagram.

    Objects are identified and grouped into classes on behalf of similarity in attribute characteristics.

    Class hierarchy and relation among them is defined.

    Apppcation framework is defined.

Software Design Approaches

这里有两个通用的软件设计方法:

Top Down Design

我们知道,一个系统是由多个子系统组成的,它包含许多组件。进一步,这些子系统和组件可能有他们的子系统和组件和系统中创建层次结构。

自顶向下的设计将整个软件系统作为一个实体,然后分解来实现多个子系统或组件基于一些特征。每个子系统或组件然后视为一个系统,进一步分解。这个过程继续运行,直到系统在自顶向下的层次结构的最低水平。

自顶向下的设计始于的广义模型系统和继续定义具体的一部分。当所有的组件是由整个系统形成。

自顶向下的设计更适合当软件解决方案需要从头设计和具体细节是未知的。

Bottom-up Design

自底向上设计模型从最具体的和基本的组件。它收益与组合更高级别的组件通过使用基本组件或更低水平。它使创建更高级别的组件,直到系统所需的不是进化作为一个单一的组件。与每一个更高的水平,抽象的数量增加。

自底向上的策略更适合当一个系统需要创建一些现有的系统,可以使用基本的原语的新系统。

同时,分别自顶向下和自底向上的方法并不实用。相反,一个好两者的结合使用。

Software User Interface Design

用户界面是用户交互的前端应用程序视图来使用软件。用户可以操纵和控制软件以及硬件的用户界面。今天,用户界面是数字技术在几乎每一个地方存在,从电脑、手机、汽车、音乐播放器、飞机、轮船等。

用户界面是软件的一部分,设计了这样一种方式,它将向用户提供软件的洞察力。UI为人机交互提供了基础平台。

可以图形化的用户界面,基于文本的,基于视听传播的,这取决于底层硬件和软件的组合。用户界面可以是硬件或软件或两者的结合。

软件变得更加流行的如果它的用户界面:

    Attractive

    Simple to use

    Responsive in short time

    Clear to understand

    Consistent on all interfacing screens

UI大致分为两类:

    Command Line Interface

    Graphical User Interface

Command Line Interface (CLI)

CLI一直是一个很好的工具与计算机的互动,直到视频显示监控出现。CLI是许多技术用户和程序员的首选。CLI是最小接口软件可以提供给用户。

CLI提供了一个命令提示,用户输入命令的地方和订阅系统。用户需要记住命令的语法及其使用。CLI早些时候没有编程有效地处理用户错误。

一个命令是一种基于文本的引用的指令集,这预计将由系统执行。有方法,像宏脚本,方便用户操作。

CLI使用较少数量的计算机资源相比,GUI。

CLI Elements

Command Line Interface (CLI)

一种基于文本的命令行接口可以有以下元素:

    命令提示符——这是基于文本的通知,主要是显示了用户工作的上下文。它是由软件系统生成。

    光标——它是一个小横线或竖线的高度,来表示位置的字符而打字。光标是闪烁状态。移动用户写或删除。

    命令,命令是一个可执行的指令。它可能有一个或多个参数。输出命令执行内联显示在屏幕上。产生的输出时,命令提示符显示在下一行。

Graphical User Interface

图形用户界面提供了用户图形化方法与系统进行交互。硬件和软件的GUI可以组合。使用GUI,用户解释软件。

通常,GUI比CLI的资源消耗。推进技术,程序员和设计师创建复杂的GUI设计的工作效率,准确性和速度。

GUI Elements

GUI组件提供了一组与软件或硬件进行交互。

每一个图形组件提供了一种方法来处理系统。一个GUI系统元素,如:

Graphical User Interface

    窗口显示——在这一领域,应用程序的内容。内容在一个窗口可以显示图标或列表的形式,如果窗口代表文件结构。它是方便用户浏览文件系统中的一个探索的窗口。Windows可以最小化,大小或最大化屏幕的大小。它们可以在屏幕上移动。一个窗口可能包含同一应用程序的另一个窗口,称为子窗口。

    选项卡——如果一个应用程序允许执行的多个实例本身,他们作为单独的窗口显示在屏幕上。选项卡式文档界面出现在同一个窗口中打开多个文档。这个接口也有助于在面板查看应用程序。所有现代的网络浏览器使用此功能。

    菜单,菜单是一个数组的标准命令,组合在一起,放在明显的地方(通常)在应用程序窗口。菜单可以通过编程在鼠标点击显示或隐藏。

    图标,图标小图片代表一个关联的应用程序。当点击或双点击这些图标,打开应用程序窗口。图标显示系统上的应用程序和程序安装形式的小图片。

    光标——交互设备(如鼠标,触摸板、数码笔在GUI表示游标。在屏幕上光标从硬件几乎实时遵循指令。游标也叫指针在GUI系统。他们是用于选择菜单、窗口和其他应用程序的特性。

Apppcation specific GUI components

一个GUI应用程序的上市GUI元素包含一个或多个:

    应用程序窗口——大多数应用程序窗口使用操作系统提供的构造,但许多窗户使用自己的客户创建包含应用程序的内容。

    对话框——这是子窗口,其中包含用户信息,要求要采取一些行动。例如:应用程序生成一个对话得到用户确认删除一个文件。

    Dialogue Box

    文本框,为用户提供了一个区域类型和输入文本数据。

    按钮——他们模仿现实生活按钮,用于提交输入软件。

    Radio-button

    单选按钮:显示可用选项的选择。只有一个可以选择在所有。

    复选框,功能类似于列表框。当选择一个选项,这个盒子被标记为检查。可以选择多个选项由复选框。

    列表框,为选择提供了可用的项目列表。可以选择多个项目。

    List-box

其他令人印象深刻的GUI组件:

    Spders

    Combo-box

    Data-grid

    Drop-down pst

User Interface Design Activities

有许多的活动进行设计用户界面。GUI设计和实现是SDLC的过程。任何模型可以用于GUI实现瀑布、迭代或螺旋模型。

一个模型用于GUI设计和开发应满足这些GUI具体步骤。

GUI Process

    GUI需求收集,设计者可能喜欢的所有GUI的功能性和非功能性需求。这可以从用户和他们现有的软件解决方案。

    用户分析-设计师研究谁来使用软件的GUI。目标受众问题的设计细节变化根据用户的知识和能力水平。如果用户的技术悟性,先进和复杂的GUI可以合并。对于新手用户,包含在操作软件的更多信息。

    任务分析,设计者必须分析任务是做什么软件解决方案。在GUI,它将如何并不重要。任务可以代表以分层的方式把一个主要任务,进一步划分成更小的子任务。任务提供GUI显示的目标。流子任务间的信息决定了流GUI内容的软件。

    GUI设计与实现——设计师需求信息后,任务和用户环境,设计GUI和实现代码和嵌入GUI或虚拟软件在后台工作。然后由开发人员自测。

    测试——GUI测试可以以不同的方式完成。组织内部检查,直接参与的用户和发布测试版是其中的一些。测试可能包括可用性、兼容性、用户验收等。

GUI Implementation Tools

有几个工具使用的设计师可以创建整个鼠标单击GUI。一些工具可以嵌入到软件环境(IDE)。

GUI实现工具提供强大的GUI控件数组。软件定制,设计师可以改变相应的代码。

有不同部分的GUI工具根据其不同的使用平台。

Example

移动GUI,计算机图形用户界面,触摸屏GUI等等。这里有一些工具来方便构建GUI:

    FLUID

    AppInventor (Android)

    LucidChart

    Wavemaker

    Visual Studio

User Interface Golden rules

下面的规则被提到的GUI设计的黄金法则,被Shneiderman和Plaisant在他们的书中(设计用户界面)。

    争取一致性——一致的行动序列应该是需要在类似的情况下。应该使用相同的术语在提示,菜单,帮助屏幕。应使用一致的命令。

    让用户频繁使用捷径——用户的欲望减少交互的数量增加而使用的频率。缩写,功能键,隐藏的命令,和宏设施非常有助于专家用户。

    提供信息反馈——对于每一个运营商行动,应该有一些系统的反馈。为频繁的和次要的行为,响应必须适度,虽然罕见,主要操作,必须更实质性的响应。

    产量设计对话框关闭,操作序列应该组织成团体开始,中间和结束。信息反馈在完成一组操作给运营商满足成就感,一种如释重负的感觉,信号将应急计划和选择从他们的思想,这表明,未来的道路是明确的为下一组的行动做准备。

    提供简单的错误处理,尽可能设计系统的用户不会使一个严重的错误。如果一个错误是,系统应该能够探测到,并提供简单、易于理解的机制来处理错误。

    允许容易逆转的行动——该特性能缓解焦虑,因为用户可以不知道错误。容易逆转的行动鼓励探索陌生的选项。可逆性的单位可能是一个行动,一个数据条目,或一个完整的组操作。

    支持内部控制点——经验丰富的运营商的强烈愿望,他们负责的系统和系统响应他们的行为。设计系统让用户行动的发起者,而不是反应者。

    减少短期记忆负荷——人类信息处理的限制在短期记忆要求显示保持简单,多个页面显示被合并,window-motion频率降低,和足够的训练时间分配代码,助记符和操作序列。

Software Design Complexity

复杂性这个词代表的事件或事物,它有多个相互连接的链接和高度复杂的结构。在软件编程,软件的设计实现,和它们之间的联系逐渐出现的元素数量是巨大的,它变得太难以理解。

软件设计的复杂性很难评估不使用复杂性度量和措施。让我们看看三个重要软件复杂性度量。

Halstead s Complexity Measures

1977年,莫里斯先生引入霍华德Halstead指标来衡量软件的复杂性。Halstead指标取决于实际实现的程序和措施,这是直接从运营商和计算操作数从源代码,以静态的方式。它允许评估测试时间,词汇,大小、困难,错误,和努力C / c++ / Java源代码。

根据Halstead,“一个计算机程序的实现一个算法被认为是一组标记,可以分为运营商或操作数”。Halstead指标认为程序序列的运营商和它们相关的操作数。

他定义了各种指标检查模块的复杂性。

Parameter Meaning
n1 Number of unique operators
n2 Number of unique operands
N1 Number of total occurrence of operators
N2 Number of total occurrence of operands

当我们选择源文件以查看其复杂性细节指标查看器,度量报告中看到以下结果:

Metric Meaning Mathematical Representation
n Vocabulary n1 + n2
N Size N1 + N2
V Volume Length * Log2 Vocabulary
D Difficulty (n1/2) * (N1/n2)
E Efforts Difficulty * Volume
B Errors Volume / 3000
T Testing time Time = Efforts / S, where S=18 seconds.

Cyclomatic Complexity Measures

每个程序包含语句执行为了执行一些任务和其他决策决定的语句,语句需要被执行。这些决策结构改变程序的流。

如果我们比较两个相同大小的项目,一个与多个决策语句将更加复杂的控制程序经常跳。

麦凯布,1976年提出的圈复杂度量化测量给定的软件的复杂性。图形驱动的模型是基于决策结构的程序例如if - else,延伸,如此反复,直到,切换实例和goto语句。

过程,使流控制图:

    Break program in smaller blocks, depmited by decision-making constructs.

    Create nodes representing each of these nodes.

    Connect nodes as follows:

      如果控制可以从块分支我阻止j

      画一个弧

      从出口节点进入节点

      画一个弧.

圈复杂度计算程序的模块,我们使用的公式

V(G) = e – n + 2

Where
e is total number of edges
n is total number of nodes
Cyclomatic Complexity Measures

上述模块的圈复杂度

e = 10
n = 8
Cyclomatic Complexity = 10 - 8 + 2
                      = 4

根据p·约根森,圈复杂度的一个模块不应超过10。

Function Point

它被广泛用于测量软件的大小。功能点集中于系统提供的功能。特性和功能的系统被用来测量软件的复杂性。

功能点计数在五个参数,命名为外部输入、外部输出、逻辑的内部文件,外部接口文件,和外部调查。考虑软件每个参数的复杂性进一步分为简单、普通的或复杂的。

Function Point

让我们看看参数的功能点:

External Input

每一个独特的输入系统,从外面,被认为是外部输入。独特性的输入测量,因为没有两个输入应该具有相同的格式。这些输入可以是数据或控制参数。

    简单——如果输入计数低,影响更少的内部文件

    复杂——如果输入计数很高,影响更多的内部文件

    平均——之间的简单和复杂。

External Output

所有系统提供的输出类型都计算在这一类。输出被认为是独特的如果他们的输出格式和/或处理是独一无二的。

    简单的——如果输出数很低

    复杂,如果输出数高

    在简单和复杂之间平均-。

Logical Internal Files

每一个软件系统维护内部文件为了维持其功能信息和正常运行。这些文件系统的逻辑数据。这个逻辑数据可能包含功能性数据和控制数据。

    简单——如果数量的记录类型很低

    复杂——如果数量的记录类型是很高的

    在简单和复杂之间平均-。

External Interface Files

软件系统可能需要共享文件和一些外部软件或它可能需要将文件进行处理或作为参数传递给函数。所有这些文件都算作外部接口文件。

    简单——如果共享文件的记录类型数量很低

    复杂——如果共享文件的记录类型数量很高

    在简单和复杂之间平均-。

External Inquiry

输入和输出的调查是一个组合,用户发送询问一些数据作为输入和输出系统响应用户的调查处理。一个查询的复杂性超过外部输入、外部输出。查询是独特的,如果它的输入和输出是独特的格式和数据。

    简单——如果查询需要处理和低收益率少量的输出数据

    复杂的——如果查询需要高过程并产生大量的输出数据

    在简单和复杂之间平均-。

系统中的每一个参数给出weightage根据他们的阶级和复杂性。下面的表格提到weightage给每个参数:

Parameter Simple Average Complex
Inputs 3 4 6
Outputs 4 5 7
Enquiry 3 4 6
Files 7 10 15
Interfaces 5 7 10

上表收益率原始功能点。这些功能点是根据环境调整的复杂性。系统使用14个不同的特点:

    Data communications

    Distributed processing

    Performance objectives

    Operation configuration load

    Transaction rate

    Onpne data entry,

    End user efficiency

    Onpne update

    Complex processing logic

    Re-usabipty

    Installation ease

    Operational ease

    Multiple sites

    Desire to faciptate changes

这些特征因素然后额定从0到5,如下提到的:

    No influence

    Incidental

    Moderate

    Average

    Significant

    Essential

所有评级然后总结为N . N的值范围从0到70(14种特征x 5种评级)。它用于计算复杂性调整因素(CAF),使用下面的公式:

CAF = 0.65 + 0.01N

然后,

Depvered Function Points (FP)= CAF x Raw FP

这FP可以用于各种指标,如:

    成本= $ / FP

    质量=错误/ FP

    生产力= FP / person-month

Software Implementation

在这一章,我们将研究编程方法,在软件实现文档和挑战。

Structured Programming

在编码的过程中,代码行数相乘,因此,软件的规模增加。渐渐地,就几乎不可能记住项目的流动。如果一个人忘记如何软件和它的底层程序,文件,程序构造,就很难分享,调试和修改程序。这是结构化程序设计的解决方案。它鼓励开发者使用子程序和循环,而不是在代码中使用简单的跳跃,从而带来清晰的代码和改善其效率结构化程序设计还可以帮助程序员减少编码时间和正常组织代码。

结构化编程程序应当如何编码。结构化程序设计使用三个主要概念:

    自顶向下分析——一个软件总是执行一些合理的工作。这种理性的工作被称为问题在软件的说法。因此它是非常重要的,我们知道如何解决这个问题。自顶向下的分析下,这个问题被分解成小块,每一个都有一些意义。每个问题分别解决和步骤明确如何解决这个问题。

    模块化编程,而编程,代码被分解成更小的组的指令。这些团体被称为模块子程序或子程序。模块化编程基于自顶向下分析的理解。它阻碍了跳跃使用goto语句在程序中,这常常使non-traceable程序流。禁止跳跃和模块化的格式是鼓励在结构化程序设计。

    结构化编码,与自上而下的分析参考,进一步结构化编码模块细分成更小的单位代码的顺序执行。结构化程序设计使用控制结构、控制程序的流程,而结构化编码使用控制结构来组织可定义的指令模式。

Functional Programming

函数式编程风格的编程语言,它使用数学函数的概念。一个函数在数学应该产生相同的结果收到相同的论点。在程序语言中,程序的流程贯穿程序,即程序的控制转移到被调用过程。当控制流转移从一个过程到另一个,计划改变其状态。

过程式编程,程序可以产生不同的结果,当它被称为使用相同的参数,程序本身可以在不同的状态下,而叫它。这是一个过程性编程的财产以及缺点,序列或过程执行的时间就变得很重要。

函数式编程提供了手段,计算数学函数,产生结果无论程序状态。这使得它可以预测程序的行为。

函数式编程使用以下概念:

    头等舱和高阶函数,这些函数有能力接受另一个函数作为参数或者返回其他功能的结果。

    纯函数,这些函数不包括破坏性更新,也就是说,他们不会影响任何I / O或者内存,如果他们不是在使用,他们可以很容易地移除阻碍其他程序。

    递归——递归编程技术,是一个函数调用本身和重复的程序代码,除非一些预定义的匹配条件。递归函数式编程创建循环的方式。

    严格的评价——它是一种评估方法传递给一个函数作为参数的表达式。函数式编程有两种评价方法,严格的(渴望)或非严格(懒惰)。严格的评价总是评估表达式调用函数之前。的非严格评价并不对表达式求值,除非它是必要的。

    λ-calculus——大多数函数式编程语言使用λ-calculus类型系统。λ-expressions执行通过评估他们发生。

Common Lisp, Scala, Haskell, Erlang和f#是函数式编程语言的一些示例。

Programming style

编程风格设置的编码规则之后,所有的程序员编写代码。当多个程序员工作在相同的软件项目中,他们经常需要使用程序代码由其他开发人员写的。这有时变得乏味或不可能的,如果所有的开发人员不遵循一些标准的编程风格代码程序。

一个适当的编程风格包括使用相关函数和变量名目的任务,使用良好的压痕,注释的代码为方便读者和整体演示代码。这使得程序代码可读和理解,进而使调试和错误解决更容易。同时,适当的编码风格有助于减轻文档和升级。

Coding Guidepnes

编码风格随组织的实践、操作系统和语言的编码本身。

下面的编码元素可以定义编码规则下的一个组织:

    命名约定,本节定义了如何命名函数、变量、常量和全局变量。

    缩进空间——这是在一行的开始,通常是2 - 8空格或单一选项卡。

    空白——这通常是省略的。

    运营商——定义的规则写数学作业和逻辑运算符。例如,赋值运算符“=”应该有空间之前和之后,在“x = 2”。

    控制结构的规则编写if - then - else, case-switch,直至和控制流语句仅以嵌套的方式。

    线长度和包装——定义了多少字符应该在一行,是一条线是80个字符长。包装的定义应该如何包装线,如果太长了。

    功能——这个定义应该如何声明和调用函数,有或没有参数。

    不同数据类型的变量——这提到变量声明和定义。

    评论——这是其中一个重要的编码组件,作为评论包含在代码描述的代码确实和所有其他相关的描述。这一节还帮助创建帮助其他开发人员文档。

Software Documentation

软件文档是软件过程的一个重要组成部分。良好的书面文件提供了一个很好的工具和手段了解软件过程所必需的信息资源库。软件文档还提供了如何使用产品的信息。

良好的文档应该包括下列文件:

    需求文档,这个文档是软件设计师的重要工具,开发人员和测试团队执行各自的任务。这个文件包含所有的功能性、非功能性目的和行为的描述软件。

    之前源的文档可以存储数据的软件,软件已经运行在客户端,客户的访谈,问卷调查和研究。通常是存储在电子表格或字处理文档的形式与高端软件管理团队。

    这个文档是基础软件的开发,主要用于验证和确认阶段。最直接从需求文档构建测试用例。

    软件设计文档,这些文档包含所有必要的信息,哪些是需要构建软件。高级软件架构,它包含:(a) (b)软件设计细节,(c)数据流图,(d)数据库设计

    这些文件工作作为实现软件开发人员存储库。虽然这些文件不提供任何细节如何代码程序,他们给所需的所有必要的信息编码和实现。

    技术文档,这些文档是由开发人员和维护真正的程序员。这些文件,作为一个整体,代表信息的代码。在编写代码时,程序员也提到的目标代码,谁写的,哪里是必需的,它和它是如何,什么其他资源代码使用等。

    技术文档增加了各种编程人员相同的代码之间的相互了解。它能增强代码的重用能力。它会使调试变得更容易,并可追踪的。

    有各种各样的自动化工具和一些编程语言本身。例如java JavaDoc工具来生成技术文档的代码。

    用户文档,这个文档是不同于上述解释道。之前的所有文档维护提供信息软件及其开发过程。但用户文档解释了软件产品应该如何工作和如何它应该被用来达到所期望的结果。

    这些文件可能包括,软件安装程序、操作指南、用户指南、卸载方法和特殊引用许可升级等来获得更多信息。

Software Implementation Challenges

有一些开发团队所面临的挑战,实现软件。他们中的一些人提到如下:

    代码重用——今天的语言是非常复杂的编程接口,具备巨大的库函数。不过,使最终产品的成本降低,组织管理更愿意重用代码,这是之前创建的其他软件。有巨大的程序员为了兼容性检查和所面临的问题决定多少代码重用。

    新软件版本管理——每次发给客户,开发人员必须维护版本和配置相关的文档。这个文档需要高度精确的和可用的。

    目标主机的软件程序,开发组织中,需要为客户端主机设计的。但有时,它是不可能设计一个软件在目标机器上工作。

Software Testing Overview

软件测试是软件对需求的评估来自用户和系统规范。测试是在软件开发生命周期的阶段水平或在程序代码模块级。软件测试包括确认和验证。

Software Vapdation

验证是检查过程是否满足用户需求的软件。它是在SDLC的结束。如果软件匹配要求它,这是验证。

    Vapdation ensures the product under development is as per the user requirements.

    Vapdation answers the question – "Are we developing the product which attempts all that user needs from this software ?".

    Vapdation emphasizes on user requirements.

Software Verification

验证是一个过程,确认软件是否满足业务需求,开发和坚持正确的规范和方法。

    Verification ensures the product being developed is according to design specifications.

    Verification answers the question– "Are we developing this product by firmly following all design specifications ?"

    Verifications concentrates on the design and system specifications.

测试的目标是- - -

    错误——这些都是由开发人员实际编码错误。此外,还有不同软件的输出和期望输出值,被认为是一个错误。

    错误——错误存在故障发生时。错,也称为一个错误,是一个错误的结果可以导致系统失败。

    失败——据说是系统的能力来执行所需的任务。故障发生在系统中存在故障。

Manual Vs Automated Testing

测试可以是手工完成的,或者使用一个自动化测试工具:

    手动执行这个测试没有利用自动化测试工具的帮助。软件测试人员编写测试用例的不同部分和级别的代码,执行测试和结果报告给经理。

    手动测试时间和资源消耗。测试人员需要确认是否使用正确的测试用例。测试包括手动测试的主要部分。

    这个测试是一种测试过程自动完成自动化测试工具的援助。手工测试的限制使用自动化测试工具是可以克服的。

一个测试需要检查是否一个网页可以打开在Internet Explorer。这可以很容易地完成了手动测试。但检查服务器是否可以装载100万用户,是相当不可能的手动测试。

有软件和硬件工具帮助测试人员进行负载测试、压力测试、回归测试。

Testing Approaches

测试可以基于两种方法进行

    Functionapty testing

    Implementation testing

功能测试时没有采取实际实现的关注被称为黑盒测试。另一边被称为白盒测试,测试,但它不仅功能实现也进行了分析。

详尽的测试best-desired方法为一个完美的测试。每一个可能值的范围内测试的输入和输出值。不可能测试每一个值在真实世界场景中如果值的范围很大。

Black-box testing

进行测试程序的功能。它也被称为“行为”测试。测试人员在这种情况下,有一组输入值和各自想要的结果。提供输入,如果输出匹配与期望的结果,程序测试“ok”,否则有问题。

Black-box Testing

在这种测试方法中,代码的设计和结构是测试人员不知道,和测试工程师和最终用户进行这个测试软件。

黑盒测试技术:

    等价类,输入分为相似的类。如果一个元素类的通过了测试,假设所有的类都是过去了。

    边界值,输入分为高和低端值。如果这些值通过测试,它假定所有值之间也可能通过。

    因果绘图——在之前的方法,只有一个输入值测试。原因(输入)——结果(输出)是一个测试技术,输入值的组合是一种系统化的方式测试的。

    双向测试——软件的行为取决于多个参数。在成对测试中,多个参数进行测试的成对的不同的值。

    基于状态的测试——对提供输入系统变化的状态。这些系统都是基于它们的状态和输入测试。

White-box testing

进行测试程序及其实现,为了提高代码效率或结构。它也被称为“结构”测试。

White-box testing

在这种测试方法中,代码的设计和结构测试人员。程序员的代码进行这个测试代码。

以下是一些白盒测试技术:

    控制流测试——控制流测试的目的建立测试用例涵盖所有的语句和分支条件。分支条件测试的真与假,这所有的语句都可以覆盖。

    数据流测试,这种测试技术重点覆盖所有数据变量包含在程序。它测试变量被声明和定义,在那里,他们使用或改变。

Testing Levels

测试本身可以定义各级SDLC。测试过程并行软件开发。跳到下一个阶段,前一个阶段是测试,验证和验证。

分别测试是为了确保没有隐藏的缺陷或问题的软件。软件测试在不同的水平

Unit Testing

编码时,程序员对单位执行一些测试项目,知道这是没有误差的。测试在执行白盒测试方法。单元测试能够帮助开发人员决定个体单位的项目正在按照要求,无错。

Integration Testing

即使软件的单位是单独工作正常,需要找出如果单位综合在一起也没有错误。例如,参数传递和数据升级等。

System Testing

编译的软件产品,然后是作为一个整体进行测试。这可以通过使用一个或多个下列测试:

    功能测试——测试软件的所有功能需求。

    性能测试,这个测试证明了软件的效率。它测试的有效性和平均时间软件完成所需的任务。性能测试是通过负载测试和压力测试的软件是把高用户和数据加载在不同环境条件下。

    安全与可移植性——这些测试完成时,软件是为了在各种工作平台和访问人员的数量。

Acceptance Testing

当软件准备移交给客户,必须经历最后阶段的测试,测试用户交互和响应。这是很重要的,因为即使软件匹配所有用户需求,如果用户不喜欢看起来或的工作方式,它可能被拒绝。

    α测试——开发人员自己的团队执行α测试通过使用系统如果是用于工作环境。他们试图找出用户对一些行动在软件和系统应该如何应对输入。

    内部测试,软件测试后,交给用户使用它只在生产环境中进行测试的目的。这不是尚未交付的产品。开发人员希望用户在此阶段将分钟问题,跳过参加。

Regression Testing

无论何时更新为新的代码,软件产品特性或功能,它是彻底地进行了测试来检测是否有添加代码的任何负面影响。这就是所谓的回归测试。

Testing Documentation

在不同阶段,测试文档准备

Before Testing

测试从测试用例开始。还需要以下文件,供参考

    SRS文档,功能需求文档

    测试策略文档——这描述如何测试应该发生在发布产品之前。

    测试策略测试团队的文档——这提到的细节方面,职责矩阵和权利/测试经理和测试工程师的责任。

    跟踪矩阵文档——这是SDLC文档,这是相关的需求收集过程。随着新的要求,他们被添加到这个矩阵。这些矩阵可以帮助测试人员知道需求的来源。它们可以追踪向前和向后。

While Being Tested

下列文件可能需要测试时启动和完成:

    测试用例文档,该文档包含列表的测试要求进行。它包括单元测试计划,集成测试计划、系统测试计划和验收测试计划。

    测试描述文档——这是所有测试用例的详细描述和程序来执行它们。

    测试用例报告——这文档包含测试用例的测试报告。

    测试日志,这个文件包含了每个测试用例测试日志报告。

After Testing

下列文件后可以生成测试:

    测试总结——这个测试总结是集体所有测试报告和日志分析。总结,得出的结论是如果软件准备发射。下发布的软件版本控制系统如果是准备发射。

Testing vs. Quapty Control, Quapty Assurance and Audit

我们需要理解软件测试与软件质量保证不同,软件质量控制和审计。

    软件质量保证——这些都是软件开发过程的监控手段,保证所有的措施按照的标准组织。这种监控是为了确保适当的软件开发方法。

    软件质量控制——这是一个系统维护软件产品的质量。它可能包括软件产品的功能性和非功能性方面,加强组织的亲善。这个系统确保客户收到产品需求和产品质量认证为“适合使用”。

    软件审计——这是一个复习的过程所使用的组织开发软件。审计,独立于开发团队检查软件过程,过程中,需求和SDLC的其他方面。软件审计的目的是检查软件及其开发过程,符合标准,规则和条例。

Software Maintenance Overview

软件维护是SDLC现在被广泛接受的一部分。它代表所有的修改和升级完成后交付的软件产品。有许多原因,为什么需要修改,其中的一些简要提到了以下:

    市场环境政策,改变时间,如税收和新引入的约束,如何保持簿记,可能会触发需要修改。

    客户需求——时间,客户可能会问新特性或功能的软件。

    主机修改——如果任何硬件和/或平台(如操作系统)的目标主机的变化,软件需要保持适应性变化。

    组织变化——如果有任何业务水平变化在客户端,如减少组织力量,收购另一家公司,组织开拓新业务,需要修改原软件可能出现。

Types of maintenance

在软件生命周期中,输入维护根据其性质可能不同。这可能只是一次例行维护任务作为一些错误发现的用户或者它可能是一个大事件本身基于维护大小和性质。以下是一些类型的维护根据他们的特点:

    维修保养——这包括修改和升级为了正确或解决问题,被用户发现或结论的用户错误报告。

    适应性维护——这包括修改和升级应用,以保证软件产品质量和调整不断变化的技术和商业环境。

    完成的维护——这包括修改和更新做为了保持软件使用很长一段时间。它包括新特性,新用户要求改进软件和提高其可靠性和性能。

    预防性维护——这包括修改和升级,以防止未来问题的软件。它的目标是参加的问题,此刻不显著但将来可能会导致严重的问题。

Cost of Maintenance

报告显示,维护成本高。在估算软件维护的一项研究发现,维护成本的高达67%的整个软件过程周期的成本。

Maintenance Cost Chart

平均来说,软件维护的成本超过50%的SDLC阶段。有各种因素,触发维护成本高,如:

Real-world factors affecting Maintenance Cost

    The standard age of any software is considered up to 10 to 15 years.

    Older softwares, which were meant to work on slow machines with less memory and storage capacity cannot keep themselves challenging against newly coming enhanced softwares on modern hardware.

    As technology advances, it becomes costly to maintain old software.

    Most maintenance engineers are newbie and use trial and error method to rectify problem.

    Often, changes made can easily hurt the original structure of the software, making it hard for any subsequent changes.

    Changes are often left undocumented which may cause more confpcts in future.

Software-end factors affecting Maintenance Cost

    Structure of Software Program

    Programming Language

    Dependence on external environment

    Staff repabipty and availabipty

Maintenance Activities

IEEE为顺序维护过程活动提供了一个框架。它可以用于迭代的方式,可以得到扩展,可以包含定制的产品和流程。

Maintenance Activities

这些活动伴随以下阶段:

    识别和跟踪——它涉及活动有关的识别要求修改或维修。它是由用户或系统可能通过日志或报告错误消息。在这里,也维护类型分类。

    分析——分析了改性等影响系统安全的影响。如果可能影响严重,寻找替代解决方案。然后被物化成一组必需的修改需求规格。修改/维护的成本进行了分析和评估。

    设计——新模块,需要更换或修改,设计对需求规格设置在前一个阶段。测试用例是为确认和验证。

    实现新的模块编码结构化设计的帮助下创建的设计步骤。预计每个程序员并行做单元测试。

    系统测试,集成测试完成在新创建的模块。集成测试也在进行新模块和系统之间的关系。最后测试系统作为一个整体,回归测试程序。

    验收测试后,测试系统在内部,它是用户的帮助下进行验收测试。如果在这种状态下,用户抱怨一些问题他们解决或指出解决在下个迭代。

    交付,验收测试后,系统部署在组织通过小更新包或新系统的安装。最后测试后发生在客户端软件交付。

    如果需要提供训练设施,除了用户手册的复印件。

    维护管理——配置管理系统维护的重要组成部分。它与版本控制工具辅助控制版本,semi-version或补丁管理。

Software Re-engineering

当我们需要更新软件保持当前的市场,而不影响其功能,它被称为软件再造。这是一个彻底的过程,软件的设计改变,程序重写。

遗留软件不能保持与最新的技术优化能在市场上找到。随着硬件变得过时,更新软件就头疼。即使软件老随着时间的推移,它的功能没有。

例如,Unix最初是在汇编语言开发的。C语言形成时,Unix再造在C语言中,因为在汇编语言是困难的。

除此之外,有时软件程序员注意到一些地区比其他人需要更多的维护,他们也需要重新设计。

Process of Re-Engineering

Re-Engineering Process

    Decide what to re-engineer. Is it whole software or a part of it?

    Perform Reverse Engineering, in order to obtain specifications of existing software.

    Restructure Program if required. For example, changing function-oriented programs into object-oriented programs.

    Re-structure data as required.

    Apply Forward engineering concepts in order to get re-engineered software.

有一些重要的术语用于软件再造

Reverse Engineering

它是一个过程来实现系统规范通过彻底的分析,了解现有的系统。这个过程可以被视为反向SDLC模型,即我们试图获得更高抽象层次通过分析低抽象级别。

现有系统之前设计实现,我们一无所知。设计师做逆向工程通过查看代码并试图让设计。与设计,他们试图总结规范。因此,要反过来从代码系统规范。

Reverse Engineering

Program Restructuring

听是一个过程,重构现有的软件。是重新排列的源代码,在相同的编程语言或从一个编程语言不同。重组可以源code-restructuring和data-restructuring或两者兼而有之。

重组不会影响软件的功能,但提高可靠性和可维护性。程序组件,导致错误经常可以改变或更新和重组。

软件的可靠性通过重组可以删除过时的硬件平台。

Forward Engineering

正向工程是一个过程,获取所需的软件规范的手,通过逆向工程。它假设有一些软件工程已经过去。

正向工程是软件工程过程一样只有一个区别——它总是后进行逆向工程。

Forward Engineering

Component reusabipty

一个组件是一个软件程序代码的一部分,执行一个独立任务的系统。它可以是一个小的模块或子系统本身。

Example

登录过程可以视为组件,在网络上使用打印系统软件可以看作是软件的一个组成部分。

组件功能的高内聚和低耦合,即他们独立工作,可以不依赖于其他模块执行任务。

在OOP中,设计的对象是非常特定于他们关心和有更少的机会中使用其他软件。

模块化编程的模块编码执行特定的任务,可以使用在许多其他软件程序。

有一个全新的垂直,这是基于软件组件的重用,被称为基于组件的软件工程(CBSE)。

Components

各级可以重用

    应用程序级别——整个应用程序使用新软件的子系统。

    应用程序的组件级别——子系统使用。

    重用模块层次,功能模块。

    软件组件提供的接口,可以用于建立不同组件之间的沟通。

Reuse Process

可以采用两种方法:通过保持相同的需求和调整组件或保持相同组件和修改需求。

Reuse Process

    要求规范指定的功能性和非功能性需求,软件产品必须遵守,与现有系统的帮助下,用户输入或两者兼而有之。

    设计——这也是一个标准的SDLC过程步骤,需求定义的软件的说法。系统作为一个整体的基本架构及其创建子系统。

    指定组件,通过研究软件设计,设计整个系统分离成更小的组件或子系统。一个完整的软件设计变成一个巨大的集合套组件一起工作。

    搜索合适的组件,软件组件库被设计师称为搜索匹配组件,功能和目的的基础上,软件需求. .

    将组件——所有匹配组件包装在一起塑造完整的软件。

Software Case Tools Overview

CASE stands for Computer Aided Software Engineering. It means, development and maintenance of software projects with help of various automated software tools.

CASE Tools

CASE工具设置的软件应用程序,用于自动化SDLC的活动。使用CASE工具软件项目经理、分析师和工程师来开发软件系统。

有数量的CASE工具可用来简化软件开发生命周期的不同阶段等分析工具,设计工具、项目管理工具、数据库管理工具、文档工具等等。

使用CASE工具加快了开发项目产生预期的结果,并帮助发现缺陷之前推进下一阶段在软件开发中。

Components of CASE Tools

CASE工具可以大致分成以下部分根据他们的使用在一个特定的SDLC阶段:

    中央存储库- CASE工具需要一个中央存储库,可以作为一种常见的、集成的和一致的信息。中央存储库是一个中心位置存储,产品规格、需求文档、相关的报告和图表,其他有用的信息管理是存储。中央存储库也作为数据字典。

    Case Tools

    大写的工具——大写工具用于计划、分析和设计的SDLC阶段。

    小写工具-小写工具用于实现、测试和维护。

    集成的Case工具——集成Case工具有助于SDLC的所有阶段,从需求收集、测试和文档。

CASE工具可以组合在一起,如果他们有类似的功能,与其他工具集成的流程活动和能力。

Scope of Case Tools

整个SDLC CASE工具的范围。

Case Tools Types

现在我们简要经历各种各样的CASE工具

Diagram tools

这些工具用于表示系统组件、数据和控制流中各种软件组件和系统结构以图形化的形式。例如,流程图制造商工具用于创建先进的流程图。

Process Modepng Tools

流程建模方法创建软件过程模型,用于开发软件。流程建模工具帮助经理们选择一个过程模型或修改它根据软件产品的要求。例如,EPF Composer

Project Management Tools

这些工具用于项目计划,成本和精力估计,项目安排和资源规划。管理人员必须严格遵守项目执行每一步提到的软件项目管理。项目管理工具帮助实时存储和共享项目信息在整个组织。例如,创意专业办公室,Trac项目,Basecamp。

Documentation Tools

文档在软件项目中软件过程前,开始SDLC的所有阶段和项目完成后。

文档工具生成文档的技术用户和最终用户。技术用户大多是内部开发团队的专业人士是指系统手册,参考手册、培训手册、安装手册等。最终用户文档描述系统的功能和操作,如用户手册。例如,Doxygen, RoboHelp编写了大量DrExplain, Adobe文档。

Analysis Tools

这些工具帮助收集需求,自动检查任何不一致、不准确的图,数据冗余或错误遗漏。例如,接受360年,Accompa CaseComplete需求分析,可见总分析师分析。

Design Tools

这些工具帮助软件设计师的块结构设计软件,这可能进一步被分解在较小的模块使用优化技术。这些工具提供了详细的每个模块和模块之间互连。例如,动画软件设计

Configuration Management Tools

下一个版本发布的软件的一个实例。配置管理工具处理

    Version and revision management

    Basepne configuration management

    Change control management

CASE工具帮助自动跟踪,版本管理和发布管理。例如,化石,Git,所以他们的牧师。

Change Control Tools

这些工具被认为是作为一个配置管理工具的一部分。他们办理更改软件基线后是固定的或者当软件是第一次发布。CASE工具自动化变更跟踪、文件管理、代码管理等等。它还有助于在执行组织的改变政策。

Programming Tools

这些工具包括编程环境像IDE(集成开发环境),内置模块库和仿真工具。这些工具提供全面帮助构建软件产品,包括特性模拟和测试。例如,Cscope搜索代码在C语言中,Ecppse。

Prototyping Tools

软件模拟原型版本的软件产品。原型提供了最初的外观和感觉的产品和实际产品的模拟几个方面。

原型工具本质上带有图形库。他们可以创建硬件独立用户界面和设计。这些工具帮助我们构建快速原型基于现有信息。此外,他们提供的模拟软件原型。例如,塞雷娜原型作曲家,模型构建器。

Web Development Tools

这些工具协助网页设计等所有盟军元素形式,文本、脚本、图形等等。网络工具也提供实时预览的开发,它将如何完成。例如,Fontello, Adobe边检查,基础3,括号。

Quapty Assurance Tools

质量保证在一个软件组织监控采用的工程过程和方法开发的软件产品,以确保一致性质量按组织标准。QA工具包括配置和变更控制工具和软件测试工具。例如,SoapTest AppsWatch JMeter。

Maintenance Tools

软件维护包括修改后的软件产品交付。自动日志和错误报告技术,自动生成错误的机票和根本原因分析几个CASE工具,帮助软件组织在SDLC的维护阶段。例如,Bugzilla缺陷跟踪,惠普质量中心。

Advertisements