Posts

Showing posts from March, 2012

What is Requirement Engineering

Image
What is Requirement? Ans: It may range from a high-level abstract statement of a service or of a system constraint to a detailed mathematical functional specification. Its Begin from Communication and continues into the modelling. What is Requirement Engineering? The process of establishing the services that the customer requires from a system and the constraintunder which it operates and is developed. Requirement reflects the needs of customer for a system that serves a certain purpose such as controlling a device, placing an command or finding information. The process of finding out, analyzing, documenting and checking these services and constrains is called requirement engineering (RE). Bridge to design and construction. Example of Types of Requirement

Testing and Deployment Principles

Testing Principles All tests should be traceable to customer requirements Tests should be planned long before testing begins Testing should begin “in the small” and progress toward testing “in the large” Deployment Principles Customer expectation for the software must be managed A complete delivery package should be assembled and tested A support government must be established before the software is delivered Appropriate instructional materials must be provide to end user Buggy software should be fixed first, delivered later

Coding principles for Software Project

Preparation : Before writing code Understand the problem you’re trying to solve Understand basic design principles and concepts Pick a programming language that meets the need s of the software to be built and the environment in which it will operate Create a set of unit tests that will be applied once the coding is complete for each component Coding: When writing code Constrain your algorithm by following structured programming practice Select the data structure that will meet the needs of design Understand the software architecture and create interfaces that are consistent with it Select meaningful variable name Create visual layout

Modeling Principles for Software Project

Analysis Modelling Principles The information domain of a problem must be represented The functions that the software performs must be defined The behaviour of the software must be represented The models that depict information, function and behaviour must be partitioned is a manner that uncovers detail a layered or hierarchical fashion The analysis task should move from essential information toward implementation detail Design Modelling Principles Design should be traceable to the analysis model Always consider the architecture of the system to be built Design of data is as important as design of processing functions Interface must be designed with care Component level design should be functionally independent Design representation should be easily understandable The design should be developed iteratively. With each iteration, the designer should strive for greater simplicity

Planning Principles for Software Project

Understand the scope of the project Involve the customer in the planning activities Recognize that planning is iterative Estimate based on what you know Consider risk as you define the plan Be realistic Define how you intend to ensure quality Track the plan frequently and make adjustment as required

Software Engineering Practice

Understand the problem ( communication and analysis) Plan a solution (modelling and software design) Carry out the plan (code generation) Examine the result for accuracy (testing and quality assurance) Core principles for Software Engineering : The reason it all exists KISS! (Keep It Simple Stupid) Maintain the vision Be open to the future Plan ahead for reuse Think!

what is communication

Image
Main Business Communication principles Business communication is the communication between the people in the organization for the purpose of carrying out the business activities. A business can flourish when all objectives of the organization are achieved effectively . For efficiency in an organization, all the people of the organization must be able to convey their message properly . The exchange of ideas and understanding within and outside the organization to achieve the business goals is known as business communication. Communication Skills Needed in Business Speaking well Writing well Displaying proper etiquette (manners) Listening attentively The Basic Forms Of Communication Nonverbal communication: Facial Gesture Vocal characteristic Personal appearance Touching behavior Use time and space Verbal Communication: speaking and writing Listening and Reading   Why Business Needs to Communicate? Communication is vital to every part of business. Example for Emp

What is software engineering

1.What is software? Ans:Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. 2.What is software engineering? Ans:Software engineering is an engineering discipline that is concerned with all aspects of software production. 3.What is the difference between software engineering and system engineering? Ans:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this more general process 4.What are the key challenges facing software engineering? Ans:Coping with increasing diversity, demands for reduced delivery times and developing trustworthy software. 5.What are the costs of software engineering? Ans:Roughly 60% of software costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 6.What are the best software engine

The Rational Unified Process Model

Image
Rational Unified Process: The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM since 2003. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs. RUP is a specific implementation of the Unified Process. •Inception The primary objective is to scope the system adequately as a basis for validating initial costing and budgets. In this phase the business case which includes business context, success factors (expected revenue, market recognition, etc.), and financial forecast is established. To complement the business case, a basic use case model, project plan, initial risk assessment and project description (the core project requirements, constraints and key features) are generated. After

Boehm’s Spiral Process Model

Image
Spiral model: The spiral model is a software development process combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. Also known as the spiral life-cycle model (or spiral development), it is a systems development method (SDM) used in information technology (IT). This model of development combines the features of the prototyping and the waterfall model. The spiral model is intended for large, expensive and complicated projects.   History: The spiral model was defined by Barry Boehm in his 1986 article "A Spiral Model of Software Development and Enhancement". This model was not the first model to discuss iterative development. As originally envisioned, the iterations were typically 6 months to 2 years long. Each phase starts with a design goal and ends with the client (who may be internal) reviewing the progress thus far. Analysis and engineering efforts are applied at each phase of the project, wit

