Introduction
Traditionally, thinking and research in software
development has focused on solutions: on programs
and on various abstractions that may be useful in
designing and writing program texts. We have paid
little or no attention to the problems that those
programs are intended to solve. Even methods and
approaches that claim the title of problem analysis
usually prove, on closer inspection, to deal entirely
with putative or outline solutions; the problem to be
solved must be inferred from its solution.
This solution-oriented approach may work well in a
field where the problems are all well known and have
been thoroughly described, classified and investigated
where innovation lies only in devising new
solutions to old problems. But software development
is not such a field. The versatility of computers and
their rapid pace of evolution present us with a
constantly changing repertoire of problems to whose
solution software may be central. As a result, our
field is underdeveloped in crucial respects. In
particular, the repeated calls for professionalisation
and for the establishment of a corpus of core software
engineering knowledge are symptoms of a broad
failure to identify what practising software developers
should know if they are to be fit to tackle the
problems of the many different application areas.
In this talk I want to sketch an approach to problem
analysis and structuring that I believe avoids
the magnetic attraction of solution-orientation. The
approach is based on the idea of a problem frame.
Problem frames characterise classes of problems that
commonly occur as subproblems of larger, realistic,
problems. The intention is to analyse realistic
problems by decomposing them into constituent
subproblems that correspond to known problem
frames. This analysis guides the decomposition, gives
warning of the concerns and difficulties that are likely
to arise, and provides a context in which previously
captured experience can be effectively exploited.
2. The World, Phenomena and
Domains
Some problems are abstract in a mathematical sense,
and do not partake of the physical nature of the
world. Factorising large integers, finding cut sets of
graphs and playing chess are examples of such
problems. But most problems are located in the
physical world. Such problems include controlling
lifts, switching telephone calls, controlling the brakes
of a car, bank accounting, managing theatre seat
reservations, controlling a VCR and administering a
library. In all these cases the effectiveness of a
solution is to be evaluated in the physical world
outside the computer. The problem is located in the
world; the computer, executing our program text, is
the solution.
Phenomena
Because problems are located in the world, problem
analysis must be concerned with the world and its
phenomena. We need a phenomenology that has
nothing to do with programming languages or object
interaction, but everything to do with the physical
world. An appropriate phenomenology includes:−
• entities, which are mutable individuals such as
cars and people;
• events, recognised as individuals;
• values, which are immutable individuals such as
integers and strings;
• states, which are time-changing relations over
non-event individuals;
• truths, which are unchanging relations over nonevent
individuals; and
• roles, which are the participation of individuals
in events.
Among these it is useful to recognise the class of
controllable phenomena events, state changes and
roles that occur on the initiative of one part of the
world rather than another. For example, a keystroke is
an event in which the user and the keyboard both
participate, but it is controlled by the user. It is also
useful to treat roles as distinct phenomena. In the
keystroke the user controls both the event and the role
that is the participation of a particular key; but in a
disk read operation the reader controls the event
while the disk controls the paricipation of the
particular record that is returned.
บทนำ
ตามเนื้อผ้าคิดและการวิจัยในซอฟแวร์
การพัฒนามีความสำคัญกับการแก้ปัญหา: เกี่ยวกับโปรแกรม
และแนวคิดต่าง ๆ ที่อาจจะมีประโยชน์ใน
การออกแบบและการเขียนตำราโปรแกรม เราได้จ่ายเงิน
ให้ความสนใจเพียงเล็กน้อยหรือไม่มีปัญหาว่าผู้ที่
โปรแกรมมีความตั้งใจที่จะแก้ปัญหา วิธีการได้และ
วิธีการที่อ้างว่าชื่อของการวิเคราะห์ปัญหา ?? ??
มักจะพิสูจน์ในการตรวจสอบใกล้ชิดและการจัดการอย่างสิ้นเชิง
กับการแก้ปัญหาสมมุติหรือเค้าร่าง; ปัญหาจะได้รับการ
แก้ไขจะต้องมีการสรุปจากการแก้ปัญหาของตน.
นี้วิธีการแก้ปัญหาที่มุ่งเน้นอาจทำงานได้ดีใน
เขตที่ปัญหาทั้งหมดที่รู้จักกันดีและได้
รับการอธิบายอย่างละเอียดและตรวจสอบการจัด
นวัตกรรมที่อยู่เฉพาะในการณ์ใหม่
การแก้ปัญหาเก่า ปัญหา แต่การพัฒนาซอฟต์แวร์
ไม่ได้เช่นข้อมูล ความเก่งกาจของคอมพิวเตอร์และ
ก้าวอย่างรวดเร็วของการวิวัฒนาการปัจจุบันเรามี
บุคลิกที่เปลี่ยนแปลงตลอดเวลาของปัญหาที่จะต้องมี
ซอฟแวร์แก้ปัญหาอาจเป็นศูนย์กลาง เป็นผลให้เรา
ฟิลด์ด้อยพัฒนาในประการสำคัญ ใน
โดยเฉพาะอย่างยิ่งการโทรซ้ำสำหรับ professionalisation
และการจัดตั้งคลังข้อมูลของซอฟต์แวร์หลัก
ความรู้ด้านวิศวกรรมอาการของกว้าง
ล้มเหลวในการระบุสิ่งที่ฝึกซ้อมนักพัฒนาซอฟต์แวร์
ควรจะรู้ว่าถ้าพวกเขาจะได้รับการติดเพื่อรับมือกับ
ปัญหาที่เกิดขึ้นของการใช้งานที่แตกต่างกัน .
ในการพูดคุยนี้ผมต้องการที่จะวาดแนวทางในการแก้ไขปัญหา
และการวิเคราะห์โครงสร้างที่ผมเชื่อว่าหลีกเลี่ยง
แม่เหล็กดึงดูดของการแก้ปัญหาปฐมนิเทศ
วิธีการที่จะขึ้นอยู่กับความคิดของกรอบปัญหา.
เฟรมปัญหาลักษณะชั้นเรียนของปัญหาที่
มักเกิดขึ้นเป็นปัญหาย่อยของขนาดใหญ่, มีเหตุผล,
ปัญหา ความตั้งใจคือการวิเคราะห์มีเหตุผล
ปัญหาโดยการย่อยสลายพวกเขาเข้าไปในร่างรัฐธรรมนูญ
ปัญหาย่อยที่สอดคล้องกับปัญหาที่รู้จักกันใน
เฟรม การวิเคราะห์นี้จะแนะนำการสลายตัวให้
คำเตือนของความกังวลและความยากลำบากที่มีแนวโน้มที่
จะเกิดขึ้นและให้บริบทในการที่ก่อนหน้านี้
ประสบการณ์จับสามารถใช้ประโยชน์ได้อย่างมีประสิทธิภาพ.
2 โลกปรากฏการณ์และ
โดเมน
ปัญหาบางอย่างเป็นนามธรรมในความหมายทางคณิตศาสตร์
และไม่ได้มีส่วนร่วมที่มีลักษณะทางกายภาพของ
โลก การแยกตัวประกอบจำนวนเต็มขนาดใหญ่, การหาชุดตัดของ
กราฟและเล่นหมากรุกเป็นตัวอย่างเช่น
ปัญหา แต่ปัญหาส่วนใหญ่จะอยู่ใน
โลกทางกายภาพ ปัญหาดังกล่าวรวมถึงการควบคุม
ลิฟท์, เปลี่ยนสายโทรศัพท์, การควบคุมการเบรก
ของรถ, บัญชีธนาคาร, การจัดการที่นั่งโรงละคร
จองควบคุม VCR และการบริหารจัดการ
ห้องสมุด ในทุกกรณีเหล่านี้ประสิทธิภาพของการ
แก้ปัญหาคือการได้รับการประเมินในโลกทางกายภาพ
ภายนอกคอมพิวเตอร์ ปัญหาจะอยู่ใน
โลก; คอมพิวเตอร์รันข้อความโปรแกรมของเราเป็น
วิธีการแก้ปัญหา.
ปรากฏการณ์
เพราะปัญหาที่เกิดขึ้นจะอยู่ในโลกที่มีปัญหา
การวิเคราะห์จะต้องเกี่ยวข้องกับโลกและของ
ปรากฏการณ์ เราจำเป็นต้องมีปรากฏการณ์ที่มี
อะไรจะทำอย่างไรกับการเขียนโปรแกรมภาษาหรือวัตถุ
ปฏิสัมพันธ์ แต่ทุกอย่างจะทำอย่างไรกับทางกายภาพ
ของโลก ปรากฏการณ์ที่เหมาะสมรวมถึง: -
•หน่วยงานซึ่งเป็นบุคคลที่ไม่แน่นอนเช่น
รถยนต์และผู้คน;
•เหตุการณ์ที่ได้รับการยอมรับเป็นบุคคล;
•ค่าซึ่งเป็นบุคคลที่ไม่เปลี่ยนรูปเช่น
จำนวนเต็มและสตริง;
•รัฐที่มีความสัมพันธ์กับเวลาที่เปลี่ยนแปลงในช่วง
ไม่ บุคคล -event;
•ความจริงซึ่งเป็นความสัมพันธ์ที่ไม่มีการเปลี่ยนแปลงมากกว่า nonevent
บุคคล; และ
•บทบาทที่มีส่วนร่วมของประชาชน
ในเหตุการณ์ที่เกิดขึ้น.
กลุ่มคนเหล่านี้จะเป็นประโยชน์ในการรับรู้ในชั้นเรียนของ
ปรากฏการณ์ควบคุมเหตุการณ์การเปลี่ยนแปลงสถานะและ
บทบาทที่เกิดขึ้นบนความคิดริเริ่มของส่วนหนึ่งของ
โลกมากกว่าที่อื่น ยกตัวอย่างเช่นการกดแป้นพิมพ์เป็น
เหตุการณ์ที่ผู้ใช้และแป้นพิมพ์ทั้งสอง
มีส่วนร่วม แต่มันจะถูกควบคุมโดยผู้ใช้ นอกจากนี้ยัง
มีประโยชน์ในการรักษาบทบาทเป็นปรากฏการณ์ที่แตกต่างกัน ใน
การกดแป้นพิมพ์ควบคุมผู้ใช้ทั้งสองเหตุการณ์และบทบาท
ที่มีส่วนร่วมของสำคัญโดยเฉพาะอย่างยิ่ง; แต่ใน
การดำเนินการอ่านดิสก์อ่านควบคุมเหตุการณ์ที่เกิดขึ้น
ในขณะที่ดิสก์ควบคุม paricipation ของ
บันทึกโดยเฉพาะอย่างยิ่งที่ถูกส่งกลับ
การแปล กรุณารอสักครู่..

