胰腺钙化灶是什么意思| 手脱皮什么原因| 肛裂是什么原因引起的| 一什么眉毛填量词| 牛肉用什么调料| 胆囊结石会引起身体什么症状| 晚上一直做梦是什么原因引起的| 骨强度不足是什么原因| 阴虚火旺是什么意思| 初级中学是什么意思| 乳房突然疼痛什么原因| 马超属什么生肖| 艾滋病是一种什么病| 什么水用不完| 地中海贫血是什么| 猥琐男是什么意思| 红豆吃多了有什么坏处| 中国梦是什么| 脾囊肿是什么病严重吗| 健康管理是什么| 上曼月乐环后要注意什么| 品学兼优是什么意思| 什么是无纺布| 全麻后为什么不能睡觉| 脂肪液化是什么意思| 豆腐鱼是什么鱼| 蛇什么时候蜕皮| 头疼挂什么科| 年轻人为什么会低血压| 富不过三代是什么意思| 十五的月亮十六圆是什么意思| 一路向北是什么意思| 云指什么生肖| 阿托伐他汀治什么病| 烟酰胺是什么东西| 胆汁酸高是什么原因| 思想包袱是什么意思| 7.7是什么星座| 温煦是什么意思| 腿酸胀是什么原因| 梦见别人死了是什么预兆| 抗风疹病毒抗体igg高是什么意思| 李耳为什么叫老子| 黔驴技穷什么意思| 尿液发绿是什么原因| 什么叫高脂血症| 少一个睾丸有什么影响| 大鱼际发青是什么原因| 子是什么生肖| 足跟痛是什么原因| 嘴角烂是什么原因| 早上起来嘴苦口臭是什么原因| national是什么牌子| 什么时候跑步最好| mcm牌子属于什么档次| 螃蟹跟什么不能一起吃| 梦见和老公结婚是什么意思| 目赤什么意思| 什么一笑| jo是什么意思| 黑木耳是什么意思| 部长什么级别| 211是什么| 为什么支气管炎咳嗽长期不好| 马拉松起源与什么有关| 糜烂性脚气用什么药| 买什么保险最实用| 626是什么日子| 讨喜是什么意思| 豆腐和什么不能一起吃| 中水是什么意思| 肝气郁结是什么意思| 什么样的女人最吸引男人的心| 喻字五行属什么| 副团级是什么军衔| 老是发烧是什么原因| 媚眼如丝是什么意思| 么么哒是什么意思| 有什么花| 入职是什么意思| 百衲衣是什么意思| 吃丝瓜有什么功效和作用| 流清水鼻涕吃什么药| 茉莉花茶适合什么人喝| 梦女是什么意思| 少阳病是什么意思| 牙龈肿痛吃什么药效果好| 1951属什么生肖| 荡气回肠是什么意思| 氧分压低是什么原因| 介入科主要看什么病| 咽喉发炎吃什么药| 天天吃玉米有什么好处和坏处| 为什么正骨后几天越来越疼| 装垃圾的工具叫什么| 空鼻症是什么| 洋红色是什么颜色| 脚扭了挂什么科| 高血压一般在什么年龄| bp是什么意思医学上面| 喝益生菌有什么好处| 嘈杂的意思是什么| 胰腺炎是什么病严重吗| 周杰伦得了什么病| 色字头上一把刀什么意思| 一天老是放屁是什么原因| 山峦是什么意思| 子宫癌是什么症状| 黄精和什么煲汤好| 什么动物没有骨头| 谷维素片治什么病| 旅游穿什么鞋最舒服| 龟奴是什么| 力不从心是什么意思| 豫州是现在的什么地方| 黑裙子配什么鞋子| 陪伴是最长情的告白下一句是什么| 性格是什么意思| 沙漠玫瑰什么时候开花| 为什么月经不来| 碳酸盐质玉是什么玉| 老流鼻血是什么原因| 二级烫伤是什么程度| 高危儿是什么意思| 吃什么败火| 白细胞是什么| 九月十三号是什么星座| 农历六月十四是什么星座| 甲状腺疾病有什么症状| 饮食清淡的标准是什么| 梦见吃雪糕是什么意思| 孕期吃什么水果好| 赤藓糖醇是什么| 经常拉肚子吃什么药| 什么样的山峰| 种生基是什么意思| 水清则无鱼什么意思| 小肝功能是检查什么| 手足口病吃什么食物| 缺铁性贫血吃什么好| 死党什么意思| 陆陆续续是什么意思| 血虚风燥是什么意思| 舌苔黄腻是什么原因| 我会送你红色玫瑰是什么歌| 耳石症眩晕吃什么药| 4个月念什么字| 黑绿色大便是什么原因| 卫生纸属于什么垃圾| 总出虚汗什么原因怎么解决| rap是什么意思| 晚上八点是什么时辰| 为什么脸上会长痘痘| 包饺子用什么肉| 为什么会得糖尿病| 南瓜与什么食物相克| 糖醋排骨是什么菜系| 甩货是什么意思| 食色性也是什么意思| 肝不好挂什么科室| 烟雾病是什么原因引起的| 什么是跨性别者| 双向情感障碍是什么意思| 逼是什么| 加盟店是什么意思| 朋友搬家送什么礼物好| 乳腺是什么| 吐信子是什么意思啊| 绝经前有什么症状| 什么杯子喝水最健康| 青黄不接是什么意思| 大便白色是什么原因| 橘白猫是什么品种| 什么是接触性出血| 闭经吃什么药| 贴脸是什么意思| 眼睛流泪用什么眼药水| 九月十三是什么星座| ft什么意思| cocoon是什么品牌| 阳寿是什么意思| 唐僧真名叫什么| 你为什么不快乐| 石家庄以前叫什么名字| 梦见给别人剪头发是什么意思| lhc是什么意思| 2012年什么年| 什么叫甲亢| 肾水不足是什么意思| 牛肉跟什么炒好吃| 梦遗是什么| 1984年是什么年| cip是什么| 泌尿科挂什么科| 什么是九宫格| jeep是什么意思| 八十岁是什么寿| 吠陀是什么意思| 细菌性阴道炎用什么药效果好| 送伞代表什么意思| f00d中文是什么意思| 什么是优质蛋白| 左侧卵巢无回声是什么意思| 7月13日是什么日子| 唯小人与女子难养也什么意思| 孩子发烧挂什么科| 炖牛肉不能放什么调料| 专科考研需要什么条件| 胃食管反流吃什么中成药最好| 屈髋是什么姿势| 宫颈异常是什么意思| 冰箱什么品牌最好| 什么的葡萄| 自己做生意叫什么职业| 温州什么最出名| male是什么意思| 苏州机场叫什么名字| 睾丸炎吃什么药最有效| 玉仁玫白膏有什么功效| 部分是什么意思| 癃闭是什么意思| 什么紫什么红| 什么日什么里| 弥可保是什么药| 柳下惠姓什么| 烧酒是什么酒| 为什么小便是红色的尿| 勾魂是什么意思| led是什么意思| 行李箱什么材质的好| 心梗用什么药最好| ciel是什么意思| 日昳是什么意思| 低钾是什么原因造成的| 尿胆原阴性是什么意思| 为什么月经期有性冲动| 膀胱壁毛糙是什么意思| 脱肛是什么| 牙痛用什么药止痛快| 羊水污染是什么原因造成的| 职业病是什么意思| 酸菜鱼用什么鱼| 喝酒前喝什么不容易醉又不伤胃| 为什么吃饱了就犯困| 口契是什么字| 附骨疽在现代叫什么病| 艾司唑仑片是什么药| 脑彩超能检查出什么| 什么地制宜| 阴虚内热吃什么药好| 掉头发是什么原因男性| 左边头疼是什么原因| 甲状腺功能亢进是什么意思| 喜欢花的女人是什么性格| 肝炎五项检查是什么| 改姓需要什么手续| 陌上花开可缓缓归矣什么意思| 身上皮肤痒是什么原因| 自杀吃什么药| 什么是肝掌| 仁字五行属什么| 尿液带血什么原因| 血糖高会有什么症状| 夏威夷果吃了有什么好处| 百度Jump to content

