You are on page 1of 1

Đa dụng,đa mục đích, dành cho người dùng phổ thông, ví dụ:

MS Office, Browser, Game...


Generic procducts
Specificationđến từ chính công ty phần mềm

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

Specificationđến từ khách hàng

Stand-aloneapplications 2. Phân loại phần mềm


Interactive transaction-basedapplications

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?

Có thể bao gồm thêmOperations/Procedures:


Quy trình, thao tác vận hành phần mềm trong doanh nghiệp

SoftwareSpecification

SoftwareDevelopment Software Development Life Cycle (SDLC)


The fundamental software engineering activities
vòng đời phát triển phần mềm qua 4 công đoạn chính
SoftwareValidation [xem chi tiết mục 6] Các công việc cơ bản khi làm phần mềm

SoftwareEvolution

Plan-drivenmethods: water-fall model


Trình tự, kĩ thuật phối hợp 4 giai đoạnSPEC, VALID, DEV, EVOL
Iterativeandincrementalmethods: Agile model (SCRUM, XP...), RUP The software process - Quy trình làm phần mềm
để ra được phần mềm
Trộn (mixed)cả 2 methods trên: Spiral

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

System engineering (bao hàm Software engineering.):


Software engineering
làm phần mềm, đề cập phần cứng, thiết bị/hardware, vs. System engineering?
quy trình (process) và con người vận hành phần mềm

Computer Aided Software Engineeringtools


(phần mềm trợ giúp việc làm phần mềm)

Các công cụ, phần mềm được sử dụng để CASE tools


trợ giúpquá trình thiết kế và phát triển các phần mềm, ví dụ:
IDEs, Diagram tools, Document tools, các phần mềm Quản lí dự án,
Version Control System...

Coming soon...
6.4. EVOLUTION
Coming soon...

To check that the softwaremeets its requirements


Validation testing
Kiểm thử để xác nhận rằng phần mềm phù hợp để sử dụng
Using a given set oftest casesthat reflect the system’sexpected use

Discover situations in which thebehaviorof the software is incorrect,


Defect testing
undesirable or does notconformto its specification
Kiểm thử để tìm ra những khiếm khuyết/sai sót/defects Testing goals
tồn tại trong phần mềm Mục tiêu của Testing
Thetest cases are designed to exposedefects

"Are we building theproduct right”


Verification
The software shouldconformto its specification
Verification & Validation
"Are we building theright product” Confidentiality:bảo mật thông tin của công ty và khách hàng
Validation
The software should do what the userreally requires Competence:"chém gió" về năng lực thực sự
Analysisof thestaticsystemrepresentation to discover problems
Software inspections/Static testing Intellectual property rights:sở hữu trí tuệ/bản quyền
Test tĩnh
Phân tích các tài liệucủa dự án vàphân tích codeđể tìm ra khiếm khuyết
Testing techniques
The system isexecutedwithtest dataand itsoperational behaviouris observed Các kĩ thuật Testing Computer misuse:sử dụng tài nguyên công ty sai mục đích
Software testing/Dynamic tesing 3. Software engineering ethics
Test động PUBLIC:với cộng đồng thì...
Chạy phần mềm, đưadữ liệu"giả" vào để xem cách phần mềmvận hành (đạo đức nghề nghiệp khi ta là kĩ sư phần mềm)
Individual programunitsorobjectclassesare tested CLIENT AND EMPLOYER:với khách hàng và ông chủ thì...
ACM/IEEE Code of Ethics:
Unit testing
Focus on testing thefunctionalityof objects or methods. Bộ quy tắc hành nghề do hiệp hội nghề nghiệp đưa ra. PRODUCT:với sản phẩm mình làm ra thì...
Bộ quy tắc nói rằng, bạn là Kĩ sư phần mềm, bạn cần hành xử với ...
Several individual units areintegratedto createcomposite components COLLEAGUES:với đồng nghiệp thì...
Component testing
Focus on testingcomponent interfaces SELF:với chính mình thì...

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

Microservices Thuộc nhánh Iterative & Incremental methodology

Commercial Off-The-Shelf (COTS) Còn gọi là nhánhRAD (Rapid Application Development):


ensure faster product delivery, ra sản phẩm nhanh
The software or hardware products that areready-madeandavailableforsaleto thegeneral public
Buy Specification, design and implementation areinter-leaved
Mua đồ có sẵn trên thị trường về triển khai cho khách hàng
Ví dụ: Microsoft Office, Dynamic, SAP ERP is aCOTSproduct that is apackaged software solution (đóng gói sẵn)for businesses Đặc điểm chung (3 giai đoạn diễn ra đan xen, song song nhau)

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

The Observer pattern LEAN


