Sudahkah anda Tahu?

Sudahkah anda Tahu?

Tuesday, October 21, 2014

Tugas - Summary

1.3 Summar
– The problem domain for software engineering is industrial-strength software. This software is meant to solve some problem of some set of users, and is expected to be of high quality.
– In this problem domain, cost, schedule, and quality are basic driving forces.
– Productivity is measured as amount of output per unit of input resource
– Software quality has many attributes which include functionality, reliabil- ity, usability, eciency, maintainability, and portability
– The problems in this domain often tend to be very large and where the needs of the customers change fast
Self-Assessment Exercises
1.What are the main dierences between a student software and industrial-strength software?
2. Where do you think this extra eort cost is spent?
3. What measurements will you take in a project to measure the productivity?
4. What are the dierent attributes of software quality?
 5. What are some of the project management tasks that you will do dierently for a large project as compared to a small project?
 6. Suppose changes are to be made to a software system that is in operation.
2. Software Prosses
Software engineering is defined as the systematic approach to the development, operation, maintenance, and retirement of software. eration, maintenance, and retirement of software [52]. We have seen that besides delivering software, high quality, low cost, and low cycle time are also goals which software engineering must achieve. As it is people who ultimately develop and deliver (and productivity is measured with respect to people’s eort as the basic input), the main job of processes is to help people achieve higher Q&P by specifying what tasks to do and how to do them.
As processes form the heart of software engineering, with tools and tech- nology providing support to eciently execute the processes, this book focuses primarily on processes. In this chapter we will discuss:
– Role of a process and a process model in a project.
– Various component processes in the software process and the key role of the development process and the project management process.
– Various models for the development process—waterfall, prototyping, itera- tive, RUP, timeboxing, and XP.
– The overall structure of the project management process and its key phases.