海警三支队打私战果丰 去年查处走贩私案件23起

From Wikipedia, the free encyclopedia
(Redirected from Software specification)
百度 现在书多了读者少了,这是一个很悲哀的事。

In computer science, formal specifications are mathematically based techniques whose purpose is to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by verifying key properties of interest through rigorous and effective reasoning tools.[1][2] These specifications are formal in the sense that they have a syntax, their semantics fall within one domain, and they are able to be used to infer useful information.[3]

Motivation

[edit]

In each passing decade, computer systems have become increasingly more powerful and, as a result, they have become more impactful to society. Because of this, better techniques are needed to assist in the design and implementation of reliable software. Established engineering disciplines use mathematical analysis as the foundation of creating and validating product design. Formal specifications are one such way to achieve this in software engineering reliability as once predicted. Other methods such as testing are more commonly used to enhance code quality.[1]

Uses

[edit]

Given such a specification, it is possible to use formal verification techniques to demonstrate that a system design is correct with respect to its specification. This allows incorrect system designs to be revised before any major investments have been made into an actual implementation. Another approach is to use provably correct refinement steps to transform a specification into a design, which is ultimately transformed into an implementation that is correct by construction.

A formal specification is not an implementation, but rather it may be used to develop an implementation. Formal specifications describe what a system should do, not how the system should do it.

