วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

3
การพัฒนาพฤติกรรมขับเคลื่อนขับเคลื่อนช่วยเพิ่มความชัดเจนเมื่อภาษาธรรมชาติคลุมเครือ?
ฉันกำลังสำรวจกรอบการทดสอบของBDDเช่นแตงกวาและฉันพบว่าอยากรู้อยากเห็นเมื่อมีคนพูด เนื่องจากไฟล์คุณสมบัติเป็นภาษาธรรมชาติอย่างง่ายจะช่วยปรับปรุงความคมชัดและให้วิสัยทัศน์ที่ชัดเจน แต่ภาษาธรรมชาติไม่ใช่สาเหตุของปัญหาส่วนใหญ่ที่เรามีในวิศวกรรมซอฟต์แวร์ใช่หรือไม่ ภาษาธรรมชาตินั้นคลุมเครือและนั่นเป็นสาเหตุที่หลายโครงการซอฟต์แวร์ล้มเหลวเนื่องจากการตีความความต้องการของลูกค้าผิดและความเข้าใจของผู้พัฒนา ฉันไม่ได้ช่องที่นี่ ใช่การแบ่งการทดสอบออกเป็นการกระทำเล็ก ๆ น้อย ๆ ที่ทำได้ง่ายมีเหตุผลและให้ความชัดเจนในระดับหนึ่ง PS: ฉันไม่ใช่ผู้เชี่ยวชาญและฉันไม่ได้แสดงความคิดเห็นที่นี่ ฉันแค่อยากรู้อยากเห็นที่จะเข้าใจแนวคิด
9 bdd  cucumber 

5
เป็นไปได้ไหมที่จะใช้รหัสขนาดยาวที่แสดงการคำนวณได้ง่ายขึ้น?
วิธีการแบบยาวโดยทั่วไปถือว่าไม่ดี แต่ในรหัสของฉันฉันมีวิธีการแบบยาวที่เข้าใจยาก (มากกว่า 50 บรรทัด) ฉันมีปัญหาในการทำให้วิธีการเหล่านั้นอ่านง่ายขึ้นเพราะคำสั่งเดียวที่มีอยู่แล้วมีความยาวมากกว่า 50 บรรทัดและคำสั่งเดียวที่อ่านยากคือการสร้างแบบสอบถามฐานข้อมูลโดยใช้ ORM เพื่อทำงานบางอย่างที่งานเสร็จแล้ว ระบุไว้อย่างชัดเจนในชื่อวิธีการ เหตุผลที่คำสั่งยาวมากเพราะรวมอยู่ในหลายคอลัมน์ใช้หลาย wheres และเลือกคอลัมน์ที่แตกต่างกันหลายรายการเพื่อสร้างรูปแบบเอาต์พุตเอกสารที่จำเป็น รหัสที่อ่านยากเช่นนี้ถือว่าเป็นรหัสที่ไม่ดีหรือไม่? ในทำนองเดียวกันถ้าฉันเขียนโค้ดสำหรับอัลกอริธึมที่ซับซ้อนส่งผลให้โค้ดที่อ่านยากถูกห่อด้วยวิธีการตั้งชื่ออย่างชัดเจนรหัสนั้นเป็นโค้ดที่ไม่ดีหรือไม่

