Muutke küpsiste eelistusi

E-raamat: Software Engineering: The Current Practice

(Wayne State University, Detroit, Michigan, USA)
  • Formaat - EPUB+DRM
  • Hind: 110,49 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

Software Engineering: The Current Practice teaches students basic software engineering skills and helps practitioners refresh their knowledge and explore recent developments in the field, including software changes and iterative processes of software development.

After a historical overview and an introduction to software technology and models, the book discusses the software change and its phases, including concept location, impact analysis, refactoring, actualization, and verification. It then covers the most common iterative processes: agile, directed, and centralized processes. The text also journeys through the software life span from the initial development of software from scratch to the final stages that lead toward software closedown.

For ProfessionalsThe book gives programmers and software managers a unified view of the contemporary practice of software engineering. It shows how various developments fit together and fit into the contemporary software engineering mosaic. The knowledge gained from the book allows practitioners to evaluate and improve the software engineering processes in their projects.

For InstructorsInstructors have several options for using this classroom-tested material. Designed to be run in conjunction with the lectures, ideas for student projects include open source programs that use Java or C++ and range in size from 50 to 500 thousand lines of code. These projects emphasize the role of developers in a classroom-tailored version of the directed iterative process (DIP).

For StudentsStudents gain a real understanding of software engineering processes through the lectures and projects. They acquire hands-on experience with software of the size and quality comparable to that of industrial software. As is the case in the industry, students work in teams but have individual assignments and accountability.

Arvustused

" a great read this [ is] an entirely different approach to teaching software engineering and it could really help students (and practitioners) understand recent advances in software engineering and become better software engineers. this book explains software engineering not from a constructionist point of view, but from a change/maintenance perspective, meaning most of the time you need to read/analyze programs rather than write them (though there is plenty of material in the book to support green field development)." Will Tracz, ACM SIGSOFT Software Engineering Notes, November 2013

Preface xv
Acknowledgments xxi
Author xxiii
SECTION I INTRODUCTION
1 History of Software Engineering
3(16)
Objectives
3(1)
1.1 Software Properties
4(4)
1.1.1 Complexity
4(1)
1.1.2 Invisibility
5(1)
1.1.3 Changeability
6(1)
1.1.4 Conformity
6(1)
1.1.5 Discontinuity
6(1)
1.1.6 Some Accidental Properties
7(1)
1.2 Origins of Software
8(1)
1.3 Birth of Software Engineering
9(3)
1.3.1 Waterfall
10(2)
1.4 Third Paradigm: Iterative Approach
12(3)
1.4.1 Software Engineering Paradigms Today
14(1)
Summary
15(1)
Further Reading and Topics
15(2)
References
17(2)
2 Software Life Span Models
19(12)
Objectives
19(1)
2.1 Staged Model
20(2)
2.1.1 Initial Development
20(1)
2.1.2 Evolution
21(1)
2.1.3 Final Stages of Software Life Span
21(1)
2.2 Variants of Staged Model
22(3)
Summary
25(1)
Further Reading and Topics
26(3)
References
29(2)
3 Software Technologies
31(18)
Objectives
31(1)
3.1 Programming Languages and Compilers
32(2)
3.2 Object-Oriented Technology
34(6)
3.2.1 Objects
34(1)
3.2.2 Classes
35(2)
3.2.3 Part-Of Relationship
37(1)
3.2.4 Is-A Relationship
37(2)
3.2.5 Polymorphism
39(1)
3.3 Version Control System
40(3)
3.3.1 Commit
41(2)
3.3.2 Build
43(1)
Summary
43(1)
Further Reading and Topics
44(2)
References
46(3)
4 Software Models
49(20)
Objectives
49(1)
4.1 UML Class Diagrams
50(4)
4.1.1 Class Diagram Basics
51(3)
4.2 UML Activity Diagrams
54(4)
4.3 Class Dependency Graphs and Contracts
58(4)
Summary
62(1)
Further Reading and Topics
62(3)
References
65(4)
SECTION II SOFTWARE CHANGE
5 Introduction to Software Change
69(18)
Objectives
69(1)
5.1 Characteristics of Software Change
69(5)
5.1.1 Purpose
70(1)
5.1.2 Impact on Functionality
71(1)
5.1.3 Impact of the Change
72(1)
5.1.4 Strategy
73(1)
5.1.5 Forms of the Changing Code
73(1)
5.2 Phases of Software Change
74(2)
5.3 Requirements and Their Elicitation
76(2)
5.4 Requirements Analysis and Change Initiation
78(4)
5.4.1 Resolving Inconsistencies
78(1)
5.4.2 Prioritization
79(2)
5.4.3 Change Initiation
81(1)
Summary
82(1)
Further Reading and Topics
82(2)
References
84(3)
6 Concepts and Concept Location
87(18)
Objectives
87(1)
6.1 Concepts
88(2)
6.2 Concept Location Is a Search
90(3)
6.3 Extraction of Significant Concepts (ESC)
93(1)
6.4 Concept Location by Grep
94(1)
6.5 Concept Location by Dependency Search
95(6)
6.5.1 Example Violet
97(3)
6.5.2 An Interactive Tool Supporting Dependency Search
100(1)
Summary
101(1)
Further Reading and Topics
101(2)
References
103(2)
7 Impact Analysis
105(20)
Objectives
105(1)
7.1 Impact Set
106(3)
7.1.1 Example: Point-of-Sale Software Program
108(1)
7.2 Class Interaction Graphs
109(3)
7.2.1 Interactions Caused by Dependencies
109(1)
7.2.2 Interactions Caused by Coordinations
110(1)
7.2.3 Definition of Class Interaction Graph
111(1)
7.3 Process of Impact Analysis
112(3)
7.4 Propagating Classes
115(1)
7.5 Alternatives in Software Change
116(1)
7.6 Tool Support for Impact Analysis
117(1)
Summary
118(1)
Further Reading and Topics
119(2)
References
121(4)
8 Actualization
125(14)
Objectives
125(1)
8.1 Small Changes
126(1)
8.2 Changes Requiring New Classes
127(6)
8.2.1 Incorporating New Classes Through Polymorphism
127(1)
8.2.2 Incorporating New Suppliers
128(2)
8.2.3 Incorporating New Clients
130(1)
8.2.4 Incorporation Through a Replacement
131(2)
8.3 Change Propagation
133(2)
Summary
135(1)
Further Reading and Topics
135(2)
References
137(2)
9 Refactoring
139(14)
Objectives
139(2)
9.1 Extract Function
141(2)
9.2 Extract Base Class
143(2)
9.3 Extract Component Class
145(3)
9.4 Prefactoring and Postfactoring
148(1)
Summary
149(1)
Further Reading and Topics
149(2)
References
151(2)
10 Verification
153(16)
Objectives
153(1)
10.1 Testing Strategies
154(2)
10.2 Unit Testing
156(3)
10.2.1 Testing Composite Responsibility
156(2)
10.2.2 Testing the Local Responsibility
158(1)
10.2.3 Test-Driven Development
159(1)
10.3 Functional Testing
159(1)
10.4 Structural Testing
160(1)
10.5 Regression and System Testing
161(1)
10.6 Code Inspection
162(2)
Summary
164(1)
Further Reading and Topics
164(4)
References
168(1)
11 Conclusion of Software Change
169(10)
Objectives
169(1)
11.1 Build Process and New Baseline
170(2)
11.2 Preparing for Future Changes
172(1)
11.3 New Release
173(1)
Summary
174(1)
Further Reading and Topics
174(1)
References
175(4)
SECTION III SOFTWARE PROCESSES
12 Introduction to Software Processes
179(18)
Objectives
179(1)
12.1 Characteristics of Software Processes
180(1)
12.1.1 Granularity
180(1)
12.1.2 Forms of the Process
181(1)
12.1.3 Stage and Team Organization
181(1)
12.2 Solo Iterative Process (SIP)
181(2)
12.3 Enacting and Measuring SIP
183(4)
12.3.1 Time
185(1)
12.3.2 Code Size
186(1)
12.3.3 Code Defects
186(1)
12.4 Planning in SIP
187(5)
12.4.1 Planning the Software Changes
188(1)
12.4.2 Task Determination
189(1)
12.4.3 Planning the Baselines and Releases
190(2)
Summary
192(1)
Further Reading and Topics
193(2)
References
195(2)
13 Team Iterative Processes
197(18)
Objectives
197(1)
13.1 Agile Iterative Process (AIP)
198(5)
13.1.1 Daily Loop
199(1)
13.1.2 Iteration Planning
199(1)
13.1.3 Iteration Process
200(3)
13.1.4 Iteration Review
203(1)
13.2 Directed Iterative Process (DIP)
203(3)
13.2.1 DIP Stakeholders
204(1)
13.2.2 DIP Process
205(1)
13.3 Centralized Iterative Process (CIP)
206(2)
Summary
208(1)
Further Reading and Topics
209(4)
References
213(2)
14 Initial Development
215(18)
Objectives
215(1)
14.1 Software Plan
216(2)
14.1.1 Overview
216(1)
14.1.2 Reference Materials
217(1)
14.1.3 Definitions and Acronyms
217(1)
14.1.4 Process
217(1)
14.1.5 Organization
217(1)
14.1.6 Technologies
218(1)
14.1.7 Management
218(1)
14.1.8 Cost
218(1)
14.2 Initial Product Backlog
218(2)
14.2.1 Requirements Elicitation
218(1)
14.2.2 Scope of the Initial Development
219(1)
14.3 Design
220(4)
14.3.1 Finding the Classes by ESC
221(1)
14.3.2 Assigning the Responsibilities
221(1)
14.3.3 Finding Class Relations
221(1)
14.3.4 Inspecting and Refactoring the Design
222(1)
14.3.5 CRC Cards
222(1)
14.3.6 Design of Phone Directory
223(1)
14.4 Implementation
224(5)
14.4.1 Bottom-Up Implementation
225(2)
14.4.2 Code Generation from Design
227(2)
14.5 Team Organizations for Initial Development
229(1)
14.5.1 Transfer from Initial Development to Evolution
229(1)
Summary
230(1)
Further Reading and Topics
230(1)
References
231(2)
15 Final Stages
233(16)
Objectives
233(1)
15.1 End of Software Evolution
234(2)
15.1.1 Software Stabilization
234(1)
15.1.2 Code Decay
234(1)
15.1.3 Cultural Change
235(1)
15.1.4 Business Decision
236(1)
15.2 Servicing
236(2)
15.3 Phaseout and Closedown
238(1)
15.4 Reengineering
238(5)
15.4.1 Whole-Scale Reengineering
240(1)
15.4.2 Iterative Reengineering and Heterogeneous Systems
241(2)
Summary
243(1)
Further Reading and Topics
243(2)
References
245(4)
SECTION IV CONCLUSION
16 Related Topics
249(10)
Objectives
249(1)
16.1 Other Computing Disciplines
249(2)
16.1.1 Computer Engineering
250(1)
16.1.2 Computer Science
250(1)
16.1.3 Information Systems
251(1)
16.2 Professional Ethics
251(2)
16.2.1 Computer Crime
251(1)
16.2.2 Computer Ethical Codes
251(1)
16.2.3 Information Diversion and Misuse
252(1)
16.3 Software Management
253(1)
16.3.1 Process Management
254(1)
16.3.2 Product Management
254(1)
16.4 Software Ergonomics
254(2)
16.5 Software Engineering Research
256(1)
Summary
256(1)
References
257(2)
17 Example of Software Change
259(10)
Objectives
259(1)
17.1 Concept Location
260(3)
17.2 Impact Analysis
263(1)
17.3 Actualization
263(1)
17.4 Testing
264(2)
Summary
266(1)
Further Reading and Topics
266(1)
References
267(2)
18 Example of Solo Iterative Process (SIP)
269(14)
Objectives
269(1)
18.1 Initial Development
269(3)
18.1.1 Project Plan
270(1)
18.1.2 Requirements
270(1)
18.1.3 Initial Design
271(1)
18.1.4 Implementation
272(1)
18.2 Iteration 1
272(6)
18.2.1 Expand Inventory to Support Multiple Items
273(2)
18.2.2 Support Multiple Prices with Effective Dates
275(1)
18.2.3 Support the Log-In of a Single Cashier
275(1)
18.2.4 Support Multiple Cashiers
276(2)
18.3 Iteration 2
278(1)
Summary
279(1)
Further Reading and Topics
280(1)
References
281(2)
Index 283
Václav Rajlich is a professor and former chair of computer science at Wayne State University. Dr. Rajlich is an editorial board member of the Journal of Software Maintenance and Evolution and the founder and permanent steering committee member of the IEEE International Conference on Program Comprehension (ICPC). His research focuses on software evolution and comprehension.