Tuesday, 26 July 2011
Software Verification and Validation
Verification and validation (V & V) is a whole software engineering process which must be applied at each framework activity in the software process. Verification means the set of tasks that ensures that software correctly implements a specific function whilst validation means a different set of tasks that ensures that the software that has been built is traceable to customer requirements. The objectives of V & V is to discover defects in a system as well as to assess whether or not the system is useful and usable in an operational situation. V & V should establish confidence that the software is fit for purpose which does not mean that it is completely free of defects but rather that it must be good enough for its intended use and the type of use will determine the degree of confidence that is needed.

Software Testing
Software testing is the process of exercising a program with the specific intent of finding errors prior to delivery to the end user and must be planned carefully. Testing is able to show

Software testing is run by developer and independent tester. Developers understand the system but will test gently and is driven by delivery whereas independent tester must learn about the system but will attempt to break it and is driven by quality.
The developer and independent test group (ITG) must work together throughout the software project to ensure that thorough tests will be conducted.
Overall Software Testing Strategy
Can be viewed in the context of the spiral which begins by `testing-in-the-small` and move toward `testing-in-the-large`

- Unit testing focuses on each unit of the software such as component and module as implemented in source code
- Integration testing focuses on issues associated with verification and program construction as components begin interacting with one another.
- Validation testing provides assurance that the software validation criteria meets all functional, behavioral and performance requirements.
- System testing verifies that all system elements mesh properly and that overall system function and performance has been achieved.
The method best used to study this module is reading because software validation and testing are important to any software projects and must be completely understood in order for students to undertake future projects.
This module's topics pretty much covers every aspect of validation and testing and is sufficient to understand these 2 processes.
Emphasis should be put on this module as testing and verification are important processes that need to be done throughout software development to ensure software functionality and quality. Mind mapping could be used in lectures to better grasp this module's topics.
The lesson learnt from this chapter is that testing and validation must be done in order to assure project success in terms of quality and functionality. No one would want to buy a low quality software.
Tuesday, 26 July 2011 by Talib · 0
Sunday, 24 July 2011
This is what Module 9 is all about :-
Software development process
A software development process is concerned primarily with the production aspect of software development, as opposed to the technical aspect, such as software tools. These processes exist primarily for supporting the management of software development, and are generally skewed toward addressing business concerns. Many software development processes can be run in a similar way to general project management processes. Examples are:- Risk management is the process of measuring or assessing risk and then developing strategies to manage the risk. In general, the strategies employed include transferring the risk to another party, avoiding the risk, reducing the negative effect of the risk, and accepting some or all of the consequences of a particular risk. Risk management in software project management begins with the business case for starting the project, which includes a cost-benefit analysis as well as a list of fallback options for project failure, called a contingency plan.
- A subset of risk management that is gaining more and more attention is "Opportunity Management", which means the same thing, except that the potential risk outcome will have a positive, rather than a negative impact. Though theoretically handled in the same way, using the term "opportunity" rather than the somewhat negative term "risk" helps to keep a team focussed on possible positive outcomes of any given risk register in their projects, such as spin-off projects, windfalls, and free extra resources.
- Requirements management is the process of identifying, eliciting, documenting, analyzing, tracing, prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders. New or altered computer system[1] Requirements management, which includes Requirements analysis, is an important part of the software engineering process; whereby business analysts or software developers identify the needs or requirements of a client; having identified these requirements they are then in a position to design a solution.
- Change management is the process of identifying, documenting, analyzing, prioritizing and agreeing on changes to scope (project management) and then controlling changes and communicating to relevant stakeholders. Change impact analysis of new or altered scope, which includes Requirements analysis at the change level, is an important part of the software engineering process; whereby business analysts or software developers identify the altered needs or requirements of a client; having identified these requirements they are then in a position to re-design or modify a solution. Theoretically, each change can impact the timeline and budget of a software project, and therefore by definition must include risk-benefit analysis before approval.
- Software configuration management is the process of identifying, and documenting the scope itself, which is the software product underway, including all sub-products and changes and enabling communication of these to relevant stakeholders. In general, the processes employed include version control, naming convention (programming), and software archival agreements.
- Release management is the process of identifying, documenting, prioritizing and agreeing on releases of software and then controlling the release schedule and communicating to relevant stakeholders. Most software projects have access to three software environments to which software can be released; Development, Test, and Production. In very large projects, where distributed teams need to integrate their work before release to users, there will often be more environments for testing, called unit testing, system testing, or integration testing, before release to User acceptance testing (UAT).
- A subset of release management that is gaining more and more attention is Data Management, as obviously the users can only test based on data that they know, and "real" data is only in the software environment called "production". In order to test their work, programmers must therefore also often create "dummy data" or "data stubs". Traditionally, older versions of a production system were once used for this purpose, but as companies rely more and more on outside contributors for software development, company data may not be released to development teams. In complex environments, datasets may be created that are then migrated across test environments according to a test release schedule, much like the overall software release schedule.
Sunday, 24 July 2011 by Shilpesh Madhukar · 0
1.Method(s) best used to study the module - Highlight key points.
2.Suggestion on topics that should be added or dropped from the module - None.
3.Suggestion on any other teaching-and learning technique to be used during lecture and in-
class activities - Draw a flowchart.
4.All the lessons learned -
•To explain what is software construction and why it is important
•To describe good programming principles/practices
•To introduce the concept of ‘defensive programming’.
•To describe software inspection as a static method to discover defects, errors or problems .
•To explain the concepts, benefits and problems of software reuse.
Make sure that your implementation plan includes specific deliverables for each milestone, a clear definition of the scope of each step, and contingency plans that you can put into action should the schedule begin to slip. Remember, your implementation plan must extend beyond the go-live date. As the organization continues to change, the process must evolve with it. Some areas of your implementation plan that need to be carefully thought out (but are not limited to) are:
• Data conversion: Conversion of data from the old software system to the new should begins early in the implementation process. Testing should be performed to ensure accurate data is transferred into the new system’s database. If inaccurate data is converted, the erroneous data may have a negative domino effect throughout the organization.
• Disruption of business: Even the most successful implementations can disrupt a company’s business and lead to a reduction in productivity that can temporarily affect the bottom line. Detailed project plans can also contribute to shorter implementation timeframes.
• Training: Every system user must be fully educated so they understand how the new system will be integrated into the overall company operation. All users must be trained to take full advantage of the system’s capabilities. Failure to educate and train all relevant personnel will guarantee implementation problems.
Software Implementation Best Practice #2: Continuous Monitoring
Monitoring should be integrated into all stages of the implementation project. As the implementation progresses, a careful audit of each milestone will help you ensure that the service provider is providing all of the products and services specified in the contract, and the internal implementation team is performing as it should.
Failure to properly monitor the progress of the implementation can also lead to scope creep (see Best Practice #4)—among other things.
Software Implementation Best Practice #3: Updating your Stakeholders
Your stakeholders have been part of the project since it first got off the ground (all those months ago), so don’t keep them in the dark at the implementation stage. Ensure that your project champions, subject matter experts (SMEs), and service provider work closely together throughout the implementation so that everyone is on the same page. A poorly managed and maintained project is often a factor in implementation failure. Communication is critical for its success. Audit each implementation milestone and provide detailed briefings and progress reports to your stakeholders on a regular basis.
Software Implementation Best Practice #4: Preventing Scope Creep
If scope creep happens, it’s often because we’ve allowed it to. Tasks change, deliverables aren’t met, and before we know it, our go-live timeline is shot to hell. Sometimes, scope creep is inevitable, however; a project plan that provides a focused and well-defined scope, and includes the appropriate resources (both human and budgetary) will help keep your implementation project on track—reducing the risk of creep.
Software Implementation Best Practice #5: Negotiating Additional Products or Services
Remember: The people involved in the original negotiations during a software selection are not the same people assigned to implementing it. Ideally, your goal should be to tie payments to the achievement of milestones in the implementation process, however; be prepared to negotiate the cost of additional products or services as the need arises. While most contracts state the obvious in terms of the license agreement, and ongoing support and maintenance requirements, they often say little about what service levels are to be met in order for the implementation to be considered complete. If you’re uncertain, have the service provider draw up a service level agreement (SLA) or statement of work (SOW) and attach it as an addendum to your contract.
by Shilpesh Madhukar · 0
Monday, 4 July 2011
Software Processes
Software process is a collection of work activities, actions, tasks which have to be performed in order for a software is to be created. A process model is where these activities reside and the definition of their relationship with the process and with one another. The technical work hierarchy – activities encompassing actions, populated by tasks. Each action is defined by a set of task that defines the work, work products, quality assurance filters and milestones that will be used to indicate the project progress.
Process activities involves framework activities and umbrella activities. Framework activities are applicable to all software projects regardless of size and complexity which includes
communication. planning. modeling, construction and deployment. Umbrella activities on the other hand are complementary activities applied throughout a software project and help manage and also control progress, quality, change and risk. This involves project tracking and control, risk management, software quality assurance, technical reviews, configuration management and many more.
Process flow describes how the framework activities are organized with respect to sequence and time. This well defines the basic aspect of software process modeling. The flows consist of linear, iterative, evolutionary and parallel process flows.
Linear flow executes the framework activities in sequence.
Iterative flow repeats one or more of the activities before proceeding to the next activity.
Evolutionary flow executes the activities in a circular manner throughout the project.
Parallel flow executes one or more activities simultaneously with other activities.
Prescriptive process models are an orderly and structured to Software Engineering. It consists of waterfall model, incremental model, evolutionary model and concurrent model.

Waterfall model represents elements of a linear process flow.

Incremental model combines elements of linear and parallel process flows.

Evolutionary model follows the evolutionary process flow that combines elements of linear and iterative process flows. It is also broken down to two specific models which are prototyping and spiral.


Concurrent model combines elements of iterative and parallel process flows.
These are not the only process models available when engineering a software. There are specialized models as well as newer models that are being made as we speak. Software is ever changing and is continuously developed in different ways depending on the team assigned to a project.
The method best used to study this module is understanding instead of memorizing. We should understand the process flows and how to implement them in the process models as these process models basically consists of combinations of process flows.
Numerous topics should be added to this module as newer process models are created but the prescriptive process models are sufficient for us to get an overall understanding of how process models work and should enable us to understand newer and more complex process models.
Drawing out the process models to better understand the flow and stages in designing process models is the best learning technique to apply during lecture and in class activities for this module.
The lesson learnt from this module is that process flows are very important in order to design and develop a software. Also there are readily available models created by others that can be used in our own future projects.
Monday, 4 July 2011 by Talib · 1
Thursday, 9 June 2011
1.Method(s) best used to study the module - Highlight key points.
2.Suggestion on topics that should be added or dropped from the module - None.
3.Suggestion on any other teaching-and learning technique to be used during lecture and in-
class activities - None.
4.All the lessons learned -
•To define SE-related terminologies: ‘software’, ‘software engineering’, etc.
•To explain several software application domain.
•To describe the four Polya’s essence of SE practices.
•To explain the seven Hooker’s SE principles.
•To describe several software myths.
.
What is software ?Software is the general term for information that's recorded onto some kind of medium. For example, when you go to the video store and rent or buy a tape or DVD, what you're really getting is the software that's stored on that tape or disk. Your VCR or DVD player are hardware devices that are capable of reading the software from a tape or disk and projecting it onto your TV screen, in the form of a movie.
Your computer is a hardware device that reads software too. Most of the software on your computer comes in the form of programs. A program consists of "instructions" that tell the computer what to do, how to behave. Just as there are thousands of albums you can buy on CD for your stereo, and thousands of movies you can buy to play on your VCR or DVD player, there are thousands of programs that you can buy to run on your computer.
When you buy a computer, you don't automatically get every program produced by every software company in the world. You usually get some programs. For example, when you buy a computer it will probably have an operating system (like Windows XP) already installed on it.
If you do purchase a specific program, it would be to perform some specific task. For example, you might use a graphics program to touch up photos, or you might use a word processing program to write text. You're using your Web browser program right now to read this text (assuming you're not reading a printed copy on paper). Just as there are umpteen different brands of toothpaste, there are umpteen different brands of word processing programs, graphics programs, and Web browsers.
When you purchase a program, you get the program stored on a CD as in the example shown at left. You may not have seen any boxes containing software when you bought your computer. That's because the software that came with your computer has been pre-installed onto your computer's hard disk for you. You don't need to use the CD to run a program that's already installed on your computer. You only need to keep the CDs as backups, in case something goes wrong with your hard disk and you need to re-install the programs.
The are many software application domain :-
- System software
- Application software
- Engineering/scientific software
- Embedded software
- Product-line software
- Web applications
- AI Software
Thursday, 9 June 2011 by Shilpesh Madhukar · 0
Subscribe to:
Posts (Atom)