2.1 Process and Project
A software project is one instance of this problem, and the development process is what is used to achieve this purpose. The role of process increases due to these additional goals, and though many processes can achieve the basic.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.1 Basic problem
A process model specifies a general process, which is “optimum” for a class of projects. That is, in the situations for which the model is applicable, using the process model as the project’s process will lead to the goal of developing software with high Q&P.
2.2 Component Software Processes
As defined above, a process is the sequence of steps executed to achieve a goal. Since many dierent goals may have to be satisfied while developing soft- ware, multiple processes are needed.
The processes that deal with the technical and management issues of soft- ware development are collectively called the software process. During the project many products are produced which are typically com- posed of many items (for example, the final source code may be composed of many source files). The objective of this component process is to primarily deal with managing change, so that the integrity of the products is not violated despite changes.
These three constituent processes focus on the projects and the products and can be considered as comprising the product engineering processes, as their main objective is to produce the desired product. The basic objective of the process management process is to improve the software process. By improvement, we mean that the capability of the process to produce quality goods at low cost is improved. The relationship between these major component processes is shown in Fig- ure 2.2. These component processes are distinct not only in the type of activities performed in them, but typically also in the people who perform the activities specified by the process.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.2 Software Prosses
For the rest of the book, we will use the term software process to mean product engineering processes, unless specified otherwise.
2.3 Software Development Process Models
A project’s development process defines the tasks the project should per- form, and the order in which they should be done. A process limits the degrees of freedom for a project by specifying what types of activities must be under- taken and in what order, such that the “shortest” (or the most ecient) path is obtained from the user needs to the software satisfying these needs.
As discussed earlier, a process model specifies a general process, usually as a set of stages in which a project should be divided, the order in which the stages should be executed, and any other constraints and conditions on the execution of stages.
2.3.1 Waterfall Model
The basic idea behind the phases is separation of concerns—each phase deals with a distinct and separate set of concerns. By doing this, the large and complex task of building the software is broken into smaller tasks (which, by themselves, are still quite complex) of specifying requirements, doing design, etc. Separating the concerns and focusing on a select few in a phase gives a better handle to the engineers and managers in dealing with the complexity of the problem.
Linear ordering of activities has some important consequences. First, to clearly identify the end of a phase and the beginning of the next, some cer- tification mechanism has to be employed at the end of each phase.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.3 The waterfall Model
. Though the set of documents that should be produced in a project is dependent on how the process is implemented, the following documents generally form a reasonable set that should be produced in each project:
– Requirements document
– Project plan
– Design documents (architecture, system, detailed)
– Test plan and test reports
– Final code
– Software manuals (e.g., user, installation, etc.)
2.3.2 Prototyping
Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determine the requirements. In such situations, letting the client “play” with the prototype provides invaluable and intangible inputs that help determine the requirements for the system. It is also an eective method of demonstrating the feasibility of a certain approach.
A development process using throwaway prototyping typically proceeds as follows.The development of the prototype typically starts when the prelim- inary version of the requirements specification document has been developed. At this stage, there is a reasonable understanding of the system and its needs and which needs are unclear or likely to change.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.4  The Prototyping Model
For prototyping for the purposes of requirement analysis to be feasible, its cost must be kept low. Consequently, only those features are included in the prototype that will have a valuable return from the user experience. Excep- tion handling, recovery, and conformance to some standards and formats are typically not included in prototypes. In prototyping, as the prototype is to be discarded, there is no point in implementing those parts of the requirements that are already well understood. Hence, the focus of the development is to include those features that are not properly understood.
2.3.3 Iterative Development
The iterative enhancement model [4] is an example of this approach. In the first step of this model, a simple initial implementation is done for a subset of the overall problem. This subset is one that contains some of the key aspects of the problem that are easy to understand and implement and which form a useful and usable system.
Each step consists of removing the next task from the list, designing the implementation for the selected task, coding and testing the implementation, performing an analysis of the partial system obtained after this step, and updat- ing the list as a result of the analysis.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.5 The Interative enchanment model.
The project control list guides the iteration steps and keeps track of all tasks that must be done.
Though there are clear benefits of iterative development, particularly in allowing changing requirements, not having the all-or-nothing risk, etc., there are some costs associated with iterative development also.
Another common approach for iterative development is to do the require- ments and the architecture design in a standard waterfall or prototyping ap- proach, but deliver the software iteratively.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.6  Interative Delivery approach.
The iterative approach is becoming extremely popular, despite some di- culties in using it in this context. There are a few key reasons for its increasing popularity. First and foremost, in today’s world clients do not want to invest too much without seeing returns. In the current business scenario, it is preferable to see returns continuously of the investment made.
2.3.4 Rational Unified Process
RUP proposes that development of software be divided into cycles, each cycle delivering a fully working system. Generally, each cycle is executed as a separate project whose goal is to deliver some additional capability to an exist- ing system (built by the previous cycle).
– Inception phase
– Elaboration phase
– Construction phase
– Transition phase
Each phase has a distinct purpose, and completion of each phase is a well- defined milestone in the project with some clearly defined outputs. The purpose of the inception phase is to establish the goals and scope of the project, and completion of this phase is the lifecycle objectives milestone.
In the elaboration phase, the architecture of the system is designed, based on the detailed requirements analysis. The completion of this phase is the life- cycle architecture milestone. At the end of this phase, it is expected that most of the requirements have been identified and specified, and the architecture of the system has been designed (and specified) in a manner that it addresses the technical risks identified in the earlier phase.
The purpose of the transition phase is to move the software from the devel- opment environment to the client’s environment, where it is to be hosted. This is a complex task which can require additional testing, conversion of old data for this software to work, training of personnel, etc.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.7 The RUP Model.
RUP has carefully chosen the phase names so as not to confuse them with the engineering tasks that are to be done in the project, as in RUP the en- gineering tasks and phases are separate.
One key dierence of RUP from other models is that it has separated the phases from the tasks and allows multiple of these subprocesses to function within a phase. In waterfall (or waterfall-based iterative model), a phase within a process was linked to a particular task performed by some process like re- quirements, design, etc. In RUP these tasks are separated from the stages, and it allows, for example, during construction, execution of the requirements process.
Though a subprocess may be active in many phases, as can be expected, the volume of work or the eort being spent on the subprocess will vary with phases. For example, it is expected that a lot more eort will be spent in the requirement subprocess during elaboration, and less will be spent in construc- tion, and still less, if any, will be spent in transition.
Table 2.1  Activity Level of subprocesses in different phase of RUP
Description: C:\Users\Ozy\Desktop\z.jpg
2.3.5 Timeboxing Model
In the timeboxing model, the basic unit of development is a time box, which is of fixed duration. Since the duration is fixed, a key factor in selecting the requirements or features to be built in a time box is what can be fit into the time box. This is in contrast to regular iterative approaches where the functionality is selected and then the time to deliver is determined. Timeboxing changes the perspective of development and makes the schedule a nonnegotiable and a high-priority commitment.
Having time-boxed iterations with stages of equal duration and having ded- icated teams renders itself to pipelining of dierent iterations. (Pipelining is a concept from hardware in which dierent instructions are executed in paral- lel, with the execution of a new instruction starting once the first stage of the previous instruction is finished.)
With a time box of three stages, the project proceeds as follows. When the requirements team has finished requirements for timebox-1, the requirements are given to the build team for building the software. The requirements team then goes on and starts preparing the requirements for timebox-2.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.8 Executing the timeboxing process model.
Contrast this with a linear execution of iterations, in which the first delivery will be made after 9 weeks, the second after 18 weeks, the third after 27 weeks, and so on.
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.9  Task of different teams.
Hence, the timeboxing provides an approach for utilizing additional man- power to reduce the delivery time. It is well known that with standard methods of executing projects, we cannot compress the cycle time of a project substan- tially by adding more manpower.
Timeboxing is well suited for projects that require a large number of fea- tures to be developed in a short time around a stable architecture using stable technologies. These features should be such that there is some flexibility in grouping them for building a meaningful system in an iteration that provides value to the users.
Agile development approaches evolved in the 1990s as a reaction to documen- tation and bureaucracy-based processes, particularly the waterfall approach. Agile approaches are based on some common principles, some of which are [www.extremeprogramming.org]:
– Working software is the key measure of progress in a project.
– For progress in a project, therefore, software should be developed and deliv- ered rapidly in small increments.
– Even late changes in the requirements should be entertained (small-increment model of development helps in accommodating them).
– Face-to-face communication is preferred over documentation.
– Continuous feedback and involvement of customer is necessary for developing good-quality software.
– Simple design which evolves and improves with time is a better approach than doing an elaborate design up front for handling all possible scenarios.
– The delivery dates are decided by empowered teams of talented individuals (and are not dictated).
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.10 Overal process in XP.
The development approach used in an iteration has some unique practices. First, it envisages that development is done by pairs of programmers (called pair programming and which we will discuss further in Chapter 7), instead of individual programmers. Second, it suggests that for building a code unit, automated unit tests be written first before the actual code is written, and then the code should be written to pass the tests
Description: C:\Users\Ozy\Desktop\z.jpg
Figure 2.11 An Interation in XP.
XP, and other agile methods, are suitable for situations where the volume and pace of requirements change is high, and where requirement risks are con- siderable. Because of its reliance on strong communication between all the team members, it is eective when teams are collocated and of modest size, of up to about 20 members.
2.3.7 Using Process Models in a Project
Suppose a small team of developers has been entrusted with the task of building a small auction site for a local university. The university administration is willing to spend some time at the start to help develop the requirements, but it is expected that their availability will be limited later.
With these constraints, it is clear that a waterfall model is not suitable for this project, as the “all or nothing” risk that it entails is unacceptable due to the inflexible deadline. The iterative enhancement model where each iteration does a complete waterfall is also not right as it requires requirements analysis for each iteration, and the users and clients are not available later.
Consider another example where the customers are in a highly competitive environment where requirements depend on what the competition is doing, and delivering functionality regularly is highly desirable.
For this project, clearly waterfall is not suitable as requirements are not even known at the start. Iterative enhancement also may not work as it may not be able to deliver rapidly.

No comments:

Post a Comment

Cool Purple Outer Glow Pointer