Thursday, 28 July 2011

Task 3 Job Description




Summary : We found that skills are highly focused so that it surpassed the qualifications to apply for the position. Besides the salary offered also are reasonable. There are many  job opportunities that you can find, but you must qualified their requirements first to get the job.

Thursday, 28 July 2011 by CSEB 233 · 0

Module 4 : Software Engineering

Basically Chapter 4 explains design creates the representation or model of the software. Different than the analysis model , design model provides details such as software architecture , data structures , interfaces and components that are necessary to implement the system. Thus it is important because model design can assessed for quality and improvement before code , test and more users gets involved.

Apart from that , a good characterictis of a design must be :-

  • implementation of all the expilcit requirements contained in the analysis model and it must accomodate all the implicit requirements desired by the customer
  • must be readable , understandable guide for those who generate code and for those who test and subsequently support the software
  • must provide a complete picture of the software , addressing the data , functional and behavioral domains from an implementation perspective
And design principles must include :-
  • should not suffer from 'tunnel vision'
  • should be traceable to the analysis model
  • should not reinvent the wheel
  • should minimize the intellectual distance between software and problem
  • should exhibit uniformly and integration
  • should be structure to accomodate changes
  • should be structure to degrade gently
  • design is not a coding ,coding is not design
  • design should be assessed for quality as it is being created
  • should be reviewed to minimize conceptual (semantic) errors
In model design , design concepts should cover :-
  1. Abstraction that is divided into Procedural abstraction and Data abstractions
  2. Architecture that basically describe the overall structure of the software
  3. Patterns
  4. Separations of concerns , its a rule of thumb to define how modules should be separated
  5. Modularity , to divide into components
  6. Information hiding
  7. Functional Independence
  8. Refinement
  9. Aspects
  10. Refactoring
  11. OO Design concepts
  12. Design classes

by jiahuilim · 0

# Module 8

Question 1 :
Method (s) best used to study the module.
There are several ways to study this module and there a ton of technique that can be apply to remember all the facts and keywords in chapter 1 such as :

  • Mind map
This technique are the most popular to the student and all practitioner around the world. Mind map is proven effective by many successfull people in the world and has helped many in their daily such as work , studies and etc.

Second, we can also practise the use of questionnaire. By using the principle of 5W question
  • what
  • where
  • who
  • why
  • when
  • how
Question 2 :
Suggestion on topic that should be added or dropped from the module
Added
  • no topic should be added
Drop
  • There is no information to drop as each slides has equal importance to be remember in exam.
Question 3:
Suggestion on any other teaching and learning to be used in lecture and in class activity
There are several suggestion on how to make the class more interesting :
  • Group Discussion
By carrying out group discussion , each student will understand the subtopic in this chapter such as the characteristic of hookers and polya principles in Software Engineering process. Group work can be formed through this way and bond can also be created.
Question 4:
To summarize Chapter 8, this chapter mainly about on how software evolve when the project is been held.

by jiahuilim · 0

Tuesday, 26 July 2011

Task 4 Part 3 - Practitioner’s Myths

Practitioner’s myths:

Myths that are still believed by software practitioners have been fostered by over 50 years of programming culture. During the early days of software, programming was viewed as an art form. Old ways and attitudes die hard.

  • Myth: Once we write the program and get it to work, our job is done.
  • Reality: Someone once said that the sooner you begin writing code, the longer it’ll take you to get done. Industry data indicate that between 60 and 80 percent of all effort expended on software will be expended after it is delivered to the customer for the first time.

Disscussion : If we were to start writing the codes before proper design and planning, the project would take longer to complete. This is because the programmers are building codes blindly. Having only a rough idea of how it is supposed to work and in the end, in order to amend these mistakes, much more time would be taken.


  • Myth: Until i get the program running. I have no way of assessing its quality.
  • Reality: One of the most effective software quality assurance mechanisms can be applied from the inception of a project – the formal technical review. Software reviews are a “quality filter” that have been found to be more effective than testing for finding certain classes of software errors.

Disscussion : Quality assessment can be done throughout project development from the moment the project is accepted by having software reviews. By reviewing software, whole software can be tested for its functionality and quality in one go.

  • Myth: The only deliverable work product for a successful project is the working program.
  • Reality: A working program is only one part of a software configuration that includes many elements. Documentation provides a foundation for successful engineering and a more importantly, guidance for software support.

Disscussion : When creating software, each stage of development should be documented and should be delivered to the client to provide assurance of project development as well as to give them an idea of how the project is going so far. Apart from that, each aspect of the software is documented in order to provide detailed description of how the software works.


Discussion done by : Talib, Lim Jia Hui, Gary Jordan, Shilpesh.

Tuesday, 26 July 2011 by Gary · 0

Task 4 Part 2 - Customer Myths

Customer myths:

A customer who requests computer software may be a person at the next desk, a technical group down the hall, the marketing/sales department or an outside company that has requested software under contract. In many cases the customer believes myths about software because software managers and practitioners do little to correct misinformation. Myths lead to false expectations and, ultimately, dissatisfaction with the developer.

  • Myth: A general statement of objectives is sufficient to begin writing programs – we can fill in the details later.
  • Reality: Although a comprehensive and stable statement of requirement is not always possible, an ambiguous statement of objectives is a recipe for disaster. Unambiguous requirements are developed only through effective and continuous communication between customer and developer.

