A Concise Introduction to Software Engineering. Pankaj Jalote. An introductory course on Software Engineering remains one of the hardest subjects to teach largely because of the wide range of topics the area enc- passes. I have believed for some time that we often tend to teach too many concepts and topics in an introductory course resulting in shallow knowledge and little insight on application of these concepts.
|Published (Last):||22 March 2005|
|PDF File Size:||6.88 Mb|
|ePub File Size:||2.77 Mb|
|Price:||Free* [*Free Regsitration Required]|
Published on Aug 26, SlideShare Explore Search You. Submit Search. Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime. Software engineering by pankaj jalote. Upcoming SlideShare. Like this document? Why not share! Embed Size px. Start on. Show related SlideShares at end.
WordPress Shortcode. Published in: Technology , Education. Full Name Comment goes here. Are you sure you want to Yes No. Browse by Genre Available eBooks Lal Chand ,. Show More. Chinmay Urs. No Downloads. Views Total views. Actions Shares. Embeds 0 No embeds. No notes for slide. Software engineering by pankaj jalote 1. Undergraduate Topics in Computer Science 2. Undergraduate Topics in Computer Science UTiCS delivers high-quality instructional content for under-graduates studying in all areas of computing and information science.
Many include fully worked solutions. Enquiries concerning reproduction outside those terms should be sent to thepublishers. The use of registered names, trademarks, etc. The publisher makes no representation, express or implied, with regard to the accuracy of the informationcontained in this book and cannot accept any legal responsibility or liability for any errors or omissions thatmay be made.
PrefaceAn introductory course on Software Engineering remains one of the hardestsubjects to teach largely because of the wide range of topics the area encom-passes. I have believed for some time that we often tend to teach too manyconcepts and topics in an introductory course resulting in shallow knowledgeand little insight on application of these concepts. It is worth pointing out that a vast majorityof the projects executed in the industry today fall in this scope—executed bya small team over a few months.
I also believe that by carefully selecting theconcepts and topics, we can, in the course of a semester, achieve this. This isthe motivation of this book.
The goal of this book is to introduce to the students a limited number ofconcepts and practices which will achieve the following two objectives:— Teach the student the skills needed to execute a smallish commercial project. Ad-vanced topics have been consciously left out. The book is organized in a simple manner, with one chapter for each ofthe key tasks in a project. For project management, the key tasks are project plan-ning and project monitoring and control, but both are discussed together inone chapter on project planning as even monitoring has to be planned.
Each chapter opens with some introduction and then clearly lists the chaptergoals, or what the reader can expect to learn from the chapter.
Theexplanations are supported by examples, and the key learnings are summarizedin the end for the reader. The chapter ends with some self-assessment exercises. Target AudienceThe book is primarily intented for an introductory course on Software Engi-neering in any undergraduate or graduate program.
It is targeted for studentswho know programming but have not had a formal exposure to software engi-neering. The book can also be used by professionals who are in a similar state—knowsome programming but want to be introduced to the systematic approach ofsoftware engineering. Preface viiTeaching Support and Supplemental ResourcesThough the book is self-contained, some teaching support and supplementalresources are available through a website.
AcknowledgmentsI would like to express my gratitude to my editor, Wayne Wheeler, who con-ceived this idea of a concise introductory book and created this opportunity. I would also like to express my thanks to my wife, Shikha, and my daughtersSumedha and Sunanda for once again bearing with my moods and odd hours. Pankaj JaloteNew Delhi, May 8. The Software Problem. Software Processes.
Planning a Software Project. Software Architecture. Contents xi 5. Coding and Unit Testing. If you are working full time on it, how long will it take you to buildthis system?
The answer of students is generally 1 to 3 months. And, given the program-ming expertise of the students, there is a good chance that they will be ableto build the software and demo it to the professor within 2 months. With 2months as the completion time, the productivity of the student will be lines of code LOC per person-month. Now let us take an alternative scenario—we act as clients and pose the sameproblem to a company that is in the business of developing software for clients.
With this productivity, a team of professionals in a software organization willtake 10 person-months to build this software system. Why is it that thesame students who can produce software at a productivity of a few thousandLOC per month while in college end up producing only about a thousand LOCper month when working in a company?
Because it isP. Neither are the other qualityissues like usability, maintainability, portability etc. Consequently, the software system needs to be of high quality withrespect to properties like reliability, usability, portability, etc. This need for high quality and to satisfy the the end users has a majorimpact on the way software is developed and its cost. The rule of thumb Brooksgives suggests that the industrial-strength software may cost about 10 timesthe student software .
The software industry is largely interested in developing industrial-strengthsoftware, and the area of software engineering focuses on how to build suchsystems. That is, the problem domain for software engineering is industrial-strength software. In the rest of the book, when we use the term software, wemean industrial-strength software. In the remainder of this chapter, we willlearn— That quality, cost, and schedule are the main forces that drive a industrial- strength software project.
In theindustrial-strength software domain, there are three basic forces at play—cost,schedule, and quality. The software should be produced at reasonable cost, ina reasonable time, and should be of good quality. Industrial-strength software is very expensive primarily due to the fact thatsoftware development is extremely labor-intensive. To get an idea of the costsinvolved, let us consider the current state of practice in the industry.
This produc-tivity is over the entire development cycle, not just the coding task. And even small projects can easily end up with software of 50, LOC. Schedule is another important factor in many projects. Business trendsare dictating that the time to market of a product should be reduced; thatis, the cycle time from concept to delivery should be small. Unfortunately, the history of software is full of cases where projects have beensubstantially late. Clearly, therefore, reducing the cost and the cycle time for software de-velopment are central goals of software engineering.
Productivity in terms ofoutput KLOC per person-month can adequately capture both cost and sched-ule concerns. If productivity is higher, it should be clear that the cost in termsof person-months will be lower the same work can now be done with fewerperson-months. The actualtime the project will take, of course, depends also on the number of people al-located to the project. Besides cost and schedule, the other major factor driving software engi-neering is quality.
Today, quality is one of the main mantras, and businessstrategies are designed around it. Unfortunately, a large number of instanceshave occurred regarding the unreliability of software—the software often doesnot do what it is supposed to do or does something it is not supposed to do.
Clearly, developing high-quality software is another fundamental goal of soft-ware engineering. However, while cost is generally well understood, the conceptof quality in the context of software needs further elaboration.
The international standard on software product quality  suggests that The Software Problem Figure 1. The capability to provide functions which meet stated and implied needs when the software is used.
A Concise Introduction to Software Engineering