Professional Documents
Culture Documents
Giao Lang SWE102 Cheat Sheet - 19.1030.22
Giao Lang SWE102 Cheat Sheet - 19.1030.22
Còn gọi là phần mềm thương mại, bán, download sẵn trên thị trường
Phân loại theo nguồn gốc của SPEC
Độ riêng,thửa riêng, viết theo đặt hàng của khách hàng,
cho một nhu cầu riêng, ví dụ:
Quản lí không lưu, ngân hàng, giao thông... Customized/Bespoke products
Embeddedcontrol systems
Batchprocessing systems
Phân loại theo tính năng phần mềm,
Entertainmentsystems môi trường sử dụng
Systems formodelingandsimulation
Data collectionsystems
Systems ofsystems
Computer programs:
chương trình máy tính (code và file thực thi)
Associated documentation:
What
các bản thiết kế, tài liệu,...sinh ra trong quá trình làm dự án phần mềm is software?
SoftwareSpecification
SoftwareEvolution
Acceptability/Required functionality
Performance/Efficiency
Phần mềm tốt có đặc điểm gì?
Maintainability
1. Thuật ngữ chung (terminologies)
Dependability and security
An engineeringdiscipline
What is software engineering?
Concerned with allaspectsof software production
Computer science:
theoryand fundamentals
Software engineering
Software engineering: vs. Computer science
practicalitiesof developing and delivering useful software
Software engineering:
chỉ bàn về làm phần mềm
Coming soon...
6.4. EVOLUTION
Coming soon...
Some or all of the components in a system areintegrated Ethical dilemmas:tình huống khó xử -> sếp yêu cầu release sản phẩm dù ta biết vẫn còn tiềm ẩn vài"crictical issues"
Development testing
The system is tested asa whole thực hiện bởi developer
System testing Định nghĩa:The process activities are planned in advance
Focus on testingcomponent interactions Kế hoạch được định trước và chạy theo kế hoạch đó
Should focus on discoveringbugsin the system (defect testing) Các giai đoạn chính:
Requirements analysis and definition
Inter-leavetestingandcodedevelopment 6.3. VALIDATION Plan-driven methods System and software design
Implementation and unit testing
Develop codeincrementally, along with atestfor that increment
Test Driven Development (TDD) Integration and system testing
Operation and maintenance
As part ofAgilemethods such as Extreme Programming, SCRUM
The waterfall model
Dùng trong dự án lớn mà dễ chia thành module, vớirequirments rõ ràng
Release testing isa form ofsystem testing
Các mức độ test
Xong giai đoạn nàymới sanggiai đoạn kế tiếp
To check that the systemmeetsits requirements and is good enough forexternal use(validation testing) Test levels
Release testing Difficultto respond to changing customer requirements
Usually ablack-boxtesting process where tests are only derived from thesystem specification
thực hiện bởi QC/Tester
Changes will befairlylimited during the design process.
Testperformanceandreliability
Non-functional Testing
involves testing theemergent propertiesof a system The planning isincrementaland it is easier to change the process
A series of tests where theloadis steadily increased until the systemperformancebecomes unacceptable to reflectchangingcustomer requirements
Kế hoạch linh hoạt, "nương theo" sự thay đổi yêu cầu từ khách hàng
Usersorcustomersprovide input and advice on system testing
Rapid deliveryand deployment of useful software to the customer
Usertestingis essential Khái niệm:
Customerfeedback
Influence from theuser’s working environmenthave a major effect on the reliability, User testing
performance, usability and robustness of a system Test được thực hiện giống như môi trường dùng thực Accommodatingchangingcustomer requirements
Usersof the software work with thedevelopment team Process is not visible, system structure tends todegradeas new increments are added
Alpha testing
to test the software at thedeveloper’s site
Phân loại SCRUM
Areleaseof the software is madeavailableto users Beta testing
XP
Customerstest a system todecidewhether or not it is ready to be accepted
Acceptance testing Agile
[xem chi tiết mục 5]
Kanban
Identifygroups ofinputs that havecommon characteristicsand should be processed in thesame way
Partition testing Iterative, incremental methods
Phân vùng tương đương LEAN
Choose tests from withineachof thesegroups
Testing Strategies Dynamic perspective: các pha/giai đoạn/phase làm phần mềm
Use testingguidelinesto choose test cases
Guideline-based testing
Các cách thiết kế kiểm thử 3 góc nhìn về quá trình làm phần mềmStatic perspective: các công việc/activities cần làm
Dùng kinh nghiệm của Tester
Guidelinesreflect previousexperienceof the kinds of errors that programmersoften make when developing components
Practice perspective: cái lời khuyên - good practices
...
Inception
Developingabstract modelsof a system
Elaboration
Các models phổ biến trong nhánh này 4 pha/giai đoạn/phases để làm phần mềm
Representinga system using some kind ofgraphical notation 4. Quy trình làm phần mềm - Software Processes
which is now almost always based on notations in theUnified Modeling Language (UML) Construction
RUP
Kĩ thuật phối hợp 4 công đoạn: SPEC | DEV | VALID | EVOL
Helping the analyst tounderstandthefunctionalityof the system Transition
Mục đích của việc vẽ các mô hình
Modelsare used tocommunicatewith customers RUP iteration:mỗi pha là 1 vòng lặp. Đi hết pha 1 đến 4 lặp lại pha 1. RUP là incremental
Helping to explain theproposed requirementsto other system stakeholders Các công việc cần làm: Business modelling; Requirements; Analysis and design;
Implementation; Testing; Deployment; Configuration and change management; Project management; Environment
Engineers use these models todiscuss design proposalsand todocumentthe system for implementation
Các lời khuyên: Develop software iteratively, Manage requirements...
Chủ yếu dùng sơ đồUse case diagramcủa UML
Combineiterative development and waterfall model
Model thecontextorenvironmentof the systemConceptual View/Use Case View/Context View System modeling Spiral (đồng thời thuộc về Plan-driven methods)
4 giai đoạn:Objective setting; Risk assessment and reduction; Development and validation; Planning
Show theinteractionsbetween asystemand itsenvironment
Mô hình hóa hệ thống
Introducing therisk-drivenapproach to development
Which showshow,at runtime, the system is composed ofinteracting processes
Lí do của thay đổi:Business changes, New technologies open up, Changing platforms
Activity diagrams: which show theactivitiesinvolved in aprocessor indata processing
Hệ quả:rework; tăng chi phí (chi phí chỉnh sửa, chi phí thêm tính năng mới)
Process View/Interaction perspective
Sequence diagrams: which showinteractions
betweenactorsand thesystemand betweensystem components
4 + 1 view model Change avoidance/anticipate possible changes:
State diagrams: which showhowthe systemreactsto internal and externalevents Các góc nhìn về phần mềm trước và trong khi xây dựng prototyping, làm bản mẫu để dò/đoán định trước ý định thay đổi
Coping with change Chiến lược Reducing the costs of rework
Show thebreakdownof the software intocomponentsthat are
Development View
Introduction to Software EngineeringCheat Sheet - Tóm lược kiến thức Đối diện với sự thay đổi trong quá trình làm phần mềm Change tolerance/changes can be accommodated at relatively low cost
implemented by a single developer or development team sử dụng incremental development, tích hợp thay đổi vào từng phiên bản đủ nhỏ
Show the systemhardwareand how software components aredistributedacrossthe processors in the system Todemonstrate concepts, requirements engineering, explore UI design
Version. 19.1030.21
Physical View
Useful for systems engineers planning asystem deployment Throw-away prototyping:không dùng tiếp prototype cho phần cài đặt, hiện thực
© 2019 giáo-làng. https://github.com/doit-now | fb/giao.lang.bis Software prototyping
Phân loại
Tài liệu tham khảo làm bản phác thảo, bản mẫu,
Which shows the keyabstractionsin the system asobjectsorobject classes Evolutionary prototyping:bản mẫu sẽ được dùng tiếp để hiện thực, phát triển phần mềm
Giáo trình Software Engineering (10th Edition). Ian Sommerville. 2016, và hơn 500 URL trên Internet. an initial version
Logical View Đa tạ, đa tạ bá tánh gần xa
Class diagrams: which show theobject classesin the system and theassociationsbetween these classes Vài tool tiêu biểu hỗ trợ prototyping, còn gọi là
Justinmind, Adobe XD, Balsamiq...
wireframes, mockups and prototypes
Identifying thesub-systemsmaking up a system and theframeworkfor sub-systemcontrolandcommunicationis architectural design
Định nghĩa về kiến trúc phần mềm Mua sản phẩm có sẵn về triển khai cho khách hàng
Represent thelinkbetweenspecificationanddesign processes COTS(Commercial-off-the-shelf)
Patterns are a means ofrepresenting,sharingandreusing knowledge Tích hợp,sử dụngcác thư viện/components, framework, web services
Định nghĩa về các mẫu kiến trúc sẵn có Architectural Design focuses on
Is astylized descriptionofgood design practice, which has beentriedandtestedin different environments Chọn lựa/thiết kế kiến trúc/dàn khung phần mềm Configuring the existent components for use in a new setting and integrating them
into a system
Model-View-Controller (MVC) Reuse-oriented software engineering (tái sử dụng)
Architectural Patterns
Component analysis
Các kiến trúc phần mềm sẵn có
Ví dụ: sử dụng trong hệ thống thư việnLayered architecture Requirements modification
Cácgiai đoạnre-use
System design with reuse
Ví dụ: sử dụng trong kiến trúc các IDERepository architecture Development and integration
Phân loại
Client-server architecture Component-based
software engineering
Ví dụ: sử dụng trong quy trình theo dõi đơn hàng
Pipe and filter architecture
Design process becomes concerned withhow to usetheconfiguration featuresof that system to deliver the system requirements Aseriesof versions
Công việc chính làcấuhình lại phần mềmcho phù hợp nhu cầu withstakeholders involvedin versionevaluation
and reduce overheads of the process
Use Case Digram/Block DiagramDefinethecontextandmodesofuse of the system
(e.g. limitting documentation)
Component Diagram Designthesystem architecture
Kinh thánh, tuyên ngôn (Agile Manifestor)
Class Diagram Identifytheprincipal system objects https://agilemanifesto.org/
Component Diagram Object-oriented design using the UML 12 điều răn (Agile Principles)
https://agilemanifesto.org/principles.html
Sequence Diagram Develop design models
Implementation 6.2. DEVELOPMENT Áp dụngsmallormedium-sizedproduct
State Machine Diagram Viết code, hiện thực hóa hệ thống
5. Làm phần mềm theo Agile Hữu dụng khi User Requirements chưa rõ ràng (un-clear)
Interface(in OOP) design is concerned withspecifyingthe detail of the interface to an
Specify object interfaces
object or to a group of objects
Thuận lợi và khó khăn Scalingagile methods to large systems is an issue
Is a way ofreusing abstract knowledgeabout aproblemand itssolution
Customers involved?
A description of theproblemand the essence of itssolution
Khái niệm ...
The book:Design Patterns:
Elements of Reusable Object-Oriented Software, GOF Kanban
Component re-use level 6.4. Giai đoạn 4: EVOLUTION Change existing software systems tomeet new requirements
Re-use
Tái sử dụng các đối tượng, thư viện có sẵn
Tái sử dụng thay vì phải viết từ đầu
ví dụ: OpenCV, CKEditor... Note: Với Agile, giai đoạn 1, 2, 3 gộp chung, inter-leaved
Re-use at System level
Sử dụng mã nguồn của cả một app có trước đó
ví dụ: WordPress, Odoo...
Change Control Board (CCB - Ban chuyên trách quản lí các sự thay đổi) Change management
responsible formaking decisionsabout how a software system should evolve
Quản lí sự thay đổi yêu cầu phần mềm
Version management
Git: GitHub, GitLab, BitBucket...
Quản lí các phiên bản code Implementation issues
Các loại thay đổi trong dự án phần mềm Configuration Management
System building Các vấn đề liên quan đến phần hiện thực/viết code
Quản lí sự thay đổi trong dự án
Quản lí các build
Release management
Quản lí các build đã bàn giao cho khách hàng
CI/CD/DevOps
Development platform
máy developer có đủ "đồ chơi"
Tools:Install ShieldhoặcDocker...
Customer:
người trả tiền để có phần mềm
(có khi họ không xài trực tiếp, mà "lính" xài
User, End-user:
người dùng cuối, người trực tiếp xài phần mềm
(cũng có thể là người trả tiền luôn)
System-user:
Khái niệm chung về giai đoạn
người dùng bên phía khách hàng hiểu nhu cầu của khách hàng
có mức độ am hiểu sâu hơn về phần mềm, cách nó vận hành
Stakeholder
bất cứ ai tham gia vào một dự án cụ thể, ví dụ:
Dev, Tester, PM, BA, Scrum Master, khách hàng, người dùng, nhà đầu tư...
thườngta hay nghĩstakeholder là phía khách hàng
Là một câu phát biểu từ khách hàng (a statement), từ tổng quát đến chi tiết
gồm 1 trong 2 vế:WHATvàQUALITY/CHARACTERISTIC
Đặc điểm:
Requirements willchangeover time as project moves
from analysis to design to implementation
Functional requirements
Yêu cầu chức năng
Non-functional requirements
Yêu cầu phi chức năng Phân loại
Domain requirements
Ví dụ: Mức giảm trừ gia cảnh cho bản thân người nộp thuế: 9.000.000 đồng/tháng
Yêu cầu của lĩnh vực chuyên
... ngành nơi app. sẽ được chạy
Interviewing
Scenarios
Use cases
Ethnography/Observation
Questionaire/Survey Các kĩ thuật làm việc với khách hàng Requirements Engineerings
Các kĩ thuật lấy yêu cầu từ khách hàng
Group Session
Document Collection
Prototyping
...
Requirements validation
Đánh giá chất lượng requirements
Có thể viết tự do hoặc viết theo định dạng chuẩn IEEE 830
...