Rapid Application Development (RAD)

Image
RAD, or rapid application development, is an object-oriented approach to systems development that includes a method of development as well as software tools •RAD is used when –The team includes programmers and analysts who are experienced with it. –Users are sophisticated and highly engaged with the goals of the company. •Negative Aspect - RAD is based on Object Oriented approach. - If commitment is lacking RAD will fail. - RAD is not appropriate when technical risks are high, e.g. this occurs when a new application makes heavy use of new technology. You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Waterfall Process Model 9. Software Process Framework Activity

The Prototyping Process Model

Image
•Gather requirements •Quick design focusing on what will be visible to user – input & output formats •Process iterated until customer & developer satisfied – then throw away prototype and rebuild system to high quality. - Insufficient analysis. - Excessive development time of the prototype. - High expectations for productivity with insufficient effort. You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Waterfall Process Model 9. Software Process Framework Activity

The Incremental Process Model

Image
•Main characteristics –Hybrid model that combines elements of the waterfall and evolutionary paradigms. –The specification, design, and implementation phases are broken in smaller increments. •Advantages –Provides better support for process iteration. –Reduces rework in the software construction process. –Allows early delivery of parts of the system. –Supports easier integration of sub-systems. –Lower risk of project failure. –Delivery priorities can be more easily set. •Disadvantages –Mapping requirements to increments may not be easy. –Common software facilities may be difficult to identify. –Some decisions on requirements may be delayed. •Applicability: –When it is possible to deliver the system “part-by-part” . You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Water

Component Based Software Engineering

Image
•Main characteristics –Makes intensive use of existing reusable components. –The focus is on integrating the components rather than on creating them from the scratch. •Advantages –Reduces considerably the software to be developed “in-house”. –Allows faster delivery. –In principle, more reliable systems, due to using previously tested components. •Disadvantages –agreement in requirements are needed. –Less control over the system’s evolution •Applicability: –When there is a pool of existing components that could satisfy the requirements of the new product. –Emerging trend: integration of web services from a range of suppliers. You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Waterfall Process Model 9. Software Process Framework Activity

The Evolutionary Process Development Model

Image
•Main characteristics –Feedback from the user is used throughout the entire process. –The software product is refined through many versions •Advantages –Deals constantly with changes. –Provides quickly an initial version of the system. –Involves all development teams •Disadvantages: –Quick fixes may be involved –“Invisible” process, not well-supported by documentation. –The system’s structure can be corrupted by continuous change. •Disadvantages [cont’d] –Special tools and techniques may be necessary –The client may have the impression the first version is very close to the final product and thus be less patient. •Applicability –When requirements are not well understood. –Good for small and medium-sized software systems. You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Water

The Waterfall Process Model

Image
•Main characteristics: –Also called classic software life cycle or sequential model –Process activities (phases/stages) are clearly separated •Advantages –Organized approach, provides robust separation of phases. –Reflects common engineering practice. •Disadvantages: – Doesn't cope well with changes required by the client. –Development teams might wait for each other. –A working version of the product is available only late. •Applicability: –When requirements are well known and few changes are likely to be needed. –Can be used also for parts of larger software systems. You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Waterfall Process Model 9. Software Process Framework Activity

what is Software process descriptions

•When we describe and discuss processes, we usually talk about the activities in these processes such as specifying a data model, designing a user interface, etc. and the ordering of these activities. •Process descriptions may also include: –Products , which are the outcomes of a process activity; –Roles , which reflect the responsibilities of the people involved in the process; –Pre- and post-conditions , which are statements that are true before and after a process activity has been enacted or a product produced.

Software Process Models

•A structured set of activities required to develop a software system. •Many different software processes but all involve: –Specification – defining what the system should do; –Design and implementation – defining the organization of the system and implementing the system; –Validation – checking that it does what the customer wants; –Evolution – changing the system in response to changing customer needs.

Software Process Framework Activity

Image
You can also view: 1. Boehms Spiral Process Model 2. Rational Unified Process Model 3. Rapid Application Development-RAD 4. Prototyping Process Model 5. Incremental Process Model 6. Component Based Software Engineering 7. Evolutionary Process Development Model 8. Waterfall Process Model 9. Software Process Framework Activity

Layered Technology of Software Engineering