A good specification must have some of the following attributes: adequate, internally consistent, unambiguous, complete, satisfied, minimal.[3]

A good specification will have:[3]

  • Constructability, manageability and evolvability
  • Usability
  • Communicability
  • Powerful and efficient analysis

One of the main reasons there is interest in formal specifications is that they will provide an ability to perform proofs on software implementations.[2] These proofs may be used to validate a specification, verify correctness of design, or to prove that a program satisfies a specification.[2]

Limitations

[edit]

A design (or implementation) cannot ever be declared “correct” on its own. It can only ever be “correct with respect to a given specification”. Whether the formal specification correctly describes the problem to be solved is a separate issue. It is also a difficult issue to address since it ultimately concerns the problem constructing abstracted formal representations of an informal concrete problem domain, and such an abstraction step is not amenable to formal proof. However, it is possible to validate a specification by proving “challenge” theorems concerning properties that the specification is expected to exhibit. If correct, these theorems reinforce the specifier's understanding of the specification and its relationship with the underlying problem domain. If not, the specification probably needs to be changed to better reflect the domain understanding of those involved with producing (and implementing) the specification.

Formal methods of software development are not widely used in industry. Most companies do not consider it cost-effective to apply them in their software development processes.[4] This may be for a variety of reasons, some of which are:

  • Time
    • High initial start-up cost with low measurable returns
  • Flexibility
    • A lot of software companies use agile methodologies that focus on flexibility. Doing a formal specification of the whole system up front is often perceived as being the opposite of flexible. However, there is some research into the benefits of using formal specifications with "agile" development[5]
  • Complexity
    • They require a high level of mathematical expertise and the analytical skills to understand and apply them effectively[5]
    • A solution to this would be to develop tools and models that allow for these techniques to be implemented but hide the underlying mathematics[2][5]
  • Limited scope[3]
    • They do not capture properties of interest for all stakeholders in the project[3]
    • They do not do a good job of specifying user interfaces and user interaction[4]
  • Not cost-effective
    • This is not entirely true; by limiting their use to only core parts of critical systems they have shown to be cost-effective[4]

Other limitations:[3]

Paradigms

[edit]

Formal specification techniques have existed in various domains and on various scales for quite some time.[6] Implementations of formal specifications will differ depending on what kind of system they are attempting to model, how they are applied and at what point in the software life cycle they have been introduced.[2] These types of models can be categorized into the following specification paradigms:

  • History-based specification[3]
    • behavior based on system histories
    • assertions are interpreted over time
  • State-based specification[3]
    • behavior based on system states
    • series of sequential steps, (e.g. a financial transaction)
    • languages such as Z, VDM or B rely on this paradigm[3]
  • Transition-based specification[3]
    • behavior based on transitions from state-to-state of the system
    • best used with a reactive system
    • languages such as Statecharts, PROMELA, STeP-SPL, RSML or SCR rely on this paradigm[3]
  • Functional specification[3]
    • specify a system as a structure of mathematical functions
    • OBJ, ASL, PLUSS, LARCH, HOL or PVS rely on this paradigm[3]
  • Operational Specification[3]
    • early languages such as Paisley, GIST, Petri nets or process algebras rely on this paradigm[3]
  • Multi-paradigm languages
    • FizzBee is a multi-paradigm specification language that allows for transition/action based specification, behavioral specifications with non-atomic transitions and also has actor model.