1
วิธีการจัดการการทดสอบที่ไม่ใช่หน่วยในโครงการ?
ฉันมีรหัสบางอย่างในโครงการของฉันฉันเรียกตัวเองtestsว่าไม่ใช่การทดสอบหน่วย พวกเขาตั้งใจที่จะวิ่งและผลลัพธ์จะต้องมีการประเมินโดยมนุษย์ ฉันทำสิ่งนี้เพราะฉันสร้างเครื่องยนต์ฟิสิกส์และในระหว่างการพัฒนาฉันต้องดูว่าฉันกำลังทำอะไรอยู่ ดังนั้นฉันจึงทำsimulationแพ็คเกจในโมดูลทดสอบ เป็นการทดสอบหน่วยทางเทคนิคเพราะการจำลองกำลังใช้ไลบรารีการทดสอบหน่วย แต่ฉันไม่ได้ตั้งใจที่จะเรียกใช้พวกเขาทั้งหมดเช่นการทดสอบหน่วยที่แท้จริงของฉัน สิ่งที่ฉันต้องการทำคือแยกความแตกต่างของการทดสอบพิเศษจากการทดสอบหน่วยของฉันเพราะฉันต้องการเรียกใช้การทดสอบหน่วยทั้งหมดได้อย่างง่ายดาย ฉันคิดว่ามันเหมือนกับการทดสอบเชิงหน้าที่ คุณเคยเจอกรณีที่คุณต้องเตรียมใบสมัครสำหรับการทดสอบการทำงานหรือไม่? การจัดเตรียมการทดสอบการทำงาน (โดยทั่วไปคือแบบจำลองของฉัน) อยู่ที่ไหนในโครงการและวิธีแยกแยะความแตกต่างจากการทดสอบหน่วย ฉันอยู่ใน Java ดังนั้นฉันสามารถเปลี่ยนลายเซ็นวิธีการทั้งหมดของฉันจาก@Test public void myNamedTest()เป็นpublic static void main(String[] args)แต่มันจะลำบากและเป็นประโยชน์น้อยกว่าสำหรับฉันที่จะใช้แบบจำลองของฉัน ฉันใช้junitในgradleโครงการ โซลูชันใด ๆ ที่สร้างโฟลเดอร์ทดสอบพิเศษด้วยgradleยินดีต้อนรับ

6
ขั้นตอนใดของ Agile (SCRUM) ที่เราควรเริ่มสร้างการทดสอบระบบอัตโนมัติ
พื้นหลังเล็กน้อยของฉัน - ฉันเป็นผู้ทดสอบด้วยตนเองเป็นเวลาเกือบ 2 ปีในสภาพแวดล้อม Agile โดยใช้ SCRUM (1-2 สัปดาห์ในการวิ่ง) ดังนั้นฉันต้องการที่จะแนะนำการทดสอบระบบอัตโนมัติในงานของฉันโดยใช้ Selenium WebDriver (กับ Java) คำถามของฉันอยู่ในระหว่างเมื่อฉันควรทดสอบการทำงานด้วยตนเองและเมื่อฉันควรแปลงพวกเขาสำหรับการทดสอบอัตโนมัติ ฉันได้อ่านและรับแนวทางที่แตกต่างเช่น: เมื่อเริ่มการวิ่งใหม่ให้แปลงเรื่องราวของผู้ใช้เป็นสคริปต์อัตโนมัติจากการวิ่งก่อนหน้านี้หรือ; แปลงเรื่องราวของผู้ใช้ภายในการวิ่งเดียวกัน คำแนะนำใด ๆ / s จะได้รับการชื่นชมอย่างมาก ขอบคุณล่วงหน้า.

2
ฉันควรใช้เลเยอร์ระหว่างบริการและพื้นที่เก็บข้อมูลสำหรับสถาปัตยกรรมสะอาด - สปริง
ฉันกำลังทำงานในสถาปัตยกรรมมันจะให้ api ที่เหลือสำหรับเว็บไคลเอ็นต์และแอพมือถือ ฉันกำลังใช้สปริง (สปริง mvc, สปริงข้อมูล jpa, ... ฯลฯ ) รูปแบบโดเมนนั้นมีรหัสด้วย JPA ฉันพยายามที่จะใช้แนวคิดบางอย่างของสถาปัตยกรรมที่สะอาด ( https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html ) ไม่ใช่ทั้งหมดเพราะฉันจะคงรูปแบบโดเมน jpa ไว้ การไหลที่แท้จริงผ่านเลเยอร์คือ: ส่วนหน้า <--> บริการ API -> บริการ -> พื้นที่เก็บข้อมูล -> ฐานข้อมูล ส่วนหน้า : เว็บไคลเอ็นต์แอปมือถือ บริการ API : Rest Controllers ที่นี่ฉันใช้ตัวแปลงและ dto's และบริการโทร บริการ : การเชื่อมต่อกับการใช้งานและมีตรรกะทางธุรกิจ พื้นที่เก็บข้อมูล : ส่วนต่อประสานที่เก็บข้อมูลที่มีการใช้งานโดยอัตโนมัติ (ทำโดย data …

