UNIT-1 SOFTWARE ENGINEERING

1. What do you mean by software engineering?

Software engineering is the study and an application of engineering to the design, development, and maintenance of software.

2. Size factors:
1. Total effort devoted to software.
    It deals with the amount of total cost is spent on hardware as well as software for the development of software product.
2. Distribution of effort:
           Distribution of effort during the development phase of a software product is 40 percent for analysis and design, 40 percent for integration and acceptance testing, and 20 percent for implementation, debugging and unit testing.
3. Project size categories:
            Determines the level of management control and the types of tools and techniques required on a software project.
E.g. Personal software
           1 .trivial project:
                        Involves one programmer working for part time, or for few days or few weeks and results in a program less than 500 statements packaged in 10 to 20 subroutines.
            2. Small project:
                        Employs one programmer for 1 to 6 months and results in a product containing 1000 to 2000 lines of source code packaged in 25 to 50 routines.
E.g. scientific applications written by engineers to solve numerical problems.
            3. Medium project:
                        Employs 2 to 5 programmers working for 1 to 2 years and results in 10,000 to 50,000 lines of source code packaged in 250 to 1000 routines.
E.g. Assemblers, compilers, inventory systems etc.
            4. Large project:
                        Requires 5 to 20 programmers for a period of 2 to 3 years and results in a system of 50,000 to 100,000 source statements packaged in several subsystems.
E.g. Large compilers, small time sharing systems, database packages…..
            5. Very large project:
                        Requires 100 to 1000 programmers for a period of 4 to 5 years and result in a software system of 1 million source code.
E.g. Real time processing, telecommunications and multitasking…..
            6. Extremely large project.
            Employs 2000 to 5000 programmers for a period of up to 10 years and results in 1 million to 10 million lines of source code.
E.g. real time processing, telecommunications and multitasking and distributed processing.
4. How Programmers spend their time.
            Deals with how programmers spend their time on a software project.40 percent of project effort is spent in activities like reading, reviewing, meeting and fixing.
3. What are the three types of activities involved in software maintenance?
            1. Enhancing the capabilities of the product
            2. Adapting the product to new processing environments

            3. Correcting bugs.
4. What are the benefits of using systematic tools and techniques during software development?
            1. An increase in quality and productivity during initial product development can be expected.
            2. Resulting documentation levels and clarity of the product will permit systematic testing, enhancement, adaption and correction.
      3. Correcting bugs.
5.Describe briefly about the managerial issues.
Managerial issues:
Important management problems are:
1. Planning for software engineering projects is generally poor.
2. Procedures and techniques for the selection of project managers are poor
3. The accountability of many software engineering projects is poor, leaving some question as to who is responsible for various project functions.
4. The ability to accurately estimate the resources required to accomplish a software development project is poor.
5. Success criteria for software development projects are frequently inappropriate .This result in software products that are unreliable, difficult to use, and difficult to maintain.
6. Decison rules to aid in selecting the proper organizational structure are not available.
7. Decison rules to aid in selecting the correct management techniques for software engineering projects are not available.
8. Procedures, methods and techniques for designing a project control system that will enable project managers to successfully control their project are not readily available.
9. Procedures, techniques, strategies, and aids that will provide visibility of progress to the project manager are not available.
10. Standards and techniques for measuring the quality of performance and the quantity of production expected from programmers and data processing analysts are not available.
 Methods for solving these problems are :
1. Educate and train top management, project managers, and software developers.
2. Enforce the use of standards, procedures, and documentation.
3.Analyze data from prior software projects to determine effective methods.
4. Define objectives in term of quality desired.
5. Define quality in terms of deliverables.
6. Establish success priority criteria.
7. Allow for contingencies.
8. Develop truthful ,accurate cost and schedule estimates that are accepted by management and customer.
9. Select project managers based on ability to manage software project s, rather than on technical ability availability.
10. Make specific work assignment to software developers and apply job performance standard.


6.  What are the factors that influence quality and productivity of a software project?
            1. Individual ability:
ü  It deals with the individual effort of the programmer given to the software productivity and quality.
ü  The two aspects of individual ability are
      • General competence of the individual-competent data processing programmers is not usually competent in scientific application areas.
      • Familiarity of the individual with the particular application area-lack of familiarity with the application area can result in low productivity and poor quality
            2. Team communication:
            Programming has been traditionally treated as an individual and private activity.
            If the programmers prefer to work alone it is possible to misunderstand the role of the modules in an evolving system and to make mistakes that may not be detected.
            So the recent innovation of software engineering such as design reviews, structured walkthroughs, and code reading exercises help the programmers to make the software more visible and improves communication among programmers.
            3. Product complexity:
                        Three levels of product complexity are
1.      Application programs: include scientific and data processing routines written in a high level language such as FORTRAN, COBOL or Pascal.
2.      Utility programs: include compilers, assemblers, linkage editors and loaders written in high level language such as Pascal or Ada or in Assembly language.
3.      System Programs: include data communication packages, real time process control systems and operating system routines which are written in assembly language or a high level language such as PL/I or Ada
Application programs have the highest productivity and systems program has the lowest productivity.
The effort required to develop and maintain a software product is a nonlinear function of product size and complexity.
Failure to allow for the nonlinear scaling of size and complexity is a primary reason for cost and schedule overruns on many software projects.
4.      Appropriate notations:
        The representation schemes are of importance in software engineering.
Good notation clarify the relationships and interactions of interest, poor notations complicate and interfere with good practice.
Appropriate notations provide communication among project personnel and introduce the possibility of using automated software tools to manipulate the notations and verify proper usage.
5.      Systematic approaches:
Standard practices is one of the distinguish characteristics of a professional discipline.
Various systematic approaches are used for software development and maintenance.
6.      Change control:
Software is tailored to satisfy differing requirements of different customers.
The Flexibility of software is a great strength and great source of difficulty in software engineering.
7.      Level of technology:
The level of technology used on a software project accounts factors such as programming language, the machine environment, the programming practices and the software tools.
Modern programming language provide improved facilities for data definition and data usage, improved constructs for specifying control flow, better modularization facilities, user defined exception handling and facilities for concurrent programming.
The machine environment includes the set of hardware and software facilities available for developing, using and maintaining a software product.
Modern programming practices include use of systematic analysis and design techniques, appropriate notations, structured coding, systematic techniques for examining design documents and source code, and systematic testing.
8.      Level of reliability:
Reliability is gained with great care in analysis, design, implementation, system testing and maintenance of the software product.
Both human and machine resources are required to obtain increased reliability.
9.      Problem understanding:
The software engineer does not understand the application area and has trouble communicating with the customer because of differences in educational backgrounds, viewpoints and technical jargon.
Careful planning, customer interviews, task observation, prototyping, preliminary version of user’s manual and precise product information can increase both customer and developer understanding of the problems to be solved
10.  Available time:
The difficulty of a project and the resulting programmer productivity and software quality are sensitive functions of the time available for  product development or modification.
Determining optimum staffing levels and proper elapsed times for various activities in software product development is an important and difficult aspect of cost and resource estimation.
11.  Required skills:
Good communication skills, diplomacy and knowledge of application area, creative problem solving skills, absolute consistency in cross referencing, deductive skills, good writing skills, ability to place oneself in maintainers position, software engineers should possess social skills to interact with managers, customers and other engineers. These skills must present among members of the programming team.
12.  Facilities and resources:
Factors such as good machine access and quiet place to work, reserved parking places and keys to executive rest rooms.
Software project managers must be effective in dealing with these factors that motivate and frustrate programmers if they are to maintain high programmer productivity, high product quality, and high job satisfaction.
13.  Adequacy of training:
Software engineering is concerned with analyzing, designing, constructing, testing, verifying, documenting, operating, and maintaining software products. Due to lack of training provided by the universities entry level programmers are poorly prepared to become software engineers.
14.  Management skills:
Software projects are supervised by  managers who have little knowledge of software engineering find difficult in project management due to differences in design methods, notations, development tools.
Many organizations offer project management training to software engineers to prepare them for project management tasks.
15.  Appropriate goals:
The primary goal of software engineering is development of software products that are appropriate for their intended use.
Productivity and quality factors can be achieved by adhering to the goals and requirements established for the software product during project planning.
16.  Rising expectations:
Interrelated aspects to rising expectations:
1.      how much functionality, reliability and performance can be provided by a given amount of development effort
2.      issue of fundamental  limitations of software technology.
            17. Other factors.
      • Experience with programming language
      • Database size
      • Stability of the computing system used to develop or modify the software.










No comments:

Post a Comment