Chapter 2 Software Engineering
Chapter 2 Software Engineering
Software Processes
Exercise Question/Answer
Question: 2.1. Suggest the most appropriate generic software process model that might be
used as a basis for managing the development of the following systems. Explain your answer
according to the type of system being developed:
Answer:
● Virtual reality system: This is a system where the requirements will change and there
will be an extensive user interface components. Incremental development with, perhaps,
some UI prototyping is the most appropriate model. An agile process may be used.
● University accounting system: This is a system whose requirements are fairly well-
known and which will be used in an environment in conjunction with lots of other systems
such as a research grant management system. Therefore, a reuse-based approach is
likely to be appropriate for this.
● Interactive travel planning system: System with a complex user interface but which
must be stable and reliable. An incremental development approach is the most
appropriate as the system requirements will change as real user experience with the
system is gained.
Question: 2.2. Incremental software development could be very effectively used for
customers who do not have a clear idea about the systems needed for their operations. Discuss.
Answer:
Incremental software development is the most effective approach for developing business
software solutions, and is in fact a very effective software development model for customers who
do not have a clear idea about the systems needed for their operations.
In the incremental model, software is built and tested incrementally, i.e. features are added after
each test till the finished product is delivered to the customer's satisfaction. It combines features
from the waterfall and prototyping model.
For a customer that does not have a clear system requirement at the start, developing
incrementally is in fact the best approach as they get to see the features developed very early in
the development cycle, review and make suggestions for further changes. Interacting with the
initial prototypes or increments can give them ideas on the directions to take for their system.
With a proper communication, planning, modeling, construction and development strategies, this
model will work well for the customer who does not have a clear idea on the systems needed for
their operations.
Question: 2.3. Consider the integration and configuration process model shown in Figure
2.3. Explain why it is essential to repeat the requirements engineering activity in the process.
Answer:
You need to repeat the requirements engineering activity because it is essential to adapt the
system requirements according to the capabilities of the system/components to be reused. These
activities arc:
1. An initial activity where you understand the function of the system and set out broad
requirements for what the system should do. These should be expressed in sufficient
detail that you can use them as a basis for deciding of a system component satisfies
some of the requirements and so can be reused.
2. Once systems components have been selected, you need a more detailed requirements
engineering activity to check that the features of the reused software meet the business
needs and to identify changes and additions that are required.
An integration and configuration model utilizes existing components in the development of a new
system. It reuses components and does not develop the said system from scratch.
● The requirements need to be adapted to fit the requirements of the new system
● The components that are crucial to the new system are identified.
● The reusable components are identified during requirement analysis, and modifications are
noted.
● If modifications are not possible, alternative approaches are considered.
Question: 2.4. Suggest why it is important to make a distinction between developing the
user requirements and developing system requirements in the requirements engineering process.
Answer:
• Developing the user requirements are abstract statements. It’s described the system’s
functions and features of customer needs. While system requirements are provided a more
detailed explanation of the procedure.
• The user requirements must be develop in accepted language and might not be communicated
in depth detail to tolerate certain execution flexibility. While the development of system
requirements are much more detailed than the user requirements.
• In user requirements, the starting level of the project, development team may put interest on
gathering good information, identifying the important things and understanding them correctly.
In system requirements are implemented after user requirements have been established. The
development of system requirement is important from the beginning of a project to end and
beyond programmers must have the knowledge and skill to write program applications.
Question: 2.5. Using an example, explain why the design activities of architectural design,
database design, interface design, and component design are interdependent.
Answer:
Design of any software is very important activity. It includes design of database, design of
various components, user interface design and design of architecture.
Consider an example of library management system and know how these design activities are
interdependent.
1. Design of architecture: In this designing phase, the system’s overall structure is
defined. It also defines the distribution and relationship between principle components of
the system.
o Design architecture of Library management describes the overall structure of
library. It includes students who have access to library, library administrative
department and books regarding to various departments etc.
• Therefore, to issue a book from the library, these components must be
communicated with each other.
2. Design of database: The structure of database with their respective representation is
defined in this phase. Here, user has to define that he/she is going to develop a new
database of using the existing database.
• This phase is very important in Library management system because, huge
amount of books related to different departments are stored in the database.
• Students are allowed borrow the book with their credentials and need to submit it
as per the rules of library administrator.
• The management must be consistent when books borrowed and returned from the
database.
• If the database is well designed, then it is easy to search and maintain the book
information.
3. Design of interface: The interface among different components of the system is defined
here. It is possible that one component is again used for any implementation in system.
• This phase defines various possible interfaces to allow and access the books to
students.
• Every student has library-ID or roll number to access the books. With these
credentials, student can directly go to the library and borrow the book or they may
use the library web portal.
• With the use of library-ID or roll number, student can search the availability of
required books, and can see the due time for submission etc.
• Therefore, interface is an important phase while designing any software.
4. Component design and their selection: The reusable components which match the
requirements of new system are defined here.
• If a student requires a book which is not available in the library, administrator
should check for the matching books to satisfy the student request.
• If no match is found, management must purchase a new book which is requested
from the student.
Therefore, to effectively manage the library and fulfil the student requirements, library
management should follow all the design activities mentioned above.
Hence, it can be said that these all are interdependent to each other.
Question: 2.6. Explain why software testing should always be an incremental, staged
activity. Are programmers the best people to test the programs that they have developed?
Answer:
Software Testing
Testing is defined as the process in which each program is tested for making sure that each
program is functioning correctly. It is an incremental theatrical activity. The points to show the
reasons are as given below:
● The complete program is divided into small modules and each module is checked
separately. Then, all programs are collectively unit tested.
● After those programs are tested in group and after that whole system is tested CASE tools
are used for testing the occurrence of syntax errors which are generally grammatical
errors Desk checking is used for testing the occurrence of logical errors which makes a
program to produce incorrect results.
No, the programmers are not best person to test their own program. The points to show the
reasons are as given below:
● A programmer has skill to develop the program but they don’t have best skills to test the
developed program.
● It is very difficult to find errors and mistakes in own developed program. Thus, testing
should be conducted by testers and end users, so that, all possible errors can be found
easily.
Question: 2.7. Imagine that a government wants a software program that helps to keep
track of the utilization of the country’s vast mineral resources. Although the requirements put
forward by the government were not very clear, a software company was tasked with the
development of a prototype. The government found the prototype impressive, and asked it be
extended to be the actual system that would be used. Discuss the pros and cons of taking this
approach.
Answer:
Pros:
Cons:
Question: 2.8. You have developed a prototype of a software system and your manager is
very impressed by it. She proposes that it should be put into use as a production system, with new
features added as required. This avoids the expense of system development and makes the system
immediately useful. Write a short report for your manager explaining why prototype systems should
not normally be used as production systems.
Answer:
Talking about prototype model, we can say that, it is developed by knowing the requirements.
A client Interaction with prototype makes the client to have the ability to get the feel of system.
It is best for large systems as this helps to determine the requirements. It is not complete, this is
because many of its details are yet to be built. Users also involved in its development.
Production system is a result of organizing inputs, then process is carried out and then output is
based on some logic and functions. Production system fails if any such arrangement made don't
give a desired level of outcome.
If requirements are missed then production system may fail. So prototype systems are not used
as production systems.
Question: 2.9. Suggest two advantages and two disadvantages of the approach to
process assessment and improvement that is embodied in the SEI’s Capability Maturity
framework.
Answer:
Question: 2.10. Historically, the introduction of technology has caused profound changes
in the labor market and, temporarily at least, displaced people from jobs. Discuss whether the
introduction of extensive process automation is likely to have the same consequences for software
engineers. If you do not think it will, explain why not. If you think that it will reduce job opportunities,
is it ethical for the engineers affected to passively or actively resist the introduction of this
technology?
Answer:
The human errors in the code creation to meet the can be reduced the correct syntax can
be reduced with the help of extensive process automation:
● Similar software can be produced to develop the talent and the cost can also be reduced.
● Usage of standardized components will be more at automation such that it will increase
the reliability of software and reduce the cost of maintenance in future.
● The production of less interesting and the reduction of the mechanical task by the
software engineers will result to be more innovative and creative in the task they were
assigned.
● Automation assists software to address primary issues in the development process.
(complexity, reliability, and productivity).