In addition to the above paradigms, there are ways to apply certain heuristics to help improve the creation of these specifications. The paper referenced here best discusses heuristics to use when designing a specification.[6] They do so by applying a divide-and-conquer approach.

Software tools

[edit]

The Z notation is an example of a leading formal specification language. Others include the Specification Language (VDM-SL) of the Vienna Development Method and the Abstract Machine Notation (AMN) of the B-Method. In the Web services area, formal specification is often used to describe non-functional properties[7] (Web services quality of service).

Some tools are:[4]

References

[edit]
  1. ^ a b Hierons, R. M.; Bogdanov, K.; Bowen, J. P.; Cleaveland, R.; Derrick, J.; Dick, J.; Gheorghe, M.; Harman, M.; Kapoor, K.; Krause, P.; Lüttgen, G.; Simons, A. J. H.; Vilkomir, S. A.; Woodward, M. R.; Zedan, H. (2009). "Using formal specifications to support testing". ACM Computing Surveys. 41 (2): 1. CiteSeerX 10.1.1.144.3320. doi:10.1145/1459352.1459354. S2CID 10686134.
  2. ^ a b c d e Gaudel, M.-C. (1994). "Formal specification techniques". Proceedings of 16th International Conference on Software Engineering. pp. 223–227. doi:10.1109/ICSE.1994.296781. ISBN 978-0-8186-5855-6. S2CID 60740848.
  3. ^ a b c d e f g h i j k l m n o Lamsweerde, A. V. (2000). "Formal specification". Proceedings of the conference on the future of Software engineering - ICSE '00. pp. 147–159. doi:10.1145/336512.336546. ISBN 978-1581132533. S2CID 4657483.
  4. ^ a b c d Sommerville, Ian (2009). "Formal Specification" (PDF). Software Engineering. Retrieved 3 February 2013.
  5. ^ a b c Nummenmaa, Timo; Tiensuu, Aleksi; Berki, Eleni; Mikkonen, Tommi; Kuittinen, Jussi; Kultima, Annakaisa (4 August 2011). "Supporting agile development by facilitating natural user interaction with executable formal specifications". ACM SIGSOFT Software Engineering Notes. 36 (4): 1–10. doi:10.1145/1988997.2003643. S2CID 2139235.
  6. ^ a b van der Poll, John A.; Paula Kotze (2002). "What design heuristics may enhance the utility of a formal specification?". Proceedings of the 2002 Annual Research Conference of the South African Institute of Computer Scientists and Information Technologists on Enablement Through Technology. SAICSIT '02: 179–194. ISBN 9781581135961.
  7. ^ S-Cube Knowledge Model: Formal Specification
[edit]
什么人不适合做厨师 碧根果和核桃有什么区别 淋巴结是什么病严重吗 白细胞低吃什么食物好 探囊取物是什么意思
丙辰是什么时辰 支教回来后有什么待遇 桑树枝煮水有什么功效 喝椰子水有什么好处 百废待兴是什么意思
满满的回忆什么意思 锁骨窝疼可能是什么病 螨虫长什么样子图片 什么的跑步 减肥期间吃什么水果好
开车什么意思 验孕棒一深一浅是什么意思 肿瘤是什么 呕吐出血是什么原因 低脂高钙牛奶适合什么人群
心律不齐什么症状hcv9jop2ns6r.cn mb是什么意思hcv8jop1ns6r.cn 后会无期什么意思hcv8jop0ns5r.cn 晏殊字什么helloaicloud.com 蹼是什么意思hcv9jop7ns4r.cn
dia是什么意思hcv9jop5ns1r.cn 什么是心脏早搏gangsutong.com 心什么胆什么yanzhenzixun.com 芒果像什么比喻句hcv9jop4ns0r.cn 什么鞋穿着舒服hcv7jop9ns1r.cn
什么而不舍hcv8jop3ns9r.cn 脾虚吃什么好hcv9jop1ns8r.cn 关节痛去医院挂什么科hcv7jop6ns1r.cn aids是什么意思mmeoe.com 复方药是什么意思xinmaowt.com
牵引是什么意思hcv8jop0ns3r.cn 阴虚火旺吃什么hcv9jop6ns0r.cn 12月21是什么星座hcv9jop6ns1r.cn 什么的感受weuuu.com 掌勺是什么意思hcv7jop4ns5r.cn
百度