บทนำ
ผ้า คิดและวิจัยในการพัฒนาซอฟต์แวร์
ได้เน้นโซลูชั่นบนโปรแกรม
และนามธรรมต่าง ๆ ที่อาจเป็นประโยชน์ในการออกแบบและเขียนข้อความ
โปรแกรม เราได้จ่ายเงิน
น้อยหรือไม่มีความสนใจกับปัญหาที่โปรแกรมเหล่านั้น
มีวัตถุประสงค์เพื่อแก้ปัญหา แม้วิธีการและแนวทางที่เรียกร้องชื่อของ
" การวิเคราะห์ปัญหาก็มักจะ พิสูจน์เมื่อตรวจสอบใกล้ชิด เพื่อจัดการกับการแสดงออกทั้งหมด
หรือร่างแก้ไข ปัญหาจะแก้ได้ ต้องได้จากโซลูชั่น
.
วิธีนี้มุ่งเน้นวิธีการอาจทำงานได้ดีในด้านปัญหาอยู่ที่ไหน
ทุกคนรู้จักกันดี และมีการอธิบายอย่างละเอียด จำแนกและตรวจสอบ
ที่นวัตกรรมอยู่ในการทำเท่านั้น ใหม่
แก้ปัญหาเก่า แต่การพัฒนาซอฟต์แวร์
ไม่ได้เป็นเช่นสนาม ความเก่งกาจของคอมพิวเตอร์และการก้าวอย่างรวดเร็วของวิวัฒนาการปัจจุบัน
เรากับการเปลี่ยนแปลงอยู่ตลอดเวลา ละครของปัญหาที่มี
ซอฟต์แวร์โซลูชั่นอาจกลาง เป็นผลให้สาขาของเรา
เป็นด้อยพัฒนาในประการสำคัญ ใน
เฉพาะ ซ้ำเรียกดึงสะ
และสถานประกอบการของคลังข้อมูลของ
ซอฟต์แวร์หลักความรู้ทางวิศวกรรม คืออาการของความล้มเหลวกว้าง
ระบุสิ่งที่ฝึกนักพัฒนาซอฟต์แวร์
ควรรู้ว่าถ้าพวกเขาจะพอดีกับที่จะแก้ไขปัญหาต่าง ๆ มากมาย
ใช้พื้นที่ ในการสนทนานี้ผมต้องการร่างแนวทางการวิเคราะห์ปัญหา และการจัดโครงสร้างที่ผมเชื่อ
หลีกเลี่ยงการดึงดูดของการปฐมนิเทศโซลูชั่น
วิธีการจะขึ้นอยู่กับความคิดของปัญหาเฟรม เฟรมปัญหาการเรียนของนักศึกษา
ปัญหาที่มักเกิดขึ้นเป็น subproblems ของขนาดใหญ่ , มีเหตุผล ,
ปัญหา ความตั้งใจที่จะวิเคราะห์ปัญหามีเหตุผล
subproblems โดยของพวกเขาเป็นองค์ประกอบที่สอดคล้องกับที่รู้จักปัญหาเฟรม
การวิเคราะห์นี้จะแนะนําให้
การสลายตัวคำเตือนของความกังวลและปัญหาที่อาจเกิดขึ้น
และให้บริบทที่ก่อนหน้านี้
จับประสบการณ์สามารถมีประสิทธิภาพใช้ประโยชน์ .
2 โลก ปรากฏการณ์และ
บางโดเมนปัญหานามธรรมในความรู้สึกทางคณิตศาสตร์
และไม่เสพธรรมชาติทางกายภาพของ
โลก factorising จำนวนเต็มขนาดใหญ่ , การตัดชุด
กราฟและเล่นหมากรุกเป็นตัวอย่างของปัญหา
แต่ปัญหาส่วนใหญ่จะตั้งอยู่ใน
โลกทางกายภาพ ปัญหาดังกล่าวรวมถึงการควบคุม
ลิฟท์ , สลับโทรศัพท์ การควบคุมเบรค
ของรถ , บัญชีธนาคาร , การจัดการการจองที่นั่ง
ละคร ควบคุม VCR และการบริหาร
ห้องสมุด ในทุกกรณีเหล่านี้ประสิทธิภาพของ
โซลูชั่นจะประเมินในโลกทางกายภาพ
ภายนอกคอมพิวเตอร์ ปัญหาอยู่ใน
โลก คอมพิวเตอร์ประมวลผลข้อความโปรแกรมของเราคือ
เพราะปัญหา วิธีการแก้ปัญหา ปรากฏการณ์อยู่ในโลก การวิเคราะห์ปัญหา
ต้องเกี่ยวข้องกับโลกและ
ของปรากฏการณ์ เราต้องการดำเนินการที่
ไม่เกี่ยวกับภาษาการเขียนโปรแกรมหรือปฏิสัมพันธ์วัตถุ
,แต่ทุกอย่างจะทำอย่างไรกับโลกทางกายภาพ
เป็นปรากฏการณ์ที่เหมาะสมรวมถึง : −
- นิติบุคคลซึ่งเป็นบุคคลไม่แน่นอน เช่น รถและคน
; เหตุการณ์ที่แต่ละหน่วยเป็นบุคคล ;
, - ค่า ซึ่งเป็นบุคคลไม่เปลี่ยนแปลง เช่น
จำนวนเต็มและสตริง ;
- สหรัฐอเมริกา ซึ่งมีเวลาเปลี่ยนความสัมพันธ์มากกว่า
แต่ละบุคคลไม่ใช่ความจริง ซึ่งเหตุการณ์ มีความสัมพันธ์ที่ไม่เปลี่ยนแปลงมากกว่าเหตุการณ์กลับตาลปัตร
และบทบาทของแต่ละบุคคล ;
, ซึ่งการมีส่วนร่วมของบุคคลในเหตุการณ์
.
ในหมู่เหล่านี้เป็นประโยชน์ในการจำชั้นของ
ควบคุมปรากฏการณ์เหตุการณ์ การเปลี่ยนแปลงสภาพและ
บทบาทที่เกิดขึ้นเกี่ยวกับความคิดริเริ่มของส่วนหนึ่งของ
โลกมากกว่าอีก ตัวอย่างเช่น การกดแป้นพิมพ์เป็น
เหตุการณ์ที่ผู้ใช้และแป้นพิมพ์ทั้ง
เข้าร่วม แต่ก็ควบคุมได้โดยผู้ใช้นอกจากนี้ยังเป็นประโยชน์ที่จะรักษาบทบาทเป็นปรากฏการณ์
แตกต่างกัน ในการกดแป้นพิมพ์
ผู้ใช้ในการควบคุมงานและบทบาท
นั่นคือการมีส่วนร่วมของคีย์ที่เฉพาะเจาะจง ; แต่ใน
ดิสก์อ่านปฏิบัติการอ่านการควบคุมเหตุการณ์
ในขณะที่ดิสก์การควบคุม paricipation ของ
บันทึกเฉพาะที่กลับมา
การแปล กรุณารอสักครู่..
