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 Maintenance Overview
软件维护是SDLC现在被广泛接受的一部分。它代表所有的修改和升级完成后交付的软件产品。有许多原因,为什么需要修改,其中的一些简要提到了以下:
市场环境政策,改变时间,如税收和新引入的约束,如何保持簿记,可能会触发需要修改。
客户需求——时间,客户可能会问新特性或功能的软件。
主机修改——如果任何硬件和/或平台(如操作系统)的目标主机的变化,软件需要保持适应性变化。
组织变化——如果有任何业务水平变化在客户端,如减少组织力量,收购另一家公司,组织开拓新业务,需要修改原软件可能出现。
Types of maintenance
在软件生命周期中,输入维护根据其性质可能不同。这可能只是一次例行维护任务作为一些错误发现的用户或者它可能是一个大事件本身基于维护大小和性质。以下是一些类型的维护根据他们的特点:
维修保养——这包括修改和升级为了正确或解决问题,被用户发现或结论的用户错误报告。
适应性维护——这包括修改和升级应用,以保证软件产品质量和调整不断变化的技术和商业环境。
完成的维护——这包括修改和更新做为了保持软件使用很长一段时间。它包括新特性,新用户要求改进软件和提高其可靠性和性能。
预防性维护——这包括修改和升级,以防止未来问题的软件。它的目标是参加的问题,此刻不显著但将来可能会导致严重的问题。
Cost of Maintenance
报告显示,维护成本高。在估算软件维护的一项研究发现,维护成本的高达67%的整个软件过程周期的成本。
平均来说,软件维护的成本超过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为顺序维护过程活动提供了一个框架。它可以用于迭代的方式,可以得到扩展,可以包含定制的产品和流程。
这些活动伴随以下阶段:
识别和跟踪——它涉及活动有关的识别要求修改或维修。它是由用户或系统可能通过日志或报告错误消息。在这里,也维护类型分类。
分析——分析了改性等影响系统安全的影响。如果可能影响严重,寻找替代解决方案。然后被物化成一组必需的修改需求规格。修改/维护的成本进行了分析和评估。
设计——新模块,需要更换或修改,设计对需求规格设置在前一个阶段。测试用例是为确认和验证。
实现新的模块编码结构化设计的帮助下创建的设计步骤。预计每个程序员并行做单元测试。
系统测试,集成测试完成在新创建的模块。集成测试也在进行新模块和系统之间的关系。最后测试系统作为一个整体,回归测试程序。
验收测试后,测试系统在内部,它是用户的帮助下进行验收测试。如果在这种状态下,用户抱怨一些问题他们解决或指出解决在下个迭代。
交付,验收测试后,系统部署在组织通过小更新包或新系统的安装。最后测试后发生在客户端软件交付。
如果需要提供训练设施,除了用户手册的复印件。
维护管理——配置管理系统维护的重要组成部分。它与版本控制工具辅助控制版本,semi-version或补丁管理。
Software Re-engineering
当我们需要更新软件保持当前的市场,而不影响其功能,它被称为软件再造。这是一个彻底的过程,软件的设计改变,程序重写。
遗留软件不能保持与最新的技术优化能在市场上找到。随着硬件变得过时,更新软件就头疼。即使软件老随着时间的推移,它的功能没有。
例如,Unix最初是在汇编语言开发的。C语言形成时,Unix再造在C语言中,因为在汇编语言是困难的。
除此之外,有时软件程序员注意到一些地区比其他人需要更多的维护,他们也需要重新设计。
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模型,即我们试图获得更高抽象层次通过分析低抽象级别。
现有系统之前设计实现,我们一无所知。设计师做逆向工程通过查看代码并试图让设计。与设计,他们试图总结规范。因此,要反过来从代码系统规范。
Program Restructuring
听是一个过程,重构现有的软件。是重新排列的源代码,在相同的编程语言或从一个编程语言不同。重组可以源code-restructuring和data-restructuring或两者兼而有之。
重组不会影响软件的功能,但提高可靠性和可维护性。程序组件,导致错误经常可以改变或更新和重组。
软件的可靠性通过重组可以删除过时的硬件平台。
Forward Engineering
正向工程是一个过程,获取所需的软件规范的手,通过逆向工程。它假设有一些软件工程已经过去。
正向工程是软件工程过程一样只有一个区别——它总是后进行逆向工程。
Component reusabipty
一个组件是一个软件程序代码的一部分,执行一个独立任务的系统。它可以是一个小的模块或子系统本身。
Example
登录过程可以视为组件,在网络上使用打印系统软件可以看作是软件的一个组成部分。
组件功能的高内聚和低耦合,即他们独立工作,可以不依赖于其他模块执行任务。
在OOP中,设计的对象是非常特定于他们关心和有更少的机会中使用其他软件。
模块化编程的模块编码执行特定的任务,可以使用在许多其他软件程序。
有一个全新的垂直,这是基于软件组件的重用,被称为基于组件的软件工程(CBSE)。
各级可以重用
应用程序级别——整个应用程序使用新软件的子系统。
应用程序的组件级别——子系统使用。
重用模块层次,功能模块。
软件组件提供的接口,可以用于建立不同组件之间的沟通。
Reuse Process
可以采用两种方法:通过保持相同的需求和调整组件或保持相同组件和修改需求。
要求规范指定的功能性和非功能性需求,软件产品必须遵守,与现有系统的帮助下,用户输入或两者兼而有之。
设计——这也是一个标准的SDLC过程步骤,需求定义的软件的说法。系统作为一个整体的基本架构及其创建子系统。
指定组件,通过研究软件设计,设计整个系统分离成更小的组件或子系统。一个完整的软件设计变成一个巨大的集合套组件一起工作。
搜索合适的组件,软件组件库被设计师称为搜索匹配组件,功能和目的的基础上,软件需求. .
将组件——所有匹配组件包装在一起塑造完整的软件。