1. (1) When designing the software according to the requirements, make sure that the software is designed to meet all requirements? Or can you add your own rules to block out the rules that are not met at design time?
(2) What kind of team development model is more efficient?
(3) As a qualified PM required several competencies, according to the degree of importance of the ranking is what?
(4) How to weigh the relationship between development costs and benefits?
(5) If the written software can not satisfy the user, there are several ways to deal with it?
(6) What are the pros and cons of extreme programming?
2. How do the words "Software" and "engineering" appear-when, where, and by whom?
Software: The first person to write software is Ada (Augustaadalovelace), in the 1860 's he tried for Babbage (Charles
Babbage) Mechanical computer-written software. In spite of the failure, he will always be in the annals of computer development. In the 1950 century, software was born with the advent of the first computer. People who write software as a profession also begin to appear, many of whom are trained mathematicians and electronic engineers.
Software Engineering: From the 1960 's to 1970, the complexity of the requirements, the difficulty of maintenance, the development cost is surprisingly high, the development technology of developers do not adapt to large-scale, complex structure of software development, more and more failed projects. Since the 1970 's, for the Software engineering era, is an engineering mode of production. The historical lessons of the IBM360 operating system have become a typical example of software development projects that have been recorded in Annals. Due to the emergence of software crisis, people have to study, change the technical means and management methods of software development. From this software production into the engineering age. The term "software Crisis" (Softwarecrisis) was first proposed by the 1968 NATO computer scientist at the International Academic Conference held in the Federal Republic of Germany. At the same time, discuss and make out the "software crisis" countermeasures. For the first time in that meeting, software engineering was proposed.
3. Code version management software
(1) VSS
VSS uses the standard Windows operating interface, and as long as it is familiar with Microsoft's products, it can get started quickly. The installation and configuration of VSS is straightforward, and no external training is required for the product (it can save the company a hefty fee). As long as you refer to Microsoft's complete random document, you can quickly use the actual project. The configuration management features of VSS are relatively basic, providing version tracking capabilities for files, and for the management of build and baselines, the ability to tag VSS can provide support. VSS provides the ability to share (share), Branch (branch), and merge (merge) to support team development. VSS does not provide management functions for the process, such as controlling the flow of changes. VSS does not provide support for offsite team development. In addition, VSS can only run on Windows platforms and cannot run on other operating systems. VSS security is not high, for users of VSS, can be set on the folder unreadable, readable, readable/writable, full control of level four permissions. However, because the VSS folder is to be fully shared to the user before the user can enter, the user to the VSS folder can be deleted. This is also a relatively large drawback of VSS. VSS does not use a charge for the license, as long as VSS is installed, there is no limit to the number of users.
(2) Git
Git is a free, open source distributed version control system for agile and efficient processing of any or small or large project. Git is an open source distributed version control system for efficient, high-speed processing of project versioning from very small to very large.
Advantages: Suitable for distributed development, emphasizing individual. Public server pressure and data volumes are not too large. Fast and flexible. Conflicts can easily be resolved between any two developers. Work offline. Cons: Less data (at least Chinese information is scarce). The learning cycle is relatively long. does not conform to conventional thinking. Code confidentiality is poor, and once the developer has cloned the entire library, all code and version information can be fully exposed.
(3) Mercurial
Mercurial is a lightweight distributed version control system, implemented in Python language, easy to learn and use, and strong extensibility. It is an open source project based on the GNU general public License (GPL) license.
Compared to the traditional version control, it has the following advantages: easier management. Traditional version control systems use centralized repository, and some repository-related management can only be done by the administrator alone. Due to the use of distributed models, there is no such trouble in Mercurial, each user to manage their own repository, administrators only need to coordinate synchronization of these repository. A more robust system. The distributed system is more robust than a centralized single-server system, and a single-server system cannot run once the server has problems, and distributed systems are usually not affected by one or two of nodes. The dependency on the network is lower. Since synchronization can be done at any time, Mercurial can even be managed offline, only when there is a network connection. (4) Bitbucketbitbucket is a source-code hosting site that uses mercurial and git as a distributed version control system with both business plans and free accounts. Features: Unlimited number of private warehouses, unrestricted disk space, support https/ssh;bug tracking, project WIKI;API Support, flexible permission control, customizable domain name, RSS change record output, custom download
Personal Assignment 1