Image
•For establish the sound engineering principles we have to ensure the layers of S/W engineering: Quality Focus At first ensure the professional quality Process Enable timely delivery through framework and work products(models, docs, report etc.) Ensure technical method Ensure the model and change is properly managed Method Define “how to” ’s and define broad array of tusks Include communication, analysis, designing, program construction, testing and support. Tools Provide support for the process and method.

Software engineering Ethics Issues of Professional Responsibility

•Confidentiality –Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. •Competence –Engineers should not misrepresent their level of competence. They should not knowingly accept work which is out with their competence. •Intellectual property rights –Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected. •Computer misuse –Software engineers should not use their technical skills to misuse other people’s computers. Computer misuse ranges from relatively trivial (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses).

what is Software engineering Ethics

Like other engineering disciplines,  Software engineering  is carried out within a social and legal framework that limits the freedom of people working in that area. As a software engineer , you must accept that your job involves wider responsibilities than simply the application of technical skills. You must also behave in an ethical and morally responsible way if you are to be respected as a professional engineer.  It goes without saying that you should uphold normal standards of honesty and integrity. You should not use your skills and abilities to behave in a dishonest way or in a way that will bring disrepute to the software engineering profession. However, there are areas where standards of acceptable behavior are not bound by laws but by the more tenuous notion of professional responsibility. Some of these are: 1. Confidentiality You should normally respect the confidentiality of your employers or clients irrespective of whether or not a formal confidentiality agreement has be

Key points

• Software engineering is an engineering discipline that is concerned with all aspects of software production. •Essential software product attributes are maintainability, dependability and security, efficiency and acceptability. •The high-level activities of specification, development, validation and evolution are part of all software processes. •The fundamental notions of software engineering are universally applicable to all types of system development. •There are many different types of system and each requires appropriate software engineering tools and techniques for their development. •The fundamental ideas of software engineering are applicable to all types of software system.

Web software engineering

•Software reuse is the dominant approach for constructing web-based systems. –When building these systems, you think about how you can assemble them from pre-existing software components and systems. •Web-based systems should be developed and delivered incrementally. –It is now generally recognized that it is impractical to specify all the requirements for such systems in advance. •User interfaces are constrained by the capabilities of web browsers. –Technologies such as AJAX allow rich interfaces to be created within a web browser but are still difficult to use. Web forms with local scripting are more commonly used.

what is cloud computing

Image
cloud computing:Cloud computing is a technology that uses the internet and central remote servers to maintain data and applications. Cloud computing allows consumers and businesses to use applications without installation and access their personal files at any computer with internet access. This technology allows for much more efficient computing by centralizing storage, memory, processing and bandwidth. A simple example of cloud computing is Yahoo email, Gmail, or Hotmail etc. You dont need a software or a server to use them. All a consumer would need is just an internet connection and you can start sending emails. The server and email management software is all on the cloud ( internet) and is totally managed by the cloud service provider Yahoo , Google etc. The consumer gets to use the software alone and enjoy the benefits.

web engineering

•The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems. •Web engineering allow application functionality to be accessed over the web. • Cloud computing is an approach to the provision of computer services where applications run remotely on the ‘cloud’. Instead of installing a suite of software for each computer, you'd only have to load one application. That application would allow workers to log into a Web-based service which hosts all the programs the user would need for his or her job. Remote machines owned by another company would run everything from e-mail to word processing to complex data analysis programs. It's called cloud computing. –Users do not buy software, pay according to use.

what is the fundamental principles for software engineering

•Some fundamental principles apply to all types of software system, irrespective of the development techniques used: –Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. –Dependability and performance are important for all types of system. –Understanding and managing the software specification and requirements (what the software should do) are important. –Where appropriate, you should reuse software that has already been developed rather than write new software.

Application types

•Stand-alone applications –These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network. •Interactive transaction-based applications –Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e-commerce applications. •Embedded control systems –These are software control systems that control and manage hardware devices.Numerically, there are probably more embedded systems than any other type of system. •Batch processing systems –These are business systems that are designed to process data in large batches. They process large numbers of individual inputs to create corresponding outputs. •Entertainment systems –These are systems that are primarily for personal use and which are intended to entertain the user. •Systems for modelling and simulation –These are systems that are developed by scientists and engi

Software engineering diversity

•There are many different types of software system and there is no universal set of software techniques that is applicable to all of these. •The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team.

General issues that affect most software

•Heterogeneity –Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. •Business and social change –Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. •Security and trust –As software is intertwined with all aspects of our lives, it is essential that we can trust that software.
i am running my new blog at Knowledge Sharing (https://ksharing.info). please subscribe my new blog