Disscussion : Requirements determine the desired outcome of a project because in the developer have to satisfy customer demands and as people say 'the customer is always right'. In the case of software engineering, the developer must meed customer demands and make necessary changes to comply with the customer's requirement. Continuous communication helps make this happen.


  • Myth: Project requirements continually change, but change can be easily accommodated because software is flexible.
  • Reality: It is true that software requirement change, but the impact of change varies with the time at which it is introduced. When requirement change are requested early, cost impact is relatively small. However, as time passes cost impact grows rapidly – resources have been committed a design framework has been established, and change can cause upheaval that requires additional resources and major design modification.

Disscussion : When a project is started, design and planning is done in order to reach a goal which is to meet the client's requirements. When these requirements change, the goal is changed as well and several unnecessary changes have to be made to the software down to the programming level and this would waste costs such as resources and time.

Discussion done by : Talib, Lim Jia Hui, Gary Jordan, Shilpesh.

by Gary · 0

Task 4 Part 1- Management Myths

Software Myths :

Beliefs about software and the process used to build it – can be traced to the earliest days of computing. Myths have a number of attributes that have made them insidious.

Management myths :
Managers with software responsibility, like managers in most disciplines, are often under pressure to maintain budgets. Keep schedules from slipping, and improve quality.

  • Myth : We already have a book that’s full of standards and procedures for building software. Won’t that provide with everything they need to know?

  • Reality: The book of standards may very well exist, but is it used? Are software practitioners aware of its existence? Does it reflect modern software engineering practice? Is it adaptable? Is it streamlined to improve time to deliver while still maintaining a focus on quality? In many cases. The answer to all of these questions is no.

  • Disscussion :Software engineering is an ever changing field that is always up to date with new technologies and resources. The book that we have is sufficient to get us started but further research is required in order to find the best and most up-to-date way of engineering a software.

  • Myth : If we get behind schedule, we can add more programmers and catch up

  • Reality : Brooks said “Adding people to a late software project makes it later.” As new people are added, people who were working must spend time educating the newcomers, thereby reducing the amount of time spent on productive development. People can be added but only in a planned and well-coordinated manner.
  • Disscussion : More people means more minds at work in order to develop a software. The fact that these new people have not been around since the beginning of the project means that they are practically only seeing it for the first time and need to be brought to the same page as the developing team's current progress. This takes a lot of time and is not affordable at a late software project.

  • Myth : If I decide to outsource the software project to a third party. I can just relax and let that firm build it.

  • Reality : In an organization does not understand how to manage and control software projects internally, it will invariably struggle when it outsources software projects.

  • Disscussion : When an organization outsources a project, they need to know exactly what they want from it as in the product of the software. The requirements gathered at the beginning of a project might change as software is developed and we also have to consider the fact that the developing firm makes a mistake in software development that conflicts with the desired outcome of the client.
Discussion done by : Talib, Lim Jia Hui, Gary Jordan, Shilpesh.

by Gary · 0

Module 10

Advanced Topics in Software Engineering
Software Process Improvement (SPI) Implies that elements of an effective software process can be defined in an effective manner, an existing organizational approach to software development can be assessed against those elements, and a meaningful strategy for improvement can be defined. SPI strategy transforms the existing approach to software development into something that is more focused, more repeatable, and more reliable.
SPI framework is a formal approach to SPI which assesses the “maturity” of an organization’s software process and provides a qualitative indication of a maturity level. It defines a set of characteristics that must be present if an effective software process is to be achieved, a method for assessing whether those characteristics are present, a mechanism for summarizing the results of any assessment, and a strategy for assisting a software organization in implementing those process characteristics that have been found to be weak or missing.
A maturity model is applied within the context of an SPI framework.The intent of the maturity model is to provide an overall indication of the “process maturity” exhibited by a software organization.

SPI Frameworks
  • CMMI - a five-level maturity model developed by Software Engineering Institute (SEI) of Carnegie Mello University (CMU) and has two respresentations ; continuous and staged models
  • SPICE - an international initiative to support the International Standard ISO/IEC 15504 for (Software) Process Assessment [ISO08]
  • Bootstrap—a SPI framework for small and medium sized organizations that conforms to SPICE [Boo06]
  • PSP and TSP—individual and team specific SPI frameworks ([Hum97], [Hum00]) that focus on process in-the-small, a more rigorous approach to software development coupled with measurement
  • TickIT—an auditing method [Tic05] that assesses an organization compliance to ISO Standard 9001:2000
Regardless of the size of the company, it’s reasonable to consider the business motivation for SPI. It should come as no surprise that small organizations are more informal, apply fewer standard practices, and tend to be self-organizing.

Trends in SE
  • Managing complexity
  • Open world software
  • Emergent requirements
  • Software building blocks
  • Open source
  • Process trends
Software Engineering Ethics

An ACM/IEEE-CS Joint Task Force has produced a Software Engineering Code of Ethics and Professional Practices (Version 5.1). The code [ACM98] states that software engineers shall commit themselves to making the analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the following Eight Principles :
  • Public
  • Client and Employer
  • Product
  • Judgment
  • Management
  • Profession
  • Colleagues
  • Self

by Talib · 1

Module 6

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.

by Talib · 0

Sunday, 24 July 2011

Module 9

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

Module 5

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.


Software Implementation Best Practice #1: Proper Planning
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

Module 2


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

Module 1

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.
For example, all graphics programs are designed to help you work with pictures. But there are many brands of graphics programs out there, including Adobe Photoshop, Jasc Paint Shop Pro. Adobe Illustrator, Arcsoft PhotoStudio, Corel Draw, ULead PhotoImpact, PrintShop Photo, and Macromedia Freehand, just to name a few. As to Web browsers, popular brands include Microsoft Internet Explorer, MSN Explorer, Netscape Navigator, America Online, and a few others.
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

2011 All Rights Reserved UNITENIANS | Blog Template Design by Gary Jordan
Sponsored by UNITENIAN 2011