Design patterns
Tell several objects that the state of some other object has changed
Sử dụng các mẫu thiết kế có sẵn (code mẫu) Các khái niệm User requirements: are expressed asscenariosoruser stories
Build eXtreme Programming (XP)
Façade pattern Tự viết code và có sử dụng thêm "đồ chơi" Mô hình vận hành
Tidy up the interfaces to a number of related objects that have often been developed incrementally
Phân loại An informal,natural languagedescription of one or
Iterator pattern Các mô hình cụ thể more features of a software system from an enduser perspective
23 mẫu thiết kế nổi tiếng
Provide a standard way of accessing the elements in a collection, irrespective of how that collection is implemented User Story
Typically follow a simpletemplate:As a < type of user >,
Decorator pattern
I want < some goal > so that < some reason >
Allow for the possibility of extending the functionality of an existing class at run-time
Các khái niệm
User Story Estimation
...
Ước lượng độ phức tạp của User Story
In which thesource codeof a software systemispublished SCRUM(chi tiết bổ sung sau...)
...
Volunteersare invited toparticipatein the development process
Mô hình vận hành
Khái niệm
Create acommunity of usersfor the software
Xác địnhWHAT: phần mềm/hệ thống sẽ làm gì cho người dùng?
Selling supportfor that product Open source development 6.1. Giai đoạn 1: SPECIFICATION
Sử dụng mã nguồn mở Xác địnhCONSTRAINTS: chất lượng, "trải nghiệm" khi "xài" phần mềm/hệ thống
The GNU General Public License (GPL)
Giấy phép sử dụng mã nguồn/source code Softwaredesign
The GNU Lesser General Public License (LGPL)
License models 6.2. Giai đoạn 2: DEVELOPMENT
Softwareimplementation
The Berkley Standard Distribution (BSD) License
6. Chi tiết các công đoạn làm phần mềm
Verification: check if system conforms to its specification
Abstraction Re-use level [xem chi tiết ở các mục 6.x bên trái] 6.3. Giai đoạn 3: VALIDATION
Tái sử dụng ý tưởng, thiết kế Validation: check if system meets the requirements of the system customer
ví dụ: sử dụngdesign patterns

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...

Configuration management (CM)is concerned with the policies,


Khái niệm
processes and tools formanaging changingsoftware systems

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

Git, JIRA, Jenkins, Azure...

Development platform
máy developer có đủ "đồ chơi"

The execution platform


Host-target development
máy khách hàng không có đủ "đồ chơi" dùng để chạy app
Máy khách hàng khác máy lập trình viên
Cần cácbộ cài đặt,đóng góiapp + môi trường để đủ vận hành app trên máy khách hàng, máy đích/target

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

WHATthe system must do:


phần mềm cung cấp tính năng gì giúp khách hàng/người dùng làm công việc của họ, ví dụ
lưu hồ sơ nhân sự, tính lương, thống kê doanh thu...
Định nghĩa về Requirements
QUALITY/CHARACTERISTIC
chất lượng, trải nghiệm, các ràng buộc cần có khi làm, khi xài phần mềm, ví dụ:
phân quyền, bảo mật, dễ sử dụng, nhỏ gọn...

Đặc điểm:
Requirements willchangeover time as project moves
from analysis to design to implementation

Câu phát biểungắn gọn, mong ước của người dùng,


góc nhìn người dùng vềtính năngmà phần mềm cần cung cấp

Phát biểu dưới dạngVERB, động từ


User Requirements
Tương đươngUSER STORYbên Agile

Ví dụ: Software Requirements


Tôi muốn app. cho xem các trạng thái đơn hàng Định nghĩa về "Yêu cầu của khách hàng về phần mềm"
App cần gợi ý mặt hàng đang bán chạy

Câu phát biểuchi tiếtvềnhững gì cần cài đặt,


nhữngtính năng chi tiếtmà phần mềm sẽ cung cấp cho khách hàng

Góc nhìnhệ thống, góc nhìn dev

Phát biểu dưới dạngVERB, động từ

MộtUSER REQsẽ được chi tiết thành nhiềuSYSTEM REQs


Khái niệm
Ví dụ:
USER REQ: Phân loại Requirements (REQs)
Hàng tháng hệ thống cần generate các báo cáo dùng cho quản trị (management reports) trong thực tế, ranh giới giữa các loại REQs không hẳn rõ ràng
SYSTEM REQstương ứng: (not clear-cut)
Hàng tháng hệ thống phát sinh ra các báo cáo về doanh thu tổng, doanh thu theo nhóm hàng
Ngày cuối tháng, hệ thống phát sinh ra báo cáo doanh thu tính theo từng chi nhánh
6.1. SPECIFICATION
System Requirements
...

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

Describe why the organization is undertaking the projec


Business Requirements
Business Requirements are high-level needs or want of an organization
(e.g. business goals, objectives and needs)
which allows the business to achieve its objectives, vision, and goals

The requirements elicitation and analysis process

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

Cấu trúc cơ bản của một SRS


SRS (Software Requirements Specification)
Reader of SRS Bản đặc tả yêu cầu phần mềm
Ai sẽ là độc giả của Requirements Document

...

Use Case Diagram


Mô hình tình huống sử dụng

You might also like