3
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่สำหรับคำนิยามออบเจ็กต์ API ที่มีรหัสอ้างอิงบุคคลที่สามเป็นคุณสมบัติหรือไม่
แบบนี้: Campaign: type: object properties: id: type: string description: "A GUID identifier" referenceId: type: string description: "A consumers identifier they have used to map their own systems logic to this object." name: type: string description: "'Great Campaign 2017' as an example" ผมกังวลเกี่ยวกับreferenceid โดเมนระบบเป็นแพลตฟอร์มที่รวมเข้ากับบุคคลที่สามได้หลายวิธีผ่านการส่งออกข้อมูลและการนำเข้ารูปแบบต่างๆ (xml, excel) เป็นผู้ใหญ่พอที่จะอนุญาตให้บุคคลที่ 3 รวมกับระบบของเราผ่าน API และการออกแบบของ …

1
ตรรกะทางธุรกิจเทียบกับเลเยอร์บริการ
ฉันอ่านคำตอบนี้: https://softwareengineering.stackexchange.com/a/234254/173318โปรดแก้ไขความเข้าใจของฉัน กฎธุรกิจหมายถึงรายการขั้นตอนของธุรกิจในโลกแห่งความเป็นจริง (ไม่มีรหัส) ตรรกะทางธุรกิจหมายถึงกระบวนการในการแปลงกฎเกณฑ์ทางธุรกิจเป็นรหัสและรหัส / ประเภทของรหัสที่ระบุว่าเป็น "ตรรกะทางธุรกิจ" และชั้นบริการใช้ทำอะไร ถ้าฉันอ่านคำตอบนี้ฟังดูไม่ต่างกับตรรกะทางธุรกิจhttps://stackoverflow.com/a/4817935/4190539 ชั้นบริการเป็นที่สำหรับตรรกะทางธุรกิจและที่เก็บซึ่งกันและกันหรือไม่?

1
กลยุทธ์การอัพเดทอัตโนมัติของซอฟต์แวร์ / เฟิร์มแวร์
ฉันมีโครงการขนาดกลางแล้วตอนนี้ใกล้จะสิ้นสุด "เฟสต้นแบบที่ขับเคลื่อนด้วยคาเฟอีนแบบเลอะเทอะสำหรับการสาธิตลูกค้า" และเปลี่ยนเป็นเฟส "คิดเกี่ยวกับอนาคต" โครงการประกอบด้วยอุปกรณ์ที่ใช้ Linux พร้อมซอฟต์แวร์และเฟิร์มแวร์และเว็บเซิร์ฟเวอร์การบริหารส่วนกลาง 10 ต้นแบบที่มีอยู่ในปัจจุบันการผลิตคาดว่าจะอยู่ในลำดับต่ำ 1,000 การไม่ได้มีความเชี่ยวชาญในการอัปเดตอัตโนมัติและเป็นระยะเวลาสั้น ๆ ฉันได้เปิดตัวการปรับใช้ซอฟต์แวร์ / กลยุทธ์การอัพเดทอัตโนมัติอย่างรวดเร็วและตรงไปตรงมามันแย่มาก ปัจจุบันประกอบด้วยดังต่อไปนี้: git repo โฮสต์ (GitLab) ที่มีสาขารีลีสการผลิต (หมายเหตุแหล่งที่มาของเว็บเซิร์ฟเวอร์นั้นอยู่ใน repo เดียวกันนี้รวมถึงสิ่งอื่น ๆ อีกสองสามรายการ) ปุ่ม "ปรับใช้การอัปเดต" บนเว็บอินเตอร์เฟสที่: ดึงเวอร์ชันล่าสุดจากสาขารีลีสการผลิตไปยังพื้นที่ repo ท้องถิ่นและคัดลอกไปยังพื้นที่จัดเตรียมชั่วคราว รันสคริปต์การฆ่าเชื้อ (เก็บไว้ใน repo) ในพื้นที่จัดเตรียมเพื่อลบไฟล์ต้นฉบับที่ไม่เกี่ยวข้อง (เช่นแหล่งเซิร์ฟเวอร์, แหล่งเฟิร์มแวร์ ฯลฯ ) และไฟล์. git เขียนแฮช git ปัจจุบันไปยังไฟล์ในแพ็คเกจการอัพเดท (จุดประสงค์จะชัดเจนด้านล่าง) หากทุกอย่างเป็นไปด้วยดีมันจะบีบอัดไฟล์และทำให้พร้อมที่จะให้บริการโดยเขียนทับแพ็กเกจ gzipped ก่อนหน้าด้วยไฟล์ชื่อเดียวกันจากนั้นลบพื้นที่จัดเตรียม โปรดทราบว่าขณะนี้มีซอฟต์แวร์อุปกรณ์ปัจจุบันสองสำเนาบนเซิร์ฟเวอร์ซึ่งคาดว่าจะซิงค์: …

1
ฉันจะโครงสร้างอินเทอร์เฟซเมื่อวัตถุใช้เพียงส่วนหนึ่งของอินเทอร์เฟซได้อย่างไร
ฉันมีโครงการที่ฉันมีสองคลาสที่ทั้งสองต้องการวัตถุเข้าถึงฐานข้อมูลที่ปรับปรุงตารางเดียวกัน ข้อ จำกัด ของกรอบงานและโครงการทำให้เป็นไปไม่ได้ที่จะรวมสองคลาสนี้ ฉันได้สร้างกรณีด้านล่างที่แสดงว่าการตั้งค่าเป็นอย่างไร คลาส A จำเป็นต้องสามารถอัปเดตและอ่านบันทึกในขณะที่คลาส B จำเป็นต้องสามารถอัปเดตและลบบันทึกได้ ถ้าฉันใช้คลาสเหมือนเดิมมันใช้งานได้ดี แต่ฉันมีปัญหากับความจริงที่ว่าแต่ละคลาสต้องการฟังก์ชันการทำงานที่ไม่ได้ใช้งาน ตัวอย่างเช่นในการใช้คลาส A ฉันต้องส่งผ่าน dao ที่ใช้ฟังก์ชั่นลบแม้ว่ามันจะไม่ถูกเรียกใช้ ในทำนองเดียวกันฉันต้องผ่านคลาส B a dao ที่ใช้ฟังก์ชั่นการอ่าน แต่มันจะไม่ถูกเรียก ฉันคิดเกี่ยวกับการเข้าถึงโดยการมีส่วนต่อประสานที่สืบทอดผู้อื่น (IReadDao, IUpdateDao, IDeleteDao เป็น daos ที่จะสืบทอดมาจาก) แต่วิธีการนี้โดยทั่วไปจะต้องใช้อินเทอร์เฟซที่แตกต่างกันสำหรับฟังก์ชั่นแต่ละชุด (IUpdateAndDelete ) ฉันต้องการใช้อินเทอร์เฟซสำหรับ dao เพราะฉันไม่ต้องการเชื่อมโยงแอปพลิเคชันกับฐานข้อมูล มีรูปแบบหรือวิธีการในการบรรลุสิ่งที่ฉันต้องการให้ใครรู้หรือไม่? ขอบคุณล่วงหน้า. class IDao { void update(ModelDao model); void delete(String guid); ModelDao read(String guid); …

2
ติดตามการเปลี่ยนแปลงการกำหนดค่าจาก dev เป็น prod อย่างมีประสิทธิภาพ
คำถามนี้ใช้บริการ Spring Boot เป็นตัวอย่าง แต่อาจเป็นเทคโนโลยีใด ๆ ก็ได้ สมมติว่าต่อไปนี้: สภาพแวดล้อม (dev / QA / prod) เป็นของทีมอื่น ซึ่งหมายความว่า dev ต้องไม่มีสิทธิ์เข้าถึงการกำหนดค่า prod การกำหนดค่า (สมมุติว่า application.properties) ถูกทำให้เป็นภายนอกไม่ใช่ส่วนหนึ่งของไบนารี ไบนารี / แพ็คเกจเดียวกัน (สมมุติว่า service.jar) ถูกปรับใช้ในแต่ละสภาพแวดล้อมและควบคุมโดยการปรับใช้อัตโนมัติ ในขณะที่การเปลี่ยนแปลงสิ่งประดิษฐ์ไบนารี (service.jar) ได้รับการเผยแพร่โดยอัตโนมัติไปยังแต่ละสภาพแวดล้อมการเปลี่ยนแปลงการกำหนดค่ายังคงต้องมีการแทรกแซงด้วยตนเองซึ่งท้ายที่สุดก็กลายเป็นถูกทำข้อมูลให้ตรงกันในแต่ละสภาพแวดล้อม ตัวอย่างเช่นสมมติว่าทีม dev เพิ่มคู่ของคีย์ - ค่าลงในแอปพลิเคชันคุณสมบัติในสภาพแวดล้อมของพวกเขา อะไรจะเป็นวิธีที่ดีที่สุดในการบันทึกคีย์ใหม่เหล่านี้ดังนั้นเมื่อการปรับใช้เกิดขึ้นในทีม ops พวกเขารู้ว่าต้องเพิ่มคีย์ใดดังนั้นความเสี่ยงของการเริ่มบริการใหม่และการเห็นว่าล้มเหลวเนื่องจากคีย์ที่หายไป ฉันรู้ว่าจะมีขั้นตอนที่ต้องดำเนินการด้วยตนเอง แต่ฉันต้องการที่จะรู้ว่าผู้คนจัดการกับเรื่องนี้อย่างไรและหาวิธีที่มีประสิทธิภาพมากที่สุด

3
ในสถาปัตยกรรม microservices ที่เชื่อมโยงกันอย่างหลวม ๆ คุณจะติดตามการพึ่งพาของคุณได้อย่างไร
ตัวเลือกสถาปัตยกรรมระดับสูงที่ได้รับความนิยมในโปรแกรมที่ทันสมัยคือระบบ microservices ที่ใช้ REST สิ่งนี้มีข้อดีหลายประการเช่นข้อต่อหลวมการใช้งานง่าย จำกัด ข้อ จำกัด เกี่ยวกับเทคโนโลยีที่สามารถใช้ได้ความยืดหยุ่นสูงเป็นต้น แต่ปัญหาอย่างหนึ่งที่ฉันเห็นในสถาปัตยกรรมนั้นก็คือการมองเห็นที่ไม่ดีเกี่ยวกับการพึ่งพาของแอปพลิเคชัน ตัวอย่างเช่นสมมติว่าฉันมีแอปพลิเคชันที่ใช้การเรียกใช้ REST หนึ่งชุดเป็นประจำทุกวัน แอปพลิเคชั่นนี้ใช้การเรียกใช้ REST ชุดที่สอง แต่เพียงไตรมาสละครั้ง ถ้าฉันจะสแกนบันทึกสำหรับสัปดาห์ที่ผ่านมาฉันจะเห็น cals ทุกวัน แต่ฉันคงไม่เห็นการโทรรายไตรมาส เมื่อถึงเวลาต้องปรับโครงสร้างการโทรรายไตรมาสมีความเสี่ยงสูงที่จะแตกหัก รูปแบบหรือเครื่องมือใดที่สามารถนำมาใช้เพื่อลดความเสี่ยงนี้และให้ทัศนวิสัยที่ดีขึ้นในการพึ่งพาของสถาปัตยกรรมคู่ที่หลวม

2
การเพิ่มชุดของตัวเลือกที่ จำกัด ; การแตกหักของ API คืออะไร
ใช้จุดปลาย HTTP API ซึ่งพ่นรูปแบบการตอบสนองต่อไปนี้: { "type": "Dog", "name": "Jessi", ... } typeข้อมูลได้รับการอธิบายไว้ในเอกสารที่เป็นหนึ่งDog, หรือCatFish การเพิ่มตัวเลือกใหม่Ratจะถือว่าเป็นการเปลี่ยนแปลง API ที่ผิดปกติหรือไม่ การเพิ่มตัวเลือกในรายการที่ จำกัด (ซึ่งนักพัฒนาซอฟต์แวร์อาจเปิดใช้งาน) ถือว่าเป็นส่วนขยายหรือการแก้ไข API หรือไม่
9 rest  api  api-design  json 

7
เป็นที่ยอมรับหรือไม่ที่จะมีการอภิปรายที่ไม่เกี่ยวข้องกับการเช็คอินในการประชุม Scrum Daily Standup?
ฉันหวังว่าผู้คนจะดื่มด่ำกับคำถามที่เห็นได้ชัด ฉันทำงานในองค์กรหลายแห่งที่มีการประชุมทะเลาะกันทุกวัน บางองค์กรมีความเข้มงวดอย่างมากเกี่ยวกับการใช้ scrum ในการเช็คอิน ("คำถามสามข้อ" - คุณทำอะไรเมื่อวานนี้คุณทำอะไรวันนี้คุณมีบล็อกเกอร์หรือไม่) แต่องค์กรอื่น ๆ ที่มีแนวโน้มทั่วไป ประกาศหรือการสนทนาทางเทคนิคอย่างละเอียด ฉันเคยได้ยินข้อโต้แย้งเช่นในบทความนี้ว่าการอนุญาตให้มีการอภิปรายที่ไม่เกี่ยวข้องกับการเช็คอินเช่นนี้เป็นความผิดพลาด - การประชุมการต่อสู้ไม่ควรใช้สำหรับการประกาศทั่วไปจาก Scrum Master การสนทนาทางเทคนิค ฯลฯ อันตรายหลักที่ฉันเห็นจากการประชุมครั้งนี้คือการประชุมอาจยาวนานเกินความจำเป็น (และเป็นเรื่องน่ารำคาญที่ถูกบังคับให้ต้องนั่งคุยกันเรื่องรายละเอียดที่ไม่เกี่ยวข้องกับฉัน) ค่อนข้างชัดเจนว่าการอภิปรายที่ไม่เกี่ยวข้องกับทั้งกลุ่มและไม่ได้เป็นส่วนหนึ่งของ "คำถามสามข้อ" ไม่ควรเป็นส่วนหนึ่งของการยืนขึ้น อย่างไรก็ตามหากมีการประกาศอื่น ๆ ที่เกี่ยวข้องกับทั้งกลุ่มและจำเป็นต้องมีการหารือต่อไปมันจะเป็นอันตรายหรือไม่ที่จะพูดถึงสิ่งเหล่านั้น ณ จุดนั้น (แทนที่จะเป็นการประชุมหรืออีเมลแยกต่างหาก)?

2
ฉันจะใช้จาวาสคริปต์ได้อย่างไร
ฉันเชื่อว่าฉันได้เรียนรู้แนวคิดพื้นฐานบางส่วน / มากที่สุด / ส่วนใหญ่ที่เกี่ยวกับการเขียนโปรแกรมการทำงานใน JavaScript อย่างไรก็ตามฉันมีปัญหาในการอ่านรหัสฟังก์ชั่นโดยเฉพาะแม้แต่รหัสที่ฉันเขียนและสงสัยว่าใครสามารถให้คำแนะนำเคล็ดลับแนวปฏิบัติที่ดีที่สุดคำศัพท์และอื่น ๆ ที่สามารถช่วยฉันได้ ใช้รหัสด้านล่าง ฉันเขียนรหัสนี้ โดยมีจุดมุ่งหมายที่จะกำหนดความคล้ายคลึงกันร้อยละระหว่างวัตถุสองระหว่างการพูดและ{a:1, b:2, c:3, d:3} {a:1, b:1, e:2, f:2, g:3, h:5}ผมผลิตรหัสในการตอบสนองต่อคำถามนี้ในกองมากเกิน เพราะฉันไม่แน่ใจเหมือนกันว่าเปอร์เซ็นต์ที่คล้ายคลึงกันที่โปสเตอร์ถามเกี่ยวกับอะไรฉันจึงให้สี่ชนิดที่แตกต่างกัน: เปอร์เซ็นต์ของกุญแจในวัตถุที่ 1 ที่สามารถพบได้ในที่ 2 ร้อยละของค่าในวัตถุที่ 1 ที่สามารถพบได้ใน 2 รวมถึงการทำซ้ำ เปอร์เซ็นต์ของค่าในวัตถุที่ 1 ที่สามารถพบได้ในที่ 2 โดยไม่อนุญาตให้ทำซ้ำและ เปอร์เซ็นต์ของคู่ {key: value} ในวัตถุที่ 1 ที่สามารถพบได้ในวัตถุที่สอง ฉันเริ่มด้วยรหัสที่จำเป็นพอสมควร แต่รู้ได้อย่างรวดเร็วว่านี่เป็นปัญหาที่เหมาะสมสำหรับการเขียนโปรแกรมการทำงาน โดยเฉพาะอย่างยิ่งฉันรู้ว่าถ้าฉันสามารถแยกฟังก์ชั่นหรือสามสำหรับแต่ละสี่กลยุทธ์ข้างต้นที่กำหนดประเภทของคุณสมบัติที่ฉันกำลังมองหาเพื่อเปรียบเทียบ (เช่นคีย์หรือค่า ฯลฯ ) จากนั้นฉันอาจ สามารถลด …

3
ในความคล่องตัวงานโครงสร้างพื้นฐานขั้นพื้นฐานในช่วงเริ่มต้นของโครงการที่วางแผนไว้และจัดสรรโดยใช้กรอบการจัดการที่เข้มงวดเช่น TFS ออนไลน์อย่างไร
ฉันอยู่ในขั้นตอนการกำหนดขอบเขตและประเมินโครงการพัฒนาซอฟต์แวร์ใหม่ที่ค่อนข้างเล็ก ฉันเคยผ่านเรื่องราวของผู้ใช้ที่ลูกค้าแนะนำและวางภาระงานให้กับแต่ละคนโดยมีการประเมินและบันทึกย่อสั้น ๆ เกี่ยวกับวิธีการทำงานให้สำเร็จ มีเกณฑ์การยอมรับ ทุกคนควรจะดีกับโลก เมื่อดูงานที่ฉันวางแผนไว้ฉันก็รู้ว่ามีบางอย่างขาดหายไป จะมีค่าใช้จ่ายเริ่มต้นเพียงแค่ตั้งค่าสิ่งต่าง ๆ ที่เราสามารถใช้งานได้ สิ่งที่เป็นของเรื่องราวของผู้ใช้ทั้งหมดไม่ใช่เรื่องราวของผู้ใช้หนึ่งราย ตัวอย่างเช่นส่วนหนึ่งของแอปพลิเคชันนี้เป็นบริการที่แยกวิเคราะห์ XML จากมุมมองของผู้ใช้จะมีเรื่องราวเฉพาะที่ต้องทำสิ่งต่าง ๆ โดยขึ้นอยู่กับเนื้อหาของ XML การเขียนโปรแกรมวิเคราะห์คำ XML จริง ๆ - บิตที่มองหาไฟล์อ่านและดึงข้อมูลที่เกี่ยวข้องออกมาก่อนตัดสินใจว่าจะทำอย่างไรกับเนื้อหา - เป็นส่วนหนึ่งของเรื่องราวเหล่านั้นทั้งหมด เช่นเดียวกับการห่อไว้ในบริการ windows พร้อมกับตัวติดตั้ง ฯลฯ มันเป็นงานที่นักพัฒนาเป็นศูนย์กลางโดยไม่เกี่ยวข้องโดยตรงกับผู้ใช้ อีกตัวอย่างที่เกี่ยวข้องจากแอปพลิเคชันนี้คือการรับและการเขียนบล็อกของรหัสดั้งเดิมที่ไม่ดีซึ่งมีประโยชน์ต่อการทำงานของแอพนี้ อีกครั้งสิ่งนี้ไม่มีผลลัพธ์ทันทีสำหรับผู้ใช้ แต่เป็นงานที่จำเป็น การวางแผนและการดำเนินการของงานนี้ "สด" ในแผนโครงการเน้นเรื่องราวของผู้ใช้ที่ไหน ฉันเคยเห็นผู้คนแก้ปัญหานี้ด้วยการเขียนเรื่องราวของผู้ใช้ "ในฐานะนักพัฒนาฉันต้องการ ... " แต่ดังที่ได้มีการพูดคุยกันที่นี่ไม่ใช่เรื่องของผู้ใช้ มันเป็นหนึ่งในนักพัฒนา ฉันกำลังหาคำตอบที่เป็นรูปธรรมสำหรับสิ่งนี้เพื่อช่วยฉัน (และคนอื่น ๆ ) ในการวางแผนโครงการโดยใช้กรอบการจัดการที่เข้มงวดเช่น TFS ออนไลน์ สิ่งเหล่านี้ไม่มีแนวโน้มที่จะมีหน้าที่จัดทำ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.