Software Engineering Tutorial
S / W -考试问题与答案
S / W工程资源
S/W 工程资源
S/W Engineering Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
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、while-until和for控制流语句的规则,仅限于嵌套形式。
行长和换行 - 定义一行应有多少个字符,通常为80个字符。换行定义了如果太长,应如何换行。
功能——这个定义应该如何声明和调用函数,有或没有参数。
变量 - 这涉及如何声明和定义不同数据类型的变量。
评论 - 这是编码组件中的重要组成部分之一,因为代码中包含的注释描述了代码实际执行的操作以及所有其他相关说明。此部分还有助于为其他开发人员创建帮助文档。
Software Documentation
软件文档是软件过程的重要组成部分。一份写得好的文档提供了一个重要的工具和信息库,必需了解软件过程。软件文档还提供关于如何使用产品的信息。
一份维护良好的文件应包括以下文档:
需求文档 - 这个文档是软件设计师、开发人员和测试团队进行各自任务的关键工具。该文档包含预期软件的所有功能、非功能和行为描述。
此文件的来源可以是有关软件的预先存储数据,客户端已经运行的软件,客户端的访谈,问卷调查和研究。通常以电子表格或文档的形式存储在高端软件管理团队中。
这份文档是软件开发的基础,并主要用于验证和验证阶段。大多数测试用例直接从需求文档中建立。
文档 - 这些文档包含构建软件所需的所有必要信息。 它包含:(a)高级软件架构,(b)软件设计详细信息,(c)数据流程图,(d)数据库设计。
这些文件是开发者实施软件的存储库。虽然这些文件不提供编写程序的具体细节,但它们提供了编码和实施所需的所有必要信息。
技术文档 - 这些文档由开发人员和实际编码人员维护。这些文档整体上代表了关于代码的信息。在编写代码时,程序员还会提到代码的目标、编写者、在哪里需要它、它的作用和运行方式、代码使用的其他资源等。
技术文档增加了不同程序员之间在同一代码上工作的理解。它增强了代码的可重用性。它使调试变得容易且可跟踪。
有各种自动化工具可用,有些自带编程语言。例如,Java自带JavaDoc工具,可生成代码的技术文档。
用户文档 - 这份文档与上述所有文档不同。所有先前的文档都是为了提供有关软件及其开发过程的信息而维护的。但是用户文档解释了软件产品应该如何工作以及如何使用它来获得所需的结果。
这些文档可能包括软件安装程序、使用指南、用户指南、卸载方法以及获取更多信息的特殊参考,如许可证更新等。
Software Implementation Challenges
在软件实现过程中,开发团队遇到了一些挑战。以下是其中的一些。
代码重用 - 当今语言的编程接口非常复杂,并配备大量的库函数。尽管如此,为了降低最终产品的成本,组织管理层更喜欢重复使用先前为某些其他软件创建的代码。程序员面临巨大的兼容性检查问题,并决定要重复使用多少代码。
版本管理 - 每次向客户发行新软件时,开发人员必须维护与版本和配置相关的文档。这些文档需要高度准确且及时可用。
目标主机 - 组织正在开发的软件程序需要为客户端的主机进行设计。但有时,设计能够在目标机器上运行的软件是不可能的。