1.2 Provide a number of examples (both positive and negative) that indicate the impact of software on our society.
The use of software in our society has a number of both positive and negative impacts. Whereas the positive aspects can be extremely useful, the negative ones provide us with somewhat of a crutch. In general, software isn't designed to “hurt” us in any way, but rather to make things easier and more efficient for us.
1.3 For example, E-banking is a perfect example of software that makes our lives a whole lot easier. Everything short of physically withdrawing money from your bank can be done online. You can even deposit your paychecks now by simply taking a picture of it with your smart phone. On the downside, that same technology can be used to steal your credit card numbers and identity if it falls into the wrong hands. Same with anti-security software.
There are people who get paid good money to hack into your local bank and steal from them just to prove to the bank that they need to upgrade their network security. In most cases, the banks are thankful for this type of intrusion. This same software, however, could be used for criminal purposes in which the bank would not be so pleased. Software can be both extremely useful and extremely dangerous depending on who's using it and how.
1.4 Many modern applications change frequently—before they are presented to the end user and then after the first version has been put into use. Suggest a few ways to build software to stop deterioration due to change.
First and foremost, software applications should be maintainable. Meaning that is should be engineered to a degree that changes can be made rather easily as the application grows. One way to minimize deterioration due to change is to allow automatic updates to be built in. Take the Windows OS for example: it has the option to allow automatic updating for necessary security and firewall platforms to ensure that the system is always “up to date.” Since previous applications are always being updated, it is important to build new software with the same capabilities.
1.5 Consider the seven software categories presented in Section 1.1.2. Do you think that the same approach to software engineering can be applied for each? Explain your answer.
Millions of software engineers worldwide are hard at work on software projects in one or more of these categories. In some cases, new systems are being built, but in many others, existing applications are being corrected, adapted, and enhanced. Because of this, a different approach to software engineering may be required for individual categories. Many of the programs that software engineers work on are extremely old, and continue to be upgraded. Therefore, it makes sense that you wouldn't use the same approach for an existing program that you would use for a new program.
1.6 Figure 1.3 places the three software engineering layers on top of a layer entitled “a quality focus.” This implies an organizational quality program such as total quality management. Do a bit of research and develop an outline of the key tenets of a total quality management program.
TQM can be defined as the management of initiatives and procedures that are aimed at achieving the delivery of quality products and services. A number of key principles can be identified in defining TQM, including:
- Executive Management – Top management should act as the main driver for TQM and create an environment that ensures its success.
- Training – Employees should receive regular training on the methods and concepts of quality.
- Customer Focus – Improvements in quality should improve customer satisfaction.
- Decision Making – Quality decisions should be made based on measurements.
- Methodology and Tools – Use of appropriate methodology and tools ensures that non-conformances are identified, measured and responded to consistently.
- Continuous Improvement – Companies should continuously work towards improving manufacturing and quality procedures.
- Company Culture – The culture of the company should aim at developing employees ability to work together to improve quality.
- Employee Involvement – Employees should be encouraged to be pro-active in identifying and addressing quality related problems.
1.7 Is software engineering applicable when WebApps are built? If so, how might it be modified to accommodate the unique characteristics of WebApps?
Software has become deeply embedded in virtually every aspect of our lives. Software engineering is applicable when new programs are built, and when existing programs are updated – including WebApps. WebApps are one of a number of distinct software categories. And yet, it can be argued that WebApps are different. One of the main modifications that WebApps demand is availability. Users of popular WebApps often demand access on a 24/7/365 basis. Another unique characteristic of WebApps is their continuous evolution.
Unlike conventional application software that evolves over a series of planned, chronologically spaced releases, Web applications evolve continuously. When it comes to the software engineering applied to WebApps, many voices must be heard. The look and feel of a WebApp is an undeniable part of the appeal that will ultimately determine the Apps' success.
1.8 As software becomes more pervasive, risks to the public (due to faulty programs) become an increasingly significant concern. Develop a doomsday but realistic scenario in which the failure of a computer program could do great harm (either economic or human).
One of the first tragic but realistic scenarios that comes to mind is the failure of specific programs on an airliner. The major computerized programs on airplanes have the same risk of failing as any other program, and can have catastrophic results. For example, the sensor that detects the altitude of an aircraft allows the pilot to know how many feet the aircraft is above the ground. This program is particularly necessary when weather conditions could impair the pilots' visibility of the runway.
Once an airliner begins its decent and prepares to land, the pilot uses these programs to guide the plane to a safe landing. If this program were to fail, and the weather hindered the pilots visibility, the pilot may not know how far above the ground he actually is. Plane crashes happen all the time, and hundreds of passengers die every year – mostly due to failed programs and instruments on the aircraft.
1.9 Describe a process framework in your own words. When we say that framework activities are applicable to all projects, does this mean that the same work tasks are applied for all projects, regardless of size and complexity? Explain.
The software engineering process doesn't just magically happen without some sort of order and organizational planning. A process framework creates the foundation for the engineering process by using a small number of activities that are applicable to all projects. The step-by-step algorithm for a process framework is comprised of five activities: communication, planning, modeling, construction, and deployment. All programs, regardless of their size and complexity conform to these activities in that order. Although the details of the software process will be quite different for each program, the tasks involved within the framework remain the same.
1.10 Umbrella activities occur throughout the software process. Do you think they are applied evenly across the process, or are some concentrated in one or more framework activities.
In general, umbrella activities are applied throughout a software project and help a software team manage and control progress, quality, change, and risk. Since the software engineering process is not a rigid regimen that must be followed precisely by a software team, the process has a lot of room for adaptation.
Although the umbrella activities that occur throughout the process are generally applied to all aspects of the process, the engineering should be agile and adaptable; specific to the problem, to the project, to the team, and to the organizational culture. Because of this, a process adopted for one project might be significantly different that a process adopted for another project, and some activities may be concentrated in one or more areas.