Software Engineering

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

The new edition of Software Engineering presents a step-by-step methodology that integrates Modeling and Design, UML, Patterns, Test-Driven Development, Quality Assurance, Configuration Management, and Agile Principles throughout the life cycle. The overall approach is casual and easy to follow, with many practical examples that show the theory at work. The author uses his experiences as well as real-world stories to help the reader understand software design principles, patterns, and other software engineering concepts. The book also provides stimulating exercises that go far beyond the type of question that can be answered by simply copying portions of the text. Many people do not know the scope and usefulness of software engineering, and the discipline is often misunderstood. Many media outlets deem software engineering as writing Java programs. Some students think that software engineering includes everything related to software. Others think that software engineering is drawing UML diagrams, as the following story illustrates. Years ago, after the first class of a software engineering course, a student told me, “professor, you know that this will be an easy course for me because we’ve drawn lots of UML diagrams before.” At the end of the semester, the student came to me again and said, “professor, I want to tell you that we worked very hard, but we learned a lot about OO design. It is not just drawing UML diagrams.” So what is software engineering? As a discipline, it encompasses research, education, and application of engineering processes, methodologies, quality assurance, and project management to significantly increase software productivity and software quality while reducing software cost and time to market. A software process describes the phases and what should be done in each phase. It does not specify (in detail) how to perform the activities in each phase. A modeling language, such as UML, defines the notations, syntax, and semantics for communicating and documenting analysis and design ideas. UML and the Unified Process (UP) are good and necessary but not sufficient. This is because how to produce the analysis and design ideas required to draw meaningful UML diagrams is missing. To fill the gap mentioned above, we need a methodology or a “cook-book.” Unlike a process, a methodology is a detailed description of the steps and procedures or how to carry out the activities to the extent that a beginner can follow to produce and deploy the desired software system. Without a methodology, a beginning software engineer would have to spend years of on-the-job training to learn design, implementation, and testing skills. This book is also motivated by emerging interests in Agile processes, design patterns, and test-driven development (TDD). Agile processes emphasize teamwork, design for change, rapid deployment of small increments of the software system, and joint development with the customer and users. Design patterns are effective design solutions to common design problems. They promote software reuse and improve team communication. Patterns also empower less-experienced software engineers to produce high-quality software because patterns encode software design principles. TDD advocates testable software, and requires test scripts to be produced before the implementation so that the latter can be tested immediately and frequently.

Author(s): David C. Kung
Edition: 2
Publisher: McGraw-Hill US Higher Ed ISE
Year: 2023

Language: English
Pages: 688

Part I
Introduction and System Engineering 1

1Introduction 2

2Software Process and Methodology 10

3System Engineering 43

Part II
Analysis and Architectural Design 67

4Software Requirements Elicitation 68

5Domain Modeling 92

6Architectural Design 123

Part III
Modeling and Design of Interactive Systems 155

7Deriving Use Cases from Requirements 156

8Actor–System Interaction Modeling 182

9Object Interaction Modeling 196

10Applying Responsibility-Assignment Patterns 224

11Deriving a Design Class Diagram 246

12User Interface Design 259

Part IV
Modeling and Design of Other Types of Systems 281

13Modeling and Design of Event-Driven Systems 282

14Activity Modeling for Transformational Systems 314

15Modeling and Design of Rule-Based Systems 330

Part V
Applying Situation-Specific Patterns 351

16Applying Patterns to Design a State Diagram Editor 352

17Applying Patterns to Design a Persistence Framework 400

Part VI
Implementation and Quality Assurance 423

18Implementation Considerations 424

19Software Quality Assurance 442

20Software Testing 474

Page v
Part VII
Maintenance and Configuration Management 511

21Software Maintenance 512

22Software Configuration Management 541

Part VIII
Project Management and Software Security 553

23Software Project Management 554

24Software Security 584

Appendices

APersonal Software Process: Estimation, Planning, and Quality Assurance 608

BJava Technologies 611

CSoftware Tools 623

DProject Descriptions 638

EObject Constraint Language  644

Index 649