English | 2024 | PDF | 25 MB | 687 Pages
by David C. Kung
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.
ISBNs: 1265242437, 1260721701, 1264558082, 1264560168, 1264628110, 1265660670, 1260792684, 1260792692, 9781265242435, 9781260721706, 9781264558087, 9781260792683, 9781264560165, 9781264628117, 9781265660673, 9781264556953, 978-1265242435, 978-1260721706, 978-1264558087, 978-1260792683, 978-1264560165, 978-1264628117, 978-1265660673, 978-1264556953