1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Code complete vietsub

15 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 351,43 KB

Nội dung

Lời nói đầu Khoảng cách thực hành kỹ thuật phần mềm tốt thực tế trung bình rộng có lẽ rộng môn học kỹ thuật khác Một công cụ phổ biến thực hành tốt quan trọng -Fred Brooks Mối quan tâm tơi viết sách thu hẹp khoảng cách kiến thức kinh nghiệm ngành công nghiệp giáo sư mặt thương mại chung thực hành việc khác Nhiều kỹ thuật lập trình mạnh mẽ ẩn tạp chí giấy tờ học tập cho năm trước chảy xuống tới cơng trình Mặc dù thực tế phát triển phần mềm tiên tiến tiến nhanh gần năm, thực tế phổ biến khơng có Nhiều chương trình cịn lỗi, trễ, ngân sách, nhiều người không đáp ứng nhu cầu người dùng họ Các nhà nghiên cứu hai phần mềm thiết lập công nghiệp học thuật phát thực hành hiệu mà loại bỏ hầu hết vấn đề lập trình thịnh hành từ năm 1970 Bởi thực hành khơng thường xun báo cáo bên trang chuyên ngành kỹ thuật cao tạp chí, nhiên, hầu hết tổ chức chương trình chưa sử dụng chúng ngày hôm Các nghiên cứu tìm thấy thường từ đến 15 năm nhiều cho phát triển nghiên cứu để thực theo cách vào thực tiễn thương mại (Raghavan Chand 1989, Rogers 1995, Parnas 1999) Cuốn sổ tay phím tắt q trình này, làm cho khám phá quan trọng có sẵn cho lập trình viên trung bình Ai nên đọc sách này? Các nghiên cứu kinh nghiệm lập trình thu thập cẩm nang giúp bạn để tạo phần mềm chất lượng cao làm việc bạn cách nhanh chóng với vấn đề Cuốn sách cung cấp cho bạn nhìn sâu sắc vào vấn đề bạn có khứ cho bạn thấy làm để tránh vấn đề tương lai Các thực hành lập trình mơ tả giúp bạn giữ cho dự án lớn kiểm soát giúp bạn trì sửa đổi phần mềm thành công nhu cầu bạn thay đổi dự án Các lập trình viên có kinh nghiệm Cuốn sổ tay phục vụ lập trình viên giàu kinh nghiệm, người muốn toàn diện, dễ touse hướng dẫn để phát triển phần mềm Bởi sách tập trung vào việc xây dựng, phần quen thuộc vịng đời phần mềm, làm cho phát triển phần mềm mạnh mẽ kỹ thuật dễ hiểu lập trình viên tự học lập trình viên với đào tạo quy Chào kỹ thuật Nhiều khách hàng tiềm kỹ thuật sử dụng Code Complete để giáo dục lập trình viên kinh nghiệm nhóm họ Bạn sử dụng để điền vào khoảng trống kiến thức Nếu bạn lập trình viên có kinh nghiệm, bạn khơng đồng ý với kết luận (và ngạc nhiên bạn làm), bạn đọc sách suy nghĩ vấn đề, mang đến vấn đề xây dựng mà bạn không xem xét trước Các lập trình viên tự dạy Nếu bạn chưa có đào tạo quy nhiều, bạn công ty tốt Khoảng 50.000 nhà phát triển vào nghề năm (BLS 2004, Hecker 2004), có khoảng 35.000 độ phần mềm liên quan trao năm (NCES 2002) Từ số bước ngắn để kết luận nhiều lập trình viên khơng nhận thức giáo dục phát triển phần mềm Lập trình viên tự học tìm thấy nhóm chun gia kỹ sư, kế toán viên, nhà khoa học, giáo viên, SmallBusiness chủ-những chương trình phần công việc họ người không thiết phải xem lập trình viên Bất kể mức độ giáo dục chương trình bạn, Cuốn sổ tay cung cấp cho bạn nhìn sâu sắc vào thực hành lập trình hiệu Học sinh Các điểm đối lập lập trình viên có kinh nghiệm đào tạo quy tốt nghiệp đại học tươi Ông tốt nghiệp gần thường giàu kiến thức lý thuyết mà nghèo thực tế bí mà vào xây dựng chương trình sản xuất Các truyền thuyết thực tế mã hóa tốt thường truyền xuống từ từ lạc mang tính nghi thức điệu múa kiến trúc sư phần mềm, khách hàng tiềm dự án, nhà phân tích, lập trình viên nhiều kinh nghiệm Thậm chí nhiều thường, sản phẩm thử nghiệm lập trình cá nhân lỗi Cuốn sách thay cho hoạt động chậm người trí thức truyền thống Potlatch Nó kéo lời khuyên hữu ích chiến lược phát triển hiệu trước sẵn chủ yếu săn bắn thu thập từ kinh nghiệm người khác Đó tay cho học sinh làm cho trình chuyển đổi từ môi trường học tập cho một chuyên nghiệp Trường hợp khác bạn tìm thơng tin này? Cuốn sách tổng hợp kỹ thuật xây dựng từ nhiều nguồn khác Ngoài để phân tán rộng rãi, nhiều trí tuệ tích lũy xây dựng có cư trú nguồn bên ngồi viết nhiều năm (Hildebrand 1989, McConnell 1997a) Khơng có bí ẩn về, kỹ thuật lập trình cao-powered hiệu sử dụng chuyên gia lập trình Trong lúc vội vã ngày-to-ngày mài dự án, nhiên, vài chuyên gia dành thời gian để chia sẻ họ học lập trình viên gặp khó khăn việc tìm kiếm nguồn tốt lập trình thơng tin Các kỹ thuật mô tả sách lấp đầy khoảng trống sau giới thiệu nâng cao văn lập trình Sau bạn đọc Giới thiệu Java, Java nâng cao, Advanced Java, sách để bạn đọc để tìm hiểu thêm lập trình? Bạn đọc sách chi tiết Intel hay Motorola phần cứng, Microsoft Windows Linux chức hoạt động hệ thống, ngơn ngữ lập trình bạnkhơng thể sử dụng ngơn ngữ chương trình mơi trường mà khơng có tài liệu tham khảo tốt để chi tiết Nhưng số sách mà thảo luận lập trình cho gia nhập Một số khoản viện trợ lập trình có lợi thực tiễn mà bạn sử dụng mơi trường ngơn ngữ mà bạn làm việc Các sách khác thường bỏ qua thực hành vậy, lý sách tập trung vào chúng Những thông tin sách chưng cất từ nhiều nguồn, hình Các Chỉ cách khác để có thơng tin mà bạn tìm thấy sổ tay cày qua núi sách vài trăm tạp chí kỹ thuật sau thêm số lượng đáng kể kinh nghiệm thực tế Nếu bạn làm tất điều đó, bạn hưởng lợi từ sách thu thập thông tin nơi để tham khảo dễ dàng Lợi ích Cẩm nang Dù bạn, cẩm nang giúp bạn viết chương trình tốt thời gian với đau đầu Toàn tài liệu tham khảo phần mềm xây dựng sổ tay hướng dẫn thảo luận khía cạnh chung thi cơng như: chất lượng phần mềm cách suy nghĩ lập trình Nó vào nitty-gritty chi tiết xây dựng bước lớp học xây dựng, ins and outs sử dụng liệu kiểm soát cấu trúc, gỡ lỗi, tái cấu trúc, mã chỉnh kỹ thuật chiến lược Bạn khơng cần phải đọc bao gồm để trang trải để tìm hiểu chủ đề Cuốn sách thiết kế để làm cho dễ dàng để tìm thấy thơng tin cụ thể lợi ích bạn Chuyên nghiệp kinh nghiệm Phần mềm khác sách Lập trình sách ngơn ngữ Tạp chí Bài viết công nghệ tài liệu tham khảo Xây dựng Sử dụng danh sách kiểm tra sẵn sàng Cuốn sách bao gồm hàng chục danh sách, bạn sử dụng để đánh giá kiến trúc phần mềm bạn, phương pháp thiết kế, lớp chất lượng thường xuyên, biến tên, cấu trúc điều khiển, bố trí, trường hợp thử nghiệm, nhiều Nhà nước-of-the-nghệ thuật thông tin sổ tay mô tả số ngày để up-to-nhất kỹ thuật sẵn có, nhiều số chưa thực vào sử dụng phổ biến Bởi Cuốn sách rút từ hai thực hành nghiên cứu, kỹ thuật mơ tả ý hữu dụng nhiều năm Quan điểm lớn phát triển phần mềm sách cung cấp cho bạn hội để tăng cạnh tranh ngày-to-ngày chữa cháy tìm làm việc khơng Vài lập trình viên thực tập có thời gian để đọc qua hàng trăm sách báo chưng cất thành cẩm nang Các nghiên cứu RealWorld kinh nghiệm thu thập vào sổ tay thơng báo kích thích suy nghĩ bạn dự án bạn, cho phép bạn hành động chiến lược để bạn không cần phải chống lại trận đánh lần lần Sự vắng mặt hype Một số sách phần mềm có chứa gram nhìn sâu sắc quấn 10 gam hype Cuốn sách trình bày thảo luận cân điểm mạnh kỹ thuật điểm yếu Bạn biết nhu cầu dự án cụ thể bạn tốt so với khác Cuốn sách cung cấp thông tin khách quan, bạn cần phải đưa định tốt hoàn cảnh cụ thể bạn Các khái niệm áp dụng cho ngôn ngữ phổ biến sách mô tả kỹ thuật bạn sử dụng để nhận nhiều ngôn ngữ bạn sử dụng, cho dù C ++, C #, Java, Microsoft Visual Basic, ngôn ngữ tương tự khác Nhiều ví dụ mã Cuốn sách chứa gần 500 ví dụ tốt xấu mã Tôi bao gồm nhiều ví dụ vì, cá nhân, tơi học nhiều từ ví dụ Tơi nghĩ lập trình viên khác học tốt theo cách q Các ví dụ nhiều ngơn ngữ làm chủ nhiều ngôn ngữ thường bước ngoặt nghiệp lập trình viên chuyên nghiệp Một lập trình viên nhận nguyên tắc lập trình vượt qua cú pháp ngôn ngữ cụ thể, cửa xoay mở để kiến thức thật làm cho khác biệt chất lượng suất Để làm cho gánh nặng nhiều ngôn ngữ nhẹ tốt, tơi tránh ngơn ngữ bí truyền tính năng, trừ trường hợp họ trao đổi cụ thể Bạn không cần phải hiểu sắc thái đoạn mã để hiểu điểm mà họ làm Nếu bạn tập trung vào điểm minh họa, bạn thấy bạn đọc mã ngôn ngữ Tôi cố gắng để làm cho công việc bạn dễ dàng cách giải ý nghĩa phận ví dụ Tiếp cận nguồn thơng tin khác sách tập hợp nhiều sẵn thông tin phần mềm xây dựng, khó có tiếng nói cuối Xuyên suốt chương, "Tài nguyên bổ sung" phần mơ tả sách bạn khác đọc bạn theo đuổi chủ đề mà bạn tìm thấy thú vị website cc2e.com/1234 Sách danh sách kiểm tra cập nhật, sách, báo tạp chí, liên kết Web, khác nội dung cung cấp trang web bạn đồng cc2e.com Để truy cập thông tin liên quan đến Code Complete, ed 2d., nhập cc2e.com/ theo sau mã số có bốn chữ số, Ví dụ số hiển thị lề trái Các tài liệu tham khảo trang web xuất suốt sách Tại Sổ tay viết Sự cần thiết cho phát triển sổ tay mà nắm bắt kiến thức phát triển hiệu thực hành ghi nhận cộng đồng phần mềm kỹ thuật Một báo cáo Hội đồng Khoa học Cơng nghệ máy tính nói lợi ích lớn Phần mềmchất lượng phát triển suất đến từ việc hệ thống hóa, hợp nhất, phân phối kiến thức có thực tiễn phát triển phần mềm hiệu (CSTB 1990, McConnell 1997a) Hội đồng quản trị kết luận chiến lược phát tán kiến thức phải xây dựng khái niệm sổ tay phần mềm kỹ thuật Các chủ đề Xây dựng bị bỏ rơi Tại thời gian, phát triển phần mềm mã hóa cho giống Nhưng hoạt động khác vòng đời phát triển phần mềm xác định, số tâm trí tốt lĩnh vực dành thời gian phân tích phương pháp tranh luận quản lý dự án, yêu cầu, thiết kế thử nghiệm Các rush học khu vực xác định xây dựng trái mã anh em họ khơng biết phần mềm phát triển Thảo luận xây dựng tập tễnh gợi ý điều trị xây dựng hoạt động phát triển phần mềm riêng biệt ngụ ý xây dựng phải đối xử giai đoạn riêng biệt Trong thực tế, hoạt động phần mềm giai đoạn thiết lập mối quan hệ đặc biệt với nhau, hữu ích để thảo luận hoạt động xây dựng hoạt động phần mềm khác thực giai đoạn, lặp lặp lại, số cách khác Xây dựng quan trọng Một lý xây dựng bỏ qua nhà nghiên cứu nhà văn sai lầm ý tưởng rằng, so với hoạt động phát triển phần mềm khác, xây dựng q trình tương đối mà trình bày hội để cải thiện Khơng thêm từ thật Mã xây dựng thường chiếm khoảng 65 phần trăm nỗ lực vào dự án nhỏ 50 phần trăm dự án trung bình Xây dựng chiếm khoảng 75 phần trăm lỗi dự án nhỏ 50 đến 75 phần trăm dự án vừa lớn Bất kỳ hoạt động chiếm 50-75 phần trăm lỗi trình bày hội rõ ràng để cải thiện (Chương 27 chứa nhiều chi tiết số liệu thống kê.) Một số nhà bình luận chiếm lỗi xây dựng cho tỷ lệ cao tổng số sai sót, lỗi xây dựng có xu hướng tốn để sửa chữa người gây yêu cầu kiến trúc, gợi ý họ quan trọng Những tuyên bố lỗi xây dựng tốn để sửa chữa sai lệch chi phí khơng cố định chúng vơ cao Các nhà nghiên cứu tìm thấy tài khoản lỗi mã hố quy mơ nhỏ cho số phần mềm đắt tiền lỗi tất thời gian, chi phí chạy vào hàng trăm triệu la (Weinberg 1983, SEN 1990) Một chi phí không tốn để sửa chữa rõ ràng không ngụ ý sửa chữa chúng phải ưu tiên thấp Sự trớ trêu thay đổi trọng tâm từ xây dựng xây dựng hoạt động bảo đảm thực Yêu cầu giả định khơng phải phát triển; kiến trúc shortchanged thiết kế; thử nghiệm viết tắt bỏ qua kế hoạch đầy đủ thực Nhưng có chương trình, có phải xây dựng, làm cho xây dựng độc đáo khu vực có hiệu quả, để cải thiện thực hành phát triển Khơng có tính tương đương Book Tiên Trong ánh sáng tầm quan trọng rõ ràng xây dựng, chắn tơi hình thành sách có viết sách thực tiễn xây dựng có hiệu Sự cần thiết cho sách làm để chương trình có hiệu dường rõ ràng Nhưng Tơi cho thấy có vài sách viết xây dựng sau phận chủ đề Một số viết 15 năm lâu trước sử dụng tương đối ngơn ngữ bí truyền ALGOL, PL / I, Ratfor, Smalltalk Một số được viết giáo sư, người không làm việc mã sản xuất Các giáo sư viết kỹ thuật mà làm việc cho dự án sinh viên, họ thường có chút ý tưởng cách thức kỹ thuật diễn môi trường phát triển tồn diện Cịn sách khác rống phương pháp ưa thích tác giả bỏ kho lớn thông lệ trưởng thành chứng minh hiệu họ theo thời gian Khi nhà phê bình nghệ thuật có với họ nói Form Cấu trúc ý nghĩa Khi nghệ sĩ nhận với họ nói nơi bạn mua nhựa thơng giá rẻ -Pablo Picasso Trong ngắn hạn, tơi khơng thể tìm thấy sách chí cố gắng để nắm bắt thể thực tiễn kỹ thuật sẵn có từ kinh nghiệm chun mơn, nghiên cứu ngành cơng nghiệp, học tập công việc Các thảo luận cần phải đưa lên ngày ngơn ngữ lập trình, lập trình hướng đối tượng, phát triển mũi nhọn thực hành Nó dường rõ ràng sách lập trình cần phải viết người có hiểu biết tình trạng lý thuyết nghệ thuật người xây dựng đủ mã sản xuất để đánh giá tình trạng thực hành Tơi hình thành sách thảo luận đầy đủ mã xây dựng từ lập trình viên khác Lời cảm ơn Một sách không thực viết người (ít khơng có sách tơi) Một ấn thứ hai chí cịn nhiều công việc tập thể Tôi muốn cảm ơn người đóng góp ý kiến nhận xét phần đáng kể sách: Hakon Ágústsson, Scott Ambler, Will Barns, William D Bartholomew, Lars Bergstrom, Ian Brockbank, Bruce Butler, Jay Cincotta, Alan Cooper, Bob Corrick, Al Corwin, Jerry Deville, Jon Eaves, Edward Estrada, Steve Gouldstone, Owain Griffiths, Matthew Harris, Michael Howard, Andy Hunt, Kevin Hutchison, Rob Jasper, Stephen Jenkins, Ralph Johnson ơng Tập đồn phần mềm Kiến trúc Đại học Illinois, Marek Konopka, Jeff Langr, Andy Lester, Mitica Manu, Steve Mattingly, Gareth McCaughan, Robert McGovern, Scott Meyers, Gareth Morgan, Matt Peloquin, Bryan Pflug, Jeffrey Richter, Steve Rinn, Doug Rosenberg, Brian St Pierre, Diomidis Spinellis, Matt Stephens, Dave Thomas, Andy Thomas-Cramer, John Vlissides, Pavel Vozenilek, Denny Williford, Jack Woolley, Dee Zsombor Hàng trăm độc giả gửi ý kiến ấn đầu tiên, nhiều gửi cá nhân Bình luận ấn thứ hai Cám ơn người dành thời gian để chia sẻ phản ứng họ để sách hình thức khác Đặc biệt cảm ơn nhận xét Construx Software người thức kiểm tra tồn thảo: Jason Hills, Bradey Honsinger, Abdul Nizar, Tom Reed, Pamela Perrott Tôi thực ngạc nhiên trước cách kỹ lưỡng xem xét họ là, đặc biệt xem xét có đơi mắt xem xét kỹ lưỡng sách trước họ bắt đầu làm việc Cũng xin cảm ơn Bradey, Jason, Pamela cho đóng góp cho trang web cc2e.com Làm việc với Devon Musgrave, biên tập viên dự án cho sách này, điều trị đặc biệt Tôi làm việc với nhiều biên tập viên xuất sắc vào dự án khác, Devon đứng đặc biệt lương tâm dễ dàng để làm việc với Thanks, Devon! Nhờ Linda Engleman người đấu tranh cho ấn thứ hai; Cuốn sách khơng xảy mà khơng có Thanks với phần lại nhân viên Microsoft Press, bao gồm Robin Van Steenburgh, Elden Nelson, Carl Diltz, Joel Panchot, Patricia Masserman, Bill Myers, Sandi Resnick, Barbara Norfleet, James Kramer, Prescott Klassen Tôi muốn nhớ nhân viên Microsoft Press công bố phiên đầu tiên: Alice Smith, Arlene Myers, Barbara Runyan, Carol Luke, Connie Little, Dean Holmes, Eric Stroo, Erin O'Connor, Jeannie McGivern, Jeff Carey, Jennifer Harris, Jennifer Vick, Judith Bloch, Katherine Erickson, Kim Eggleston, Lisa Sandburg, Lisa Theobald, Margarite Hargrave, Mike Halvorson, Pat Forgette, Peggy Herman, Ruth Pettis, Sally Brunsman, Shawn Peck, Steve Murray, Wallis Bolz, Zaafar Hasnain Nhờ nhà phê bình đóng góp đáng kể vào ấn đầu tiên: Al Corwin, Bill Kiestler, Brian Daugherty, Dave Moore, Greg Hitchcock, Hank Meuret, Jack Woolley, Joey Wyrick, Margot Page, Mike Klein, Mike Zevenbergen, Pat Forman, Peter Pathé, Robert L Glass, Tammy Forman, Tony Pisculli, Wayne Beardsley Đặc biệt cảm ơn Tony Garland để xem xét thấu đáo ông: với 12 năm nhìn lại, đánh giá cao hết cách đặc biệt Vài ngàn ý kiến đánh giá Tony thực Danh sách kiểm tra Yêu cầu 42 Kiến trúc 54 Upstream Điều kiện tiên 59 Thực tiễn xây dựng chủ yếu 69 Thiết kế Xây dựng 122 Quality Class 157 Chất lượng cao thói quen 185 Lập trình Phịng thủ 211 Các Mã giả lập trình Process 233 Xem xét chung Trong Sử dụng liệu 257 Đặt tên biến 288 Cơ liệu 316 Những cân nhắc Sử dụng kiểu liệu khơng bình thường 343 Tổ chức Straight-Line Mã 353 Sử dụng Conditionals 365 Bản lề 388 Kiểm soát cấu trúc khác thường 410 Phương pháp Bảng-Driven 429 Control-Cấu trúc vấn đề 459 Một chất lượng-Assurance Plan 476 Hiệu Pair trình 484 Kiểm tra hiệu 491 Các trường hợp kiểm tra 532 Debugging Reminders 559 Lý để Refactor 570 Tóm tắt phép tái cấu trúc 577 Refactoring Safely 584 Code-chỉnh chiến lược 607 Kỹ thuật mã chỉnh 642 Quản lý cấu hình 669 tích hợp 707 Cơng cụ lập trình 724 bố trí 773 Tự lập tài liệu Mã 780 Tốt Bình luận Kỹ thuật 816 Bảng Bảng 3-1 Chi phí trung bình Sửa Defects Dựa họ giới thiệu Phát 29 Bảng 3-2 Thực hành tốt tiêu biểu cho ba loại thường gặp dự án phần mềm 31 Bảng 3-3 Ảnh hưởng Bỏ qua Điều kiện tiên Sequential lặp lặp lại dự án 33 Bảng 3-4 Ảnh hưởng Tập trung vào điều kiện tiên Sequential lặp lặp lại dự án 34 Bảng 4-1 Tỷ lệ báo cáo cấp cao-Ngôn ngữ để Equivalent C Mã 62 Bảng 5-1 Popular Design Patterns 104 Bảng 5-2 Thiết kế hình thức Mức độ chi tiết cần thiết 116 Bảng 6-1 Các biến thể thói quen thừa kế 145 Hỗ trợ Bảng 8-1 Popular-ngôn ngữ cho Exceptions 198 Bảng 11-1 Các ví dụ tốt Tên Variable Bad 261 Bảng 11-2 tên biến dài, ngắn, Just Right 262 Bảng 11-3 ước mẫu đặt tên cho C ++ Java 277 Bảng 11-4 Sample ước đặt tên cho C 278 Bảng 11-5 Sample ước đặt tên cho Visual Basic 278 Bảng 11-6 Sample UDT cho xử lý Word 280 Bảng 11-7 Semantic Prefixes 280 Dãy Bảng 12-1 cho loại khác số nguyên 294 Bảng 13-1 Truy cập liệu toàn cầu trực tiếp thông qua truy cập Routines 341 Bảng 13-2 Parallel Nonparallel Sử dụng liệu Complex 342 Bảng 16-1 Các loại Loops 368 Bảng 19-1 Những biến đổi biểu thức logic Theo Định lý DeMorgan 436 Bảng 19-2 Các kỹ thuật Đếm thời điểm định Routine 458 Bảng 20-1 đội Ranking Mỗi Mục tiêu 469 Bảng 20-2 Defect-Detection giá 470 Bảng 20-3 Dự Defect-Detection Extreme Programming Rate 472 Bảng 21-1 So sánh hợp tác kỹ thuật Xây dựng 495 Bảng 23-1 Các ví dụ tâm lý Khỏang cách tên Variable 556 Bảng 25-1 Relative Time Execution Ngơn ngữ lập trình 600 Chi phí Bảng 25-2 Điều hành chung 601 Bảng 27-1 Kích Dự án tiêu biểu Lỗi Density 652 Bảng 27-2 Kích Dự án suất 653 Bảng 28-1 Các yếu tố ảnh hưởng Software-Dự án Effort 674 Bảng 28-2 hữu ích đo Software Development-678 Bảng 28-3 One Xem Làm lập trình Dành thời gian họ 681 Số liệu Hình 1-1 hoạt động xây dựng hiển thị bên vòng tròn màu xám Xây dựng tập trung vào việc mã hóa gỡ lỗi bao gồm thiết kế chi tiết, đơn vị kiểm tra, thử nghiệm hội nhập, hoạt động khác Hình 1-2 sách tập trung vào việc mã hóa gỡ lỗi, thiết kế chi tiết, xây dựng lập kế hoạch, kiểm tra đơn vị, tích hợp, tích hợp thử nghiệm, hoạt động khác khoảng tỷ lệ Hình 2-1 Các ẩn dụ chữ viết gợi ý trình phần mềm dựa thử nghiệm tốn lỗi thay lập kế hoạch thiết kế cẩn thận 14 Hình 2-2 Thật khó để mở rộng ẩn dụ nuôi để phát triển phần mềm cách thích hợp 15 Hình 2-3 Hình phạt cho sai lầm cấu trúc đơn giản chút thời gian số bối rối 17 Hình 2-4 cấu trúc phức tạp đòi hỏi phải lập kế hoạch cẩn thận 18 Hình 3-1 Các chi phí để sửa chữa lỗi tăng lên đáng kể thời gian từ giới thiệu đến phát tăng lên Điều cho dù Dự án đánh giá cao liên tục (làm 100 phần trăm yêu cầu thiết kế lên phía trước) cao lặp (làm phần trăm yêu cầu thiết kế lên phía trước) 30 Hình 3-2 Các hoạt động chồng lên mức độ hầu hết dự án, chí người 35 Hình 3-3 Các dự án khác, hoạt động chồng lên suốt thời gian dự án Một chìa khóa để xây dựng thành công hiểu biết mức độ mà điều kiện tiên hoàn thành điều chỉnh cách tiếp cận phù hợp 35 Hình 3-4 Định nghĩa vấn đề đặt tảng cho phần lại chương trình trình 37 Hình 3-5 Hãy chắn bạn biết bạn nhắm tới trước bạn bắn 38 Hình 3-6 Nếu khơng có u cầu tốt, bạn có vấn đề chung phải nhớ đánh dấu vào khía cạnh cụ thể vấn đề 39 Hình 3-7 Nếu khơng có kiến trúc phần mềm tốt, bạn có vấn đề giải pháp sai Nó khơng thể có xây dựng thành cơng 44 Hình 5-1 Các cầu Tacoma Narrows-một ví dụ vấn đề xấu xa 75 Hình 5-2 Các mức thiết kế chương trình Hệ thống (1) lần tổ chức thành hệ thống (2) Các hệ thống chia thành lớp học (3), lớp học chia thành thói quen liệu (4) Các bên định kỳ thiết kế (5) 82 Hình 5-3 Ví dụ hệ thống với sáu hệ thống 83 Hình 5-4 Ví dụ xảy với khơng hạn chế intersubsystem thơng tin liên lạc 83 Hình 5-5 Với vài quy tắc giao tiếp, bạn đơn giản hóa tương tác hệ thống phụ đáng kể 84 Hình 5-6 hệ thống tốn bao gồm bốn đối tượng Các đối tượng đơn giản hóa cho ví dụ 88 Hình 5-7 Abstraction cho phép bạn để có nhìn đơn giản khái niệm phức tạp 90 Hình 5-8 Encapsulation nói rằng, khơng có bạn phép có nhìn đơn giản khái niệm phức tạp, bạn khơng phép nhìn vào chi tiết khái niệm phức tạp Những bạn thấy bạn nhận được, tất bạn nhận được! 91 Hình 5-9 Một giao diện lớp học tốt đỉnh tảng băng trôi, để lại hầu hết lớp học chưa phơi sáng 93 Hình 5-10 G Polya phát triển phương pháp tiếp cận để giải vấn đề tốn học hữu ích việc giải vấn đề thiết kế phần mềm (Polya 1957) 109 Hình 8-1 Một phần Interstate-90 cầu Seattle chìm bão xe tăng bị bỏ phát hiện, họ chứa đầy nước, cầu trở nên nặng nề trôi Trong thời gian xây dựng, bảo vệ chống lại thứ nhỏ quan trọng bạn nghĩ 189 Hình 8-2 Định nghĩa số phận phần mềm làm việc với liệu bẩn số làm việc với liệu cách hiệu để làm giảm phần lớn mã trách nhiệm việc kiểm tra liệu xấu 204 Hình 9-1 Các chi tiết xây dựng lớp học khác nhau, hoạt động thường xảy Để hiển thị 216 Hình 9-2 Đây hoạt động mà vào xây dựng thói quen Họ thường thực theo thứ tự hiển thị 217 Hình 9-3 Bạn thực tất bước bạn thiết kế thói quen khơng thiết thứ tự cụ thể 225 Hình 10-1 "trực tiếp thời gian dài" có nghĩa biến trực tiếp trình báo cáo nhiều "Thời gian sống ngắn" có nghĩa sống cho vài câu "Span" đề cập đến cách gần tham chiếu đến biến 246 Hình 10-2 liệu liệu xử lý theo trật tự xác định 254 Hình 10-3 liệu chọn lọc cho phép bạn sử dụng mảnh hay khác, hai 255 Hình XXXV Hình 10-4 liệu lặp lặp lại lặp lại 255 Hình 13-1 Số lượng nhớ sử dụng loại liệu thể đơi dịng 324 Hình 13-2 Một ví dụ hình ảnh giúp suy nghĩ thơng qua bước liên quan trỏ nối liền 329 Hình 14-1 Nếu mã tổ chức tốt thành nhóm, hộp rút phần liên quan xung quanh không chồng chéo lên Họ lồng 352 Hình 14-2 Nếu mã tổ chức kém, hộp rút phần liên quan xung quanh chồng chéo lên 353 Hình 17-1 Recursion cơng cụ có giá trị chiến chống lại phức tạp, sử dụng để công vấn đề phù hợp 394 Hình 18-1 Như tên cho thấy, bảng truy cập trực tiếp cho phép bạn truy cập vào phần tử bảng bạn quan tâm trực tiếp 413 Tin nhắn hình 18-2 lưu trữ khơng có thứ tự, người xác định nhắn ID 417 Hình 18-3 Bên cạnh tin nhắn ID, loại tin nhắn có định dạng riêng 418 Hình 18-4 cịn truy cập trực tiếp, bảng truy cập mục truy cập thông qua số trung gian 425 Hình 18-5 Các phương pháp tiếp cận cầu thang bước phân loại mục cách xác định mức mà cập "cầu thang." The "bước" chạm xác định thể loại 426 Hình 19-1 Ví dụ cách sử dụng số-line đặt hàng để kiểm tra boolean 440 Hình 20-1 Tập trung vào đặc điểm bên chất lượng phần mềm ảnh hưởng khác đặc điểm tích cực, tiêu cực, khơng 466 Hình 20-2 Cả nhanh cách tiếp cận phát triển chậm sản xuất phần mềm với hầu hết khuyết tật 475 Hình 22-1 Khi kích thước dự án tăng, thử nghiệm phát triển tiêu thụ nhỏ tỷ lệ phần trăm tổng số thời gian phát triển Những ảnh hưởng kích thước chương trình mơ tả chi tiết Chương 27, "Làm Chương trình Kích thước ảnh hưởng Xây dựng "502 Hình 22-2 Khi kích thước dự án tăng, tỷ lệ sai phạm trình xây dựng giảm Dù lỗi xây dựng cho 45-75% tất lỗi trên, dự án lớn 521 Hình 23-1 Hãy thử để tái sản xuất lỗi nhiều cách khác để xác định xác gây 545 Hình 24-1 thay đổi nhỏ có xu hướng có nhiều dễ bị lỗi thay đổi lớn (Weinberg 1983) 581 Hình 24-2 Mã bạn lộn xộn giới thực lộn xộn Thai hệ thống bạn kết hợp mã lý tưởng, giao diện từ Mã lý tưởng để giới thực lộn xộn, giới thực lộn xộn 583 Hình 24-3 Một chiến lược để cải thiện mã sản xuất để cấu trúc lại di sản văn mã bạn chạm vào nó, để di chuyển sang phía bên "giao diện để giới thực lộn xộn "584 Hình 27-1 Các số lượng đường truyền làm tăng tỷ lệ thuận với bình phương số người nhóm 650 Hình 27-2 Khi kích thước dự án tăng lên, lỗi thường kèm nhiều từ yêu cầu thiết kế Đôi khi, họ chủ yếu đến từ việc xây dựng (Boehm 1981, Grady 1987, Jones 1998) 652 Hình 27-3 hoạt động xây dựng chiếm lĩnh dự án nhỏ Các dự án lớn yêu cầu kiến trúc hơn, cơng việc tích hợp thử nghiệm hệ thống để thành công Yêu cầu công việc không hiển thị sơ đồ yêu cầu nỗ lực là trực tiếp chức chương trình hoạt động khác (Albrecht 1979; Glass 1982; Boehm, Gray, Seewaldt 1984; Boddie 1987; Thẻ 1987; McGarry, Waligora, McDermott 1989; Brooks 1995; Jones năm 1998; Jones 2000; Boehm et al 2000) 654 Hình 27-4 Các số lượng công việc xây dựng phần mềm chức gần tuyến tính Quy mơ dự án Các loại tăng việc phi tuyến quy mô dự án tăng 655 Hình 28-1 Chương bao gồm chủ đề phần mềm quản lý liên quan đến xây dựng 661 Hình 28-2 Ước tính tạo sớm dự án vốn khơng xác Khi dự án vào tiến bộ, ước tính trở nên xác Reestimate kỳ suốt dự án, sử dụng bạn học hoạt động để cải thiện ước tính bạn cho hoạt động 673 Hình 29-1 Các sân vận động bóng đá add-on Đại học Washington sụp đổ khơng đủ mạnh để hỗ trợ thân q trình xây dựng Nó khả có đủ sức mạnh hồn thành, xây dựng theo thứ tự-một lỗi nhập sai 690 Hội nhập Hình 29-2 Phased gọi "vụ nổ lớn" hội nhập cho tốt lý do! 691 Hình 29-3 hội nhập Incremental giúp dự án xây dựng lực, giống cầu tuyết xuống đồi 692 Hình 29-4 Trong giai đoạn hội nhập, bạn tích hợp nhiều thành phần lúc mà thật khó để biết lỗi đâu Nó thành phần kết nối họ Trong hội nhập gia tăng, lỗi thường thành phần việc kết nối thành phần hệ thống 693 Hình 29-5 Trong top-down tích hợp, bạn có thêm lớp phía đầu, phía cuối 695 Hình 29-6 Là thay để tiến hành nghiêm ngặt xuống dưới, bạn tích hợp từ xuống lát theo chiều dọc 696 Hình 29-7 Trong hội nhập lên, bạn tích hợp lớp phía đầu tiên, phía cuối 697 Hình 29-8 Là thay để tiến hành hoàn toàn lên trên, bạn tích hợp từ lên phần Điều làm mờ ranh giới hội nhập lên tính định hướng hội nhập, mơ tả sau chương 698 Hình 29-9 Trong hội nhập sandwich, bạn tích hợp cấp cao sử dụng rộng rãi bottomlevel lớp học bạn lưu lớp trung cấp cho qua 698 Hình 29-10 Trong hội nhập rủi ro theo định hướng, bạn tích hợp lớp học mà bạn mong đợi để phiền hà đầu tiên; bạn thực lớp học dễ dàng sau 699 Hình 29-11 Trong hội nhập tính định hướng, bạn tích hợp lớp học nhóm tạo nên tính thông thường nhận dạng, ln, nhiều lớp học thời gian 700 Hình 29-12 Trong hội nhập hình chữ T, bạn xây dựng tích hợp lát sâu hệ thống để xác minh giả định kiến trúc sau bạn xây dựng tích hợp bề rộng hệ thống để cung cấp khuôn khổ cho phát triển cịn lại chức 701 Hình 34-1 Chương trình chia thành mức độ trừu tượng Một thiết kế tốt cho phép bạn phải dành nhiều thời gian bạn tập trung vào lớp bỏ qua lớp thấp 846 Chương Thiết kế Xây dựng cc2e.com/0578 Nội dung ■ Thiết kế 5.1 Những thách thức: Trang 74 ■ 5.2 Các khái niệm thiết kế chính: trang 77 ■ 5.3 Thiết kế Xây Dựng: Heuristics: trang 87 ■ 5.4 Thực hành Thiết kế: trang 110 ■ 5.5 Bình luận phương pháp ưa thích: trang 118 Chủ đề liên quan ■ Kiến trúc phần mềm: Phần 3.5 ■ lớp học làm việc: Chương ■ Đặc điểm thói quen chất lượng cao: Chương ■ Phòng thủ lập trình: Chương ■ Refactoring: Chương 24 ■ Làm kích thước chương trình ảnh hưởng đến xây dựng: Chương 27 Một số người lập luận thiết kế không thực hoạt động xây dựng, nhỏ dự án, nhiều hoạt động coi xây dựng, thường bao gồm thiết kế Trên số dự án lớn hơn, kiến trúc thức giải vấn đề hệ thống cấp nhiều công việc thiết kế cố ý để lại cho xây dựng Mở lớn khác dự án, thiết kế dự định trình bày chi tiết đủ để mã hóa khí, thiết kế mà complete-các lập trình viên thường thiết kế phần chương trình, thức hay khơng Cross-Reference Để biết chi tiết mức độ khác hình thức yêu cầu lớn dự án nhỏ, xem Chương 27, "Làm Chương trình Kích thước Ảnh hưởng đến xây dựng " On, dự án thức nhỏ, nhiều thiết kế thực lập trình viên ngồi bàn phím "Thiết kế" cần viết giao diện lớp giả trước viết chi tiết Nó vẽ sơ đồ vài mối quan hệ lớp trước mã hóa chúng Nó hỏi lập trình mà mẫu thiết kế tốt lựa chọn Bất kể thực hiện, dự án nhỏ hưởng lợi từ thiết kế cẩn thận dự án lớn làm, nhận thiết kế hoạt động rõ ràng nhằm tối đa hóa lợi ích bạn nhận từ Thiết kế chủ đề lớn, vài khía cạnh xem xét chương Một lượng lớn phần lớp học tốt, thiết kế thông thường xác định kiến trúc hệ thống, đó, chắn điều kiện tiên kiến trúc thảo luận Phần 3.5 hài lịng Cơng việc thiết kế nhiều thực cấp độ lớp học cá nhân thói quen, mơ tả Chương 6, Chương 7, "Lớp học, làm việc" "thói quen chất lượng cao." Nếu bạn quen thuộc với chủ đề thiết kế phần mềm, bạn muốn cần nhấn điểm bật phần thách thức thiết kế mục 5.1 chẩn đoán quan trọng Phần 5.3 5.1 Thiết kế thách thức Cross-Reference Sự khác biệt heuristic quy trình xác định mơ tả Chương 2, "Phép ẩn dụ cho Richer Hiểu biết phần mềm Phát triển " Các cụm từ "thiết kế phần mềm" có nghĩa quan niệm, sáng chế, bày chương trình cho biến đặc điểm kỹ thuật cho phần mềm máy tính vào phần mềm hoạt động Thiết kế hoạt động liên kết yêu cầu để mã hóa gỡ lỗi Một mục cấp đầu tốt thiết kế cung cấp cấu trúc mà cách an tồn có chứa nhiều mẫu thiết kế cấp thấp Thiết kế tốt hữu ích dự án nhỏ khơng thể thiếu dự án lớn Thiết kế đánh dấu nhiều thách thức, phác thảo phần Thiết kế vấn đề Wicked Những hình ảnh phần mềm thiết kế bắt nguồn thiết kế theo cách có lỗi hợp lý từ tuyên bố yêu cầu thực tế Không hệ thống phát triển theo cách đó, có lẽ khơng Ngay phát triển chương trình nhỏ thể sách giáo khoa giấy tờ không thật Họ sửa đổi đánh bóng tác giả có cho thấy muốn ơng làm, khơng phải thực xảy -David Parnas Paul Clements Horst RITTEL Melvin Webber xác định "độc ác" vấn đề xác định rõ ràng cách giải nó, cách giải phần (1973) Nghịch lý ngụ ý, bản, mà bạn phải "giải quyết" vấn đề lần để xác định rõ sau giải lần để tạo giải pháp mà cơng trình Q trình làm mẹ bánh táo phát triển phần mềm nhiều thập kỷ (Peters Tripp 1976) Trong phần tơi giới, ví dụ ấn tượng vấn đề xấu xa thiết kế cầu Tacoma Narrows gốc Vào thời điểm cầu xây dựng, việc xem xét việc thiết kế cầu đủ mạnh để hỗ trợ kế hoạch tải Trong trường hợp cầu Tacoma Narrows, gió tạo bất ngờ, phụ toside gợn sóng hài Một ngày thẹn năm 1940, gợn lớn khơng kiểm sốt cầu sụp đổ, thể hình 5-1 Đây ví dụ tốt vấn đề xấu xa vì, cầu bị sập, Các kỹ sư khơng biết khí động học cần phải xem xét đến mức Chỉ cách xây dựng cầu (giải vấn đề) họ tìm hiểu thêm xem xét vấn đề mà cho phép họ xây dựng cầu khác mà đứng Hình 5-1 Các cầu Tacoma Narrows-một ví dụ vấn đề xấu xa Một khác biệt chương trình bạn phát triển trường học người bạn phát triển chuyên nghiệp vấn đề thiết kế giải chương trình học khi, hết, kẻ ác Tập lập trình trường học đưa để di chuyển bạn beeline từ đầu đến cuối Bạn muốn tar lông giáo viên người cho bạn nhiệm vụ lập trình, sau thay đổi phân cơng sau bạn hồn thành thiết kế, sau thay đổi lần giống bạn để biến chương trình hồn thành Nhưng q trình thực tế hàng ngày lập trình chuyên nghiệp Thiết kế trình Sloppy (ngay Tạo Tidy) Các phần mềm thiết kế hồn thành nên hình tổ chức tốt sẽ, trình sử dụng để phát triển thiết kế gần không gọn gàng kết cuối Đọc kỹ Đối với đầy đủ thăm dò quan điểm này,xem "A Thiết kế Quy trình Rational:Làm để Fake It "(Parnas Clements1986) Thiết kế cẩu thả bạn nhiều bước sai lầm xuống nhiều alleys- mù bạn thực nhiều sai lầm Thật vậy, sai lầm điểm thiết kế rẻ để làm cho sai lầm thiết kế xác để làm cho sai lầm tương tự,nhận chúng sau mã hóa, phải sửa mã tồn diện thiết kế cẩu thả giải pháp tốt thường tinh tế khác từ người nghèo trả lời cho câu hỏi này, xem "Bao nhiêu Design Đủ? "Tại mục 5.4 sau chương Thiết kế cẩu thả thật khó để biết thiết kế bạn "đủ tốt" Bao nhiêu chi tiết đủ? Làm nhiều thiết kế nên thực với thiết kế thức ký hiệu, nên để thực bàn phím? Khi bạn thực hiện? Kể từ thiết kế kết thúc mở, câu trả lời phổ biến cho câu hỏi "Khi bạn thời gian." Thiết kế Cân ưu tiên Trong giới lý tưởng, hệ thống chạy lập tức, tiêu thụ không gian lưu trữ, sử dụng zero băng thơng mạng, khơng có lỗi nào, khơng có chi phí để xây dựng Trong thực giới, phần quan trọng công việc người thiết kế phải cân nhắc cạnh tranh đặc tính thiết kế có cân đặc điểm Nếu tỷ lệ phản ứng nhanh quan trọng hơn giảm thiểu thời gian phát triển, nhà thiết kế chọn thiết kế Nếu giảm thiểu thời gian phát triển quan trọng hơn, nhà thiết kế tốt phác thảo thiết kế khác Liên quan đến việc thiết kế hạn chế Các điểm thiết kế phần để tạo khả phần để hạn chế khả Nếu người có thời gian vô hạn, nguồn lực, không gian để xây dựng cấu trúc vật lý, bạn xem tòa nhà ngổn ngang khó tin với phịng cho giày hàng trăm phòng Đây cách mà phần mềm bật mà khơng hạn chế cố tình áp đặt Các khó khăn nguồn lực hạn chế để xây dựng tòa nhà buộc đơn giản hóa giải pháp mà cuối cải thiện giải pháp Mục đích việc thiết kế phần mềm Thiết kế không xác định Nếu bạn gửi ba người để thiết kế chương trình tương tự, họ dễ dàng trở lại với ba mẫu thiết kế khác nhau, số hồn tồn chấp nhận Đó thể có nhiều cách để da mèo, thường có hàng chục cách để thiết kế chương trình máy tính Thiết kế q trình Heuristic Bởi thiết kế khơng xác định, kỹ thuật thiết kế có xu hướng heuristics- "luật ngón tay "hay" điều phải cố gắng đơi làm việc "-rather quy trình lặp lại đảm bảo tạo kết dự đoán Thiết kế bao gồm việc thử sai Một công cụ thiết kế kỹ thuật mà làm việc tốt cơng việc khía cạnh cơng việc khơng hoạt động tốt dự án Khơng có cơng cụ phù hợp với tất thứ Thiết kế Emergent cc2e.com/0539 Một cách gọn gàng tóm tắt thuộc tính thiết kế để nói thiết kế "Cấp cứu" Kiểu dáng khơng mùa xn hồn tồn hình thành trực tiếp từ não Họ phát triển nâng cao thông qua thiết kế đánh giá, thảo luận khơng thức, kinh nghiệm viết mã riêng mình, kinh nghiệm sửa đổi mã Điểm yếu

Ngày đăng: 25/01/2